WO2024208886A1 - Method and device for source selection in peer-assisted network coded streaming - Google Patents
Method and device for source selection in peer-assisted network coded streaming Download PDFInfo
- Publication number
- WO2024208886A1 WO2024208886A1 PCT/EP2024/059041 EP2024059041W WO2024208886A1 WO 2024208886 A1 WO2024208886 A1 WO 2024208886A1 EP 2024059041 W EP2024059041 W EP 2024059041W WO 2024208886 A1 WO2024208886 A1 WO 2024208886A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- content
- source
- goodput
- sources
- type
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/80—Responding to QoS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/61—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
- H04L65/613—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for the control of the source by the destination
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/75—Media network packet handling
- H04L65/752—Media network packet handling adapting media to network capabilities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/2343—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
- H04N21/23439—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements for generating different versions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/24—Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
- H04N21/2402—Monitoring of the downstream path of the transmission network, e.g. bandwidth available
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/2885—Hierarchically arranged intermediate devices, e.g. for hierarchical caching
Definitions
- the present invention relates to a method and system for downloading content from multiple content sources.
- content streaming (e.g., over the internet) is one of the most popular methods for delivering content to a user.
- Content streaming is very convenient, and playback of streamed content can be achieved on many types of devices including stationary playback devices (such as smart TVs or Hi-Fi systems) and portable playback devices (such as smartphones, laptops, tablets, AR/VR wearables, or automotive infotainment systems).
- stationary playback devices such as smart TVs or Hi-Fi systems
- portable playback devices such as smartphones, laptops, tablets, AR/VR wearables, or automotive infotainment systems.
- the multimedia content can for example be in the form of video and/or audio content stored on one or more servers that are accessible by a user device (often referred to as a client or client device) by using a media player that connects to the one or more servers over a network and requests the desired multimedia content.
- the one or more servers receives the requests and in response transmits the requested multimedia content to the client which performs playback of the multimedia content.
- the multimedia content is stored on the one or more servers and can be transmitted to the client in a segmented form meaning that the client does not need to receive a whole multimedia file (e.g., a full music audio track or a full movie) before playback can start, and it is able to play the content in a segment by segment fashion at the same time as when the content is being downloaded.
- a whole multimedia file e.g., a full music audio track or a full movie
- PoPs Points of Presence
- the PoP could be one or more dedicated multimedia content streaming servers that form a Content Delivery Network (CDN), wherein a CDN typically offers high capacity and reliable PoPs located centrally in the network.
- CDN Content Delivery Network
- the PoP could also be a streaming device that is located closer to the edge of the network (compared to the CDNs that are located deeper in the network), e.g., the PoP could be a peer or an edge cache.
- the PoPs closer to the edge of the network typically offer less reliability (e.g., when they are peers) compared to PoPs in CDNs but the PoPs closer to the edge of the network could be more abundant or cheaper to operate.
- a drawback with the existing solutions is that, when many clients access the same content at the same time (e.g., massive streaming scenarios), throughput bottlenecks appear upstream in the network closer to the more central PoPs. For example, a throughput bottleneck may appear due to large workload imposed on the one or more CDN servers.
- BGP Boarder Gateway Protocol
- AS Autonomous Systems
- the BGP is constructed around the concept of the shortest path, which e.g., means that the BGP cannot route around congestion that may appear (e.g., in massive streaming scenarios). This means that if a specific source is used for delivery of the content, it can be affected by a network bottleneck even if there are multiple network paths available for a connection between the specific source and a client.
- data at the PoPs is stored as so-called network coded symbols by means of so-called block network code (e.g., network coded data may be received at a PoP, or non-network coded data may be generated via an encoding process performed at the PoP).
- a block of data can be decoded on the client if enough of linearly independent symbols are delivered from the sources. Therefore, one does not need to schedule delivery of specific byte ranges from specific sources, but rather make sure that a sufficient number of (innovative symbols, i.e., linearly independent) network coded symbols is delivered from the respective sources.
- a drawback of the multisource delivery is due to the fact that it can generate a significant amount of in-flight data.
- the amount of in-flight data upon a content request is proportional to a product of network bandwidth and the network delay.
- the amount of in-flight data is proportional to the product of the number of sources and the single path in-flight data.
- Significant amounts of in-flight data imply a waste of bandwidth.
- Such surplus data sent from the PoPs is generally undesired, especially if the PoPs are located within CDNs. Therefore, an efficient strategy of using the multiple sources is needed.
- a method for downloading content from multiple sources over a network comprising the steps of downloading network encoded content from each source in an initial source set, the initial source set comprising at least one source of a first type, wherein the network encoded content being coded with a network code.
- the method further comprises determining a goodput rate of the network encoded content being downloaded from the initial source set, comparing the goodput rate to a goodput threshold and, if the goodput rate is below a goodput threshold, forming an updated source set by adding a source of a second type to the initial source set, wherein the second type source is a different source type than the first source type . Additionally, the method comprises continuing downloading the network encoded content from each source in the updated source set.
- the present invention is at least based on the observation that content can be downloaded from different types of sources, a first type and a second type, whereby content is requested from the second type of source in response to the initial source set comprising one or more the first type sources not being able to maintain a goodput exceeding the goodput threshold.
- the initial source set comprises only first type sources. It is also envisaged that the initial source set comprises both first and second type sources.
- the first type source is an edge source, such as a peer or an edge-cache
- the second type of source is a central source, such as a source belonging to a Content Delivery Network CDN.
- the throughput available at PoPs located at the edge of the network is typically much higher compared to the throughput available upstream in the network, especially for modern access technologies (e.g., FTTX).
- FTTX modern access technologies
- the central network source is only used when necessary, which minimizes the load on the central network source. That is, the method is adaptive and adapts to changing streaming conditions. In other words, the present invention attempts to identify a set of sources to be used with a goal to reduce the amount of content that is requested from CDNs.
- the second type source is an edge source, such as a peer or an edge-cache
- the first type of source is a central source, such as a source belonging to a Content Delivery Network CDN.
- content is downloaded from central sources mainly wherein, in response to the one or more central sources not being able to sustain a goodput exceeding the goodput threshold, an edge source is further used to download content.
- first type sources will be assumed to be edge sources, such as peer sources or edge cache sources
- second type sources will be assumed to be central sources, such as sources being part of a CDN unless otherwise is specified.
- a first type source could also denote a central source and a second type source could denote an edge source.
- an adaptive bitrate (ABR) streaming approach is often used, where a single item of content is typically available in multiple bitrate versions.
- a client selects an appropriate bitrate version, which is suitable for the throughput observed on that client.
- a set of multiple bitrate versions is often referred to as a bitrate ladder.
- Such a bitrate ladder comprises at least a low bitrate version associated with the low Quality of Experience (QoE) and a high bitrate version associated with the high QoE.
- QoE Quality of Experience
- a content player operating on the client includes an ABR policy that, for example, attempts to maximize the QoE while minimalizing the probability of not receiving a segment in time, which would lead to an interruption of the playout and a rebuffering event.
- the term QoE or QoE level is associated with a capability of successfully delivering a bitrate version associated with that QoE. Therefore, a reduction of QoE would mean that an ABR policy in a client observes a reduced throughput, thus it decides to request a version of the content associated with a lower bitrate. Conversely, preserving a QoE means that the ABR policy continues to request segments of the content associated with the bitrate providing this particular QoE.
- the proposed invention assumes a generic ABR policy built into a content player on the client, and it focuses on generating sustainable throughput.
- the invention attempts to reduce the utilization of the central PoPs by using PoPs at the edge of the network. This is achieved by either refraining from requesting content from central PoPs until absolutely necessary to maintain the QoE or by requesting content from additional edge PoPs, instead of additional central PoPs, when a set of central PoPs struggle to maintain the QoE.
- PoPs at the edge of the network can be unreliable (e.g., if such a PoP is a peer, which can go offline at any time). Thus, there is a risk that usage of edge located PoPs would adversely affect the QoE on the client.
- the proposed invention comprises methods that reevaluate the composition of a set of sources to make sure that the event of not being able to decode a segment happens with very low probability.
- the invention uses the property of coded delivery and the fact that centrally located PoPs (such as PoPs forming a part of a CDN) are generally reliable.
- a sustainable QoE level may refer to a state of a content player, where it is capable to play out in time the content encoded at the bitrate associated with this QoE. In other words, the delivery of the content at the specific bitrate required by this QoE is sustainable, and all the segments can be delivered before the player has to play them out.
- a non-sustainable QoE level may refer to the situation where the content player needs to request segments at a lower bitrate to facilitate in-time playout of the segments. In other words, the player needs to reduce the QoE level to achieve a new sustainable QoE level for the currently observed throughput.
- the term QoE is also used synonymously (if there is no ambiguity).
- the “cost” (in terms of risking degraded streaming performance for other users, upkeep, equipment required to be maintained by a streaming provider) between using the central network sources and the edge network sources is asymmetrical.
- the egress bandwidth generated from CDNs typically incurs an operational cost for streaming service providers.
- the cost of having a client download content from an edge source is zero or negligible. Therefore, reduction of the utilization of CDNs during content download can be provided by PoPs at the edge of the network which can e.g. reduce the egress bandwidth of the CDNs and/or reduce the total number requests directed to the CDNs.
- central sources are expected to be highly reliable, as they are expected to be always available in the network, while edge sources might have a limited lifetime, e.g., they might not be present in the network at all times.
- central sources typically facilitate storage of all content while this may not always be possible for edge sources (e.g., a peer operating within an internet browser would have constrained storage capacity).
- the decreased reliability of the edge source could be expected to negatively affect the QoE when these sources are used meaning that there could be a trade-off between the cost and, for instance, the average QoE when balancing the usage of central sources and edge sources.
- the source selection achieves reduction in the level of utilization of the central sources while quality of the download, such as the QoE is with a high probability maintained.
- the method maximizes central source utilization without impacting the QoE. For instance, this allows fewer, less capable and/or more cost efficient central sources to be used without negatively impacting the QoE, even in massive streaming scenarios.
- obtaining a goodput threshold comprises obtaining a current QoE level associated with the content and determining the goodput threshold based on the goodput rate required to sustain the current QoE level.
- the method prioritizes download from first type sources (edge sources) and the method comprises initiating downloading from second type sources (a central or edge source) when there is a risk that QoE is degraded if download from the first type sources continues without support from a second type source.
- second type sources a central or edge source
- the method results in a reduction in the utilization level of the second type sources.
- the method comprises intercepting a content request from a content player and obtaining the QoE level based on the content request from the content player. Accordingly, the method can operate with any type of content.
- a computer device comprising processor configured to perform the method according to the first aspect.
- the computer device is used as source selection proxy that selects sources, requests content from the selected sources on behalf of a content player and delivers the content to the content player once it has been received.
- Figure l is a block-diagram showing schematically a client comprising a content player and a source selection proxy communicating with sources of different types according to some implementations.
- Figure 2 is a flow-chart describing a method for selecting sources from which content is to be requested, according to some implementations.
- Figure 3 is a block-diagram showing details of a source selection proxy according to some implementations.
- Figure 4 is a flow-chart describing how the decision of whether or not to initialize content download from second type sources is made, according to some implementations.
- Figure 5 is a graph illustrating an example of how the utilization of a second type source is reduced (e.g. in terms of number of content requests) with the method for source selection according to some implementations.
- Figure 6 is a flow-chart describing an alternative version of how the decision of whether or not to initialize content download from second type sources is made, according to some implementations.
- Systems and methods disclosed in the present application may be implemented as software, firmware, hardware or a combination thereof.
- the division of tasks does not necessarily correspond to the division into physical units; to the contrary, one physical component may have multiple functionalities, and one task may be carried out by several physical components in cooperation.
- the computer hardware may for example be a server computer, a client computer, a personal computer (PC), a tablet PC, a set-top box (STB), a personal digital assistant (PDA), a cellular telephone, a smartphone, an AR/VR wearable, automotive infotainment system, a web appliance, a network router, switch or bridge, or any machine capable of executing instructions (sequential or otherwise) that specify actions to be taken by that computer hardware.
- PC personal computer
- PDA personal digital assistant
- a cellular telephone a smartphone
- AR/VR wearable automotive infotainment system
- web appliance a web appliance
- network router switch or bridge
- processors that accept computer-readable (also called machine-readable) code containing a set of instructions that when executed by one or more of the processors carry out at least one of the methods described herein.
- Any processor capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken are included.
- a typical processing system e.g., computer hardware
- Each processor may include one or more of a CPU, a graphics processing unit, and a programmable DSP unit.
- the processing system further may include a memory subsystem including a hard drive, SSD, RAM and/or ROM.
- a bus subsystem may be included for communicating between the components.
- the software may reside in the memory subsystem and/or within the processor during execution thereof by the computer system.
- the one or more processors may operate as a standalone device or may be connected, e.g., networked to other processor(s).
- a network may be built on various different network protocols, and may be the Internet, a Wide Area Network (WAN), a Local Area Network (LAN), or any combination thereof.
- WAN Wide Area Network
- LAN Local Area Network
- the software may be distributed on computer readable media, which may comprise computer storage media (or non-transitory media) and communication media (or transitory media).
- computer storage media includes both volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data.
- Computer storage media includes, but is not limited to, physical (non-transitory) storage media in various forms, such as EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by a computer.
- communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media.
- Fig. 1 is a block-diagram depicting a client 30 streaming content from multiple available sources 11, 12, 13, 21, 22, 23 (PoPs).
- the available sources comprise first type sources 11, 12, 13 forming a first type source set 10 and second type sources 21, 22, 23 forming a second type source set 20.
- Each source 11, 12, 13, 21, 22, 23 is configured to transmit encoded content to a client 30 in response to receiving a content request from the client 30.
- the content may be provided to each source 11, 12, 13, 21, 22, 23, from an upstream source without network coding whereby the source 11, 12, 13, 21, 22, 23 performs the encoding of the content with network code.
- the content is provided to each source 11, 12, 13, 21, 22, 23 already encoded with network code from elsewhere, e.g. a central upstream server.
- the content (with or without network coding) is temporarily stored by each source 11, 12, 13, 21, 22, 23 or forwarded to a client 30 requesting the content.
- the client 30 comprises a content player 37 configured to render and playback media content provided to it.
- the content player 37 may comprise a buffer for temporarily storing content prior to playback.
- the content player 37 may be any type of content player, such as a media player.
- the content player 37 is an adaptive bitrate (ABR) content player 37 configured to request content of different bitrates based on an ABR policy and a content bitrate ladder (also referred to as a content manifest).
- ABR adaptive bitrate
- the content bitrate ladder indicates a set of different versions of the media content that the ABR content player 37 can request.
- the bitrate ladder may also indicate a download metric (such as an average goodput rate required to sustain the associated version) associated with each content version.
- the content bitrate ladder is obtained by the ABR content player 37 from a server 40 and/or from one of the available PoPs, indicating to the ABR content player 37 which versions that are available.
- the ABR content player 37 is configured, based on its ABR policy and properties of the streaming process, to request one of the versions of the content indicated in the content bitrate ladder. For example, the ABR content player 37 requests the version with the highest QoE (e.g., highest video and/or audio quality) which the ABR policy deems can be sustained based on the properties of the streaming process.
- QoE e.g., highest video and/or audio quality
- the ABR policy may be buffer-based wherein the ABR content player 37 determines a streaming process property being the amount (e.g., the duration) of content stored in the content player’s 37 buffer and determines a content version to be requested based on the amount of the content in the buffer. For example, if there is much content in the buffer the ABR content player 37 will request a higher quality version of the content and if there is less content in the buffer (e.g., risking that playback becomes interrupted as the buffer becomes emptied) the ABR content player 37 will request a lower quality version.
- a streaming process property being the amount (e.g., the duration) of content stored in the content player’s 37 buffer and determines a content version to be requested based on the amount of the content in the buffer. For example, if there is much content in the buffer the ABR content player 37 will request a higher quality version of the content and if there is less content in the buffer (e.g., risking that playback becomes interrupted as the buffer becomes emptied) the
- the ABR policy may be throughput- or goodput-based wherein the ABR content player 37 determines a streaming process property being goodput rate or throughput rate and determines a content version to be requested based on the determined goodput rate or throughput rate. For example, if the goodput rate or throughput rate is high the ABR content player 37 will request a higher quality version of the content and if the goodput rate or throughput rate is low the ABR content player 37 will request a lower quality version.
- the ABR content player 37 measures the variance of the streaming process property and makes the version selection further based on the variance. For example, a large variance may result in the ABR policy opting for a lower quality version compared to if the variance is smaller.
- the ABR content player 37 is configured to reevaluate the version selection repeatedly, such as once for each segment that is downloaded.
- the different versions of the content indicated in the content bitrate ladder offer different QoE to a user.
- the different quality versions may differ in at least one of resolution (SD, HD or UHD), encoding format (H.264 or H.265), compression, frame size, color depth etc. for video content and differ in at least one of sampling rate, bits per sample, compression, number of channels etc. for audio content.
- a content version at the top of the content bitrate ladder offers content playback that is perceived as higher quality but is also associated with higher requirements imposed on the reliability and throughput of the connections to the PoPs.
- the ABR content player 37 strives to obtain as high quality version of the content as possible without the playback being interrupted in order to offer the highest possible QoE to the user.
- the content player 37 is a non-ABR content player 37 and always requests the same version of the content.
- the content player 37 is configured to send a content request to a source selection proxy 31 in the client 30.
- the source selection proxy 31 is configured to select, from an available set of PoPs, to which PoPs the request of the content player 37 shall be transmitted. That is, the source selection proxy 31 is configured to determine which PoPs that are to be used for downloading the media content version requested by the content player 37.
- the PoPs may also be referred to as sources 11, 12, 13, 21, 22, 23 and the available set of sources 11, 12, 13, 21, 22, 23 comprises two subsets, a first type source set 10 comprising available first type sources 11, 12, 13 and a second type source set 20 comprising available second type sources 21, 22, 23.
- the first type source set 10 may comprise sources 11, 12, 13 closer to the edge of the network, e.g., peers or edge cache
- the second type source set 20 may comprise sources 21, 22, 23 that are more centrally located in the network with respect to the first type source set 10, e.g., PoPs within a Content Delivery Network (CDN). That is, the second type source may be sources belonging to a CDN and the first type source may be non-CDN sources, such as a peer or an edge cache.
- the source selection proxy 31 is configured to select which source(s) 11, 12, 13, 21, 22, 23 should be used for downloading content such that the utilization of the second type sources 21, 22, 23 is minimized while maintaining a QoE level that is requested by the content player 37.
- the source selection proxy 31 may be configured to select which sources to request content from according to first decision scheme.
- the first decision scheme being configured to prioritize use of edge sources 11, 12, 13 when downloading content unless the resulting QoE will be affected negatively, only then can the source selection proxy 31 request content from one or more central sources 21, 22, 23 of the second type source set 20.
- the source selection proxy 31 is configured to select which sources 11, 12, 13, 21, 22, 23 to request content from according to a second decision scheme.
- the second decision scheme being configured to download content from one or more central sources and if the goodput falls below the goodput threshold the source selection proxy 31 request content from one or more edge source. That is, it may be desirable to keep downloading content from a set central sources until the goodput falls below the goodput threshold, then the source selection proxy 31 is configured to first attempt to increase the goodput by requesting content from an edge source instead of from an additional central source.
- the source selection proxy 31 may be configured to select sources 11, 12, 13, 21, 22, 23 from which content should be requested according to other decision schemes.
- An example of a third decision scheme is when the source selection proxy 31, to maintain the QoE, may be configured to request content from an additional edge source 11, 12, 13 (first type source) while downloading content from a set of sources comprising one or more edge sources 11, 12, 13 or only edge sources 11, 12, 13. If a goodput that is below the goodput threshold is detected, the source selection proxy 31 may be configured to request content from an additional edge source 11, 12, 13 in an attempt to maintain a goodput sufficient to maintain the QoE.
- the source selection proxy 31 may be configured to make a predetermined number of attempts by introducing additional edge sources 11, 12, 13 before resorting to the above mentioned strategy of requesting content from a central source 21, 22, 23.
- An example of a fourth decision scheme is that the source selection proxy 31, to maintain the QoE, may be configured to request content from an additional central source 21, 22, 23 (second type source) while downloading content from a set of sources comprising one or more central sources 21, 22, 23 or only central sources 21, 22, 23.
- initiation of content download from an additional central source 21, 22, 23 is deliberately avoided unless necessary for sustaining the QoE and/or a goodput exceeding the goodput threshold.
- content is requested from an additional central source 21, 22, 23 even if one or more central sources 21, 22, 23 is already used for downloading content.
- the source selection proxy 31 may be configured to request content from an additional central source 21, 22, 23.
- the source selection 31 proxy may be configured to apply one or more decision schemes and/or be configured to adaptively switch between decision schemes. For instance, if only central sources 21, 22, 23 are available, the source selection proxy 31 employs the fourth decision scheme and if only edge sources 11, 12, 13 are available the source selection proxy employs the third decision scheme. If both central sources 21, 22, 23 and edge sources 11, 12, 13 the source selection proxy may employ any one of the first through fourth decision schemes.
- the fourth decision scheme is utilized relying mainly on central sources 21, 22, 23.
- the method starts shedding central sources 21, 22, 23 and replacing them with one or more edge sources 11, 12, 13.
- the method may then utilize decision scheme one and request content mainly or only from edge sources 11, 12, 13 whereby one or more central sources 21, 22, 23 are utilized only when necessary for maintaining the QoE.
- the source selection proxy 31 facilitates usage of any generic content player 37, meaning that the content player 37 as such does not need to be adapted for the multisource delivery.
- the source selection proxy 31 performs the source selection algorithm that will be explained in further detail in the below, and requests content from the one or more sources 11, 12, 13, 21, 22, 23 it selects on behalf of the content player 37.
- the source selection algorithm performed by the source selection proxy 31 is separate from the version or QoE selection that may be performed by the content player 37.
- the source selection proxy 31 will allocate content requests between the selected sources 11, 12, 13, 21, 22, 23 with a flow controller implementing a flow control policy that is explained in further detail in the below.
- the flow control policy is also separate from the source selection algorithm performed by the source selection proxy 31 and the version or QoE selection performed by the content player 37.
- the source selection proxy 31 receives the content it requests on behalf of the content player 37 from the selected sources 11, 12, 13, 21, 22, 23, decodes it with a network decoder, and then provides the decoded content over to the content player 37.
- the content is encoded with network code (e.g., the encoding is performed by the sources 11, 12, 13, 21, 22, 23) prior to being transmitted to the client 30.
- the content is divided into a plurality of subsequent segments, wherein each segment is encoded with network code prior to being transmitted to the client 30.
- the network coding enables each segment to be split into a plurality of symbols which can be transmitted independently from each other. For example, some symbols of a particular segment may be received from a first source 11 whereas some symbols are received from a different second source 12. The symbols are collected by the client 30 and decoded to generate the content segment.
- the encoding of the content may be performed by the sources 11, 12, 13, 21, 22, 23 or the encoding of the content is performed elsewhere (e.g. in an upstream server communicating with the sources 11, 12, 13, 21, 22, 23) with the sources 11, 12, 13, 21, 22, 23 receiving and storing the content prior to transmitting it to clients 30 upon request.
- the central sources of the second type source set 20 are highly reliable sources (compared to those of the edge sources of the first type source set 10) and it is assumed that any second type source 21, 22, 23 contains all the content (e.g., all the segments) the content player 37 requests. Additionally, a second type source 21, 22, 23 (which e.g. is a dedicated server of a CDN) is essentially always available and constantly ready to receive content requests and transmit content to the client 30 in response.
- the sources of the first type source set 10 are in general less reliable meaning for example that the content requested from a certain first type source 11 may only be partially available at the certain first type source 11 (for example due to storage constraints in the first type source 11) or not available at all meaning that the content may be requested again, from another source.
- a first type source 11, 12, 13 is also less reliable than a second type source 21, 22, 23 in terms of being at all available/online for receiving requests, and while a member of the second type source set 20 is typically accessible at essentially all times a member of the first type source set 10 may be available irregularly and/or intermittently.
- a peer is an example of a first type source 11, 12, 13 and a peer may e.g. only be available while some other user is streaming content, meaning that the peer can become unavailable suddenly and unexpectedly if the other user aborts the streaming process.
- network code is a so-called fountain code allowing content to be requested from multiple sources 11, 12, 13, 21, 22, 23 without depending on receiving any specific packet from a specific source 11, 12, 13, 21, 22, 23. Therefore, it is expected that the more linearly independent sources 11, 12, 13, 21, 22, 23 that are utilized, the higher the probability of downloading the required data even if some of the sources 11, 12, 13, 21, 22, 23 are unreliable. On the other hand, simply downloading from more sources will lead to increased congestion in the network which is why the source selection proxy 31 is made adaptive to be able to deal with a situation where some of the sources are not reliable (e.g., do not have the exact content that is requested) without increasing the number of sources.
- the source selection proxy 31 intercepts the request from the content player 37.
- the request comprises a content version identifier (e.g., a requested QoE level) and may indicate a goodput required to sustain the requested content version.
- a content version identifier e.g., a requested QoE level
- the source selection proxy 31 determines if there are any available first type sources in the first type source set 10.
- the first source type may be edge sources or central sources.
- any first type source is assumed to be an edge source and any second type source is assumed to be a central source, but the same method is also performed when any first type source is a central source, and any second type source is an edge source.
- the source selection proxy 31 receives a list of available sources 11, 12, 13, 21, 22, 23 and the type of each available source.
- the list of available sources may be updated repeatedly, e.g., as first or second type sources become available or unavailable. That is, the first type source set 10 and second type source set 20 may be updated repeatedly.
- the source selection proxy 31 may at step S2 have access to information indicating the expected performance (e.g., in terms of latency and/or bandwidth) of the available sources
- the source selection proxy 31 can make an informed decision and select one or more sources from the first type source set 10 that are expected to be able to sustain the QoE indicated by the content player’ s 37 request that was intercepted at step S 1.
- the source selection proxy 31 may be configured to prioritize selecting first type sources 11, 12, 13 so as to reduce load on the second type sources 21, 22, 23.
- the source selection proxy 31 may be configured to first try to meet the goodput required to sustain the QoE with one or more source from the first type source set 10 and, if this is not possible, it resorts to using a second type source(s) 21, 22, 23 as well or instead of one or more first type sources 11, 12, 13.
- step S8 the method proceeds to step S8 and starts downloading content from one or more sources selected from the second type source set 20 instead of, or in addition to, one or more first type sources 11,
- the content may be divided into consecutive encoded segments, whereby one or more segments of the content is downloaded before download of one or more subsequent segments is initiated.
- the source selection proxy 31 may check whether one or more first type sources 11, 12, 13 were used in downloading a previous segment and use the same first type sources 11, 12, 13 again, for a subsequent segment. [0065] If no first type sources 11, 12, 13 are available, the source selection proxy 31 will request the content on behalf of the content player 37 using second type sources 21, 22, 23 and initialize content download from at least one second type source 21, 22, 23 at step S8.
- the content transmitted by the selected sources 11, 12, 13, 21, 22, 23 and received by the client 30 is encoded with network code.
- the sources 11, 12, 13, 21, 22, 23 which has encoded the content with network code or the sources 11, 12, 13, 21, 22, 23 store content that has been encoded with network code elsewhere.
- the content received by the client may be encoded with a first encoding layer that the media player is capable of ingesting (e.g., MPEG-3 coding for audio or H.265 coding for video) wherein the first encoding layer is encapsulated in a second encoding layer being a network code.
- the network code may be linear code, such as random linear code, RaptorQ code, Reed-Solomon code, Luby Transform code or the like.
- the network code may be implemented as a block code or as a convolutional code.
- the content is divided into a plurality of consecutive segments, with each segment representing a (potentially partially overlapping) time portion of the content.
- Each segment is then encoded with a network code into a set of symbols that can be transmitted independently of each other and reassembled at the client to form the encoded segment.
- the client 30 can obtain a segment of content in a format that is ingestible by the content player 30.
- video streaming is considered wherein a portion of the video (e.g., 2 seconds) forms a segment and is encoded with network code to form N symbols.
- the symbols are transmitted to the client 30 from one or more sources (PoPs) 11, 12, 13, 21, 22, 23 and when the client 30 has a sufficient number of symbols it decodes the symbols to obtain the portion of video that can be played by the content player 37.
- the source selection proxy 31 will wait at step S9 for a sufficient number of symbols to be received so that decoding of the segment can be completed. After the segment has been decoded, the source selection proxy 31 provides the decoded content to the content player 37 at step S10 wherein the decoded content is stored in the buffer of the content player 37 or played-back immediately.
- step S2 involving the source selection proxy 31 determining whether there are any available first type source(s) 11, 12, 13. If it is determined that there are available first type sources 11, 12, 13 the method goes to step S3 and the source selection proxy 31 will selected one or more first type sources 11, 12, 13 and initialize downloading content from one or more first type sources 11, 12, 13. In some implementations, the source selection proxy 31 will, provided there are available first type sources 11, 12, 13, initialize downloading only from first type sources 11, 12, 13. In other words, if there is at least one first type source 11, 12, 13 the source selection proxy 31 may refrain from downloading from any member of the second type source set 20 unless this is initiated later in step S6 (as will be described in the below). This will alleviate the second type sources 21, 22, 23 as the source selection proxy 31 prioritizes download from first type sources 11, 12, 13. The selected first type sources 11, 12, 13 are referred to as an initial set of sources and may, as indicated in the above, contain first type sources only.
- the source selection proxy 31 determines a goodput rate of the content downloaded from one or more first type sources 11, 12, 13.
- the goodput rate may be the aggregated goodput of all (first type) sources used to download content.
- the goodput is the goodput measured at the output of the network decoder.
- the goodput at this location, downstream of the network decoder, is also the goodput which will affect the selection of the ABR policy in the content player 37.
- the method involves step S4 of waiting a predetermined time T1 until the goodput rate first is measured to allow downloading process from the selected first type sources 11, 12, 13 to ramp up, which may provide a more accurate measurement of the goodput rate.
- step S6 the goodput rate is compared to a goodput threshold.
- the goodput threshold may be based on the version (QoE) requested by the content player 37 which the source selection proxy 31 can obtain by intercepting the requests from the content player 37.
- the version or QoE may indicate, or be associated with, a goodput rate required to sustain the version or QoE selected by the content player 37, this goodput rate is then used as the goodput threshold such that the source selection proxy 31 can select sources that reduces the utilization of the central sources while maintaining a goodput exceeding the goodput threshold.
- the version or QoE requested by the content player 37 may change over time, meaning that also the goodput threshold, based on the requested version or QoE, may also change over time.
- a target QoE is defined and available to the source selection.
- the target QoE is the highest available QoE.
- the source selection proxy 31 may be configured to always include one or more second type sources 21, 22, 23 as long as the QoE currently requested by the content player 37 is a lower QoE with respect to the target QoE. [0076] If the measured goodput rate exceeds the goodput threshold this may be an indication that the selected first type sources 11, 12, 13 are capable of sustaining a download rate sufficient to sustain the QoE. Accordingly, the source selection proxy 31 will continue to download the content from the selected one or more first type sources 11, 12, 13.
- the source selection proxy 31 checks if sufficient content has been downloaded to start decoding. If this is the case, the method goes to step S10, decodes the content and provides the decoded content to the content player 37 for playback. If the content that has been downloaded is not sufficient to start decoding at step S7, the method goes to back to step S5 and measures the goodput again at S5.
- the source selection proxy 31 waits at S 11 for a duration of T2 prior to again determining the goodput rate at step S5. That is, the goodput rate is measured and compared to the goodput threshold repeatedly at intervals of T2 during download to determine if a second type source 21, 22, 23 should be used.
- the goodput is determined substantially continuously or instead of repeatedly/substantially continuously measuring the goodput the goodput is measured once per segment, and the method goes to step S9 if the evaluation of step S7 is negative, and awaits the decoding to complete.
- the source selection proxy 31 will repeat steps S5, S6, S7 and Si l as long as the first type sources 11, 12, 13 can sustain a download goodput rate exceeding the goodput threshold until the segment has been received and can be decoded, whereby the process is repeated for the next segment.
- step S6 If it is determined at step S6 that the measured goodput rate is below the goodput threshold, there is a risk that the current QoE cannot be sustained with the current selection of first type sources 11, 12, 13.
- the method then goes to step S8 and starts downloading from at least one second type source 21, 22, 23 in addition to, or instead of, downloading from the selected first type sources 11, 12, 13. That is, the source selection proxy 31 forms an updated source set comprising at least one second type source 21, 22, 23 and optionally, one or more first type sources 11, 12, 13.
- Fig. 3 is a block diagram showing the details of a source selection proxy 31 according to some implementations. As seen, the source selection proxy 31 operates between the content player 37 and the sources of the first type source set 10 and the second type source set 20.
- the source selection proxy 31 comprises an interception unit 36 which intercepts content requests from the content player 37.
- the content request indicates a version or a QoE of the content that is requested by the content player 37 and this request is passed to a source selection algorithm 33 that determines whether sources of the first type source set 10, second type source set 20, or both sets should be used when downloading the requested content.
- the content is divided into consecutive segments that are encoded with network code. Each network code encoded segment is further divided into symbols that are transmitted from the sources 11, 21 to the source selection proxy 31. The symbols are obtained and temporarily stored in the network decoder 35 of the source selection proxy 31.
- the network decoder 35 When a sufficient number of symbols of a segment has been received, the network decoder 35 will be able to decode the segment and provide decoded content of the segment to the content player 37 (optionally via the interceptor 36).
- the sufficient number of symbols required for starting the decoding process may be equal to all symbols of the segment or a subset of the symbols. For example, there exist network coding techniques that allow the decoding to start when only a subset of the symbols have been received, whereby the decoding is completed after all symbols have been received.
- Information pertaining to the operation of the decoder 35, the rate at which symbols are received by the decoder 35 or the rate at which decoded content is outputted by the decoder 35 will be passed to a bandwidth estimator 34.
- the bandwidth estimator 34 obtains an indication of the rate at which the network decoder 35 receives symbols from each of the respective sources and a size of each symbol, allowing the bandwidth estimator 34 to estimate a throughput rate for the source selection proxy 31.
- the network decoder 35 obtains X symbols of N kB in size per second from a first source and Y symbols per second of a N kB size from a second source allowing the bandwidth estimator to estimate the throughput as (X+Y)N kB per second.
- a bandwidth estimator 34 obtains from the network encoder 35 an indication of an amount of overhead in the network encoded data (e.g., a percentage, ratio or estimated number of bytes per second) whereby the bandwidth estimator 34 can determine the goodput rate based on the amount of overhead and the throughput rate. For example, if the throughput rate is Z kB per second, and the overhead is 20%, the goodput can be estimated as (1 - 0.2)Z kB per second.
- the bandwidth estimator 34 determines the rate at which decoded content is output by the network decoder 35, this rate is equal to the goodput, allowing the goodput rate to be measured directly. [0086] In some implementations, the network decoder 35, interceptor 36 and/or content player 37 will also determine other parameters related to the download process and transmit these to the source selection algorithm 33.
- the network decoder 35 conveys information to the source selection algorithm 33 indicating how much (e.g., a ratio or a number of symbols) of an encoded segment that has been received and/or the content player 37 conveys information to the source selection algorithm 33 indicating how much (decoded) content that is stored in the content player’s 37 buffer (e.g., measured in amount of data, playback duration or a fullness level of the buffer).
- the source selection algorithm 33 also receives the requested content version or QoE from the interceptor 36, which has extracted this information from the content player’s 37 requests.
- the source selection algorithm 33 obtains the requested version or QoE and at least one of a throughput rate, goodput rate, and other parameter(s), such as a buffer fullness level, related to the download. Based on this information, the source selection algorithm 33 performs the process described in fig. 2 above and determines whether or not a second type source 21 should be utilized.
- step S6 relates to comparing the goodput rate with a goodput threshold to determine whether second type sources are to be used for the download.
- step S6 will further comprise considering a buffer threshold and a buffer fullness level obtained from the content player 37.
- the buffer fullness level indicates an amount or duration of buffered content available to the content player 37.
- the buffer fullness level indicates the amount or duration of (decoded) playback-ready content stored in the content player’s 37 buffer.
- the amount of content stored in the content player’s 37 buffer may be a slight underestimation of the amount of content available to the content player 37. For instance, if it is likely that an encoded segment that is currently being downloaded and/or decoded by the network decoder 35 will be fully downloaded and/or decoded prior to the content in the media player’s 37 buffer being consumed, the amount of content associated with this encoded segment may be included in the buffer fullness level as well, in addition to the decoded content stored in the content player’s 37 buffer.
- the weighting factor is one if it is likely that the segment will be fully downloaded and decoded prior to the content in the buffer being consumed and zero if it is likely that the segment will not be fully downloaded and decoded prior to the content in the buffer being consumed.
- it is possible to get a finer granularity estimation of the amount of available content by determining a likelihood of A% that the segment will be fully downloaded and decoded prior to the content in the buffer being consumed, whereby the weighting factor is set to the likelihood A%.
- the buffer fullness level may be the actual amount of content stored in the content player’s 37 buffer, or the amount of available content which includes the amount of content stored in the content player’s 37 buffer as well as at least a portion of the content associated with a segment being currently downloaded to the network decoder 35.
- the source selection algorithm obtains this buffer fullness level (e.g., the amount of content in the buffer or a measure of the available content considering the amount of content in the buffer and the download/decoding progress of the network decoder 35) and compares it to a buffer threshold. If the buffer fullness level exceeds the buffer threshold, the method goes to step S62 comprising comparing the goodput rate to a first goodput threshold. If the goodput rate exceeds the first goodput threshold the method goes to step S7 and continues in accordance with the flowchart of fig. 2. If the goodput rate is determined at step S62 to be below the first goodput threshold the method instead goes to step S8 and continues in accordance with the flowchart of fig.
- this buffer fullness level e.g., the amount of content in the buffer or a measure of the available content considering the amount of content in the buffer and the download/decoding progress of the network decoder 35.
- step S61 determines whether the buffer level is below the buffer threshold. If it is determined at step S61 that the buffer level is below the buffer threshold the method instead goes to step S63 comprising comparing the goodput rate to a second goodput threshold. If the goodput rate exceeds the second goodput threshold the method goes to step S7 and continues in accordance with the flowchart of fig. 2. If the goodput rate is determined at step S63 to be below the second goodput threshold the method instead goes to step S8 and continues in accordance with the flowchart of fig. 2 by initiating downloading content from at least one second type source.
- the first goodput threshold is lower with respect to the second goodput threshold. Effectively, this results in a dynamic control of the goodput threshold based on the buffer fullness level. In this way, the source selection algorithm 33 is made more tolerant of lower goodput rates if there is much content available to the content player 37 (e.g., a high buffer fullness level). This effectively avoids downloading from second type sources 21 due to a temporary drop in throughput/goodput from the first type source(s) 11 in situations where sufficient content is available to the content player 37 to continue playback without risking decreased QoE or interruptions.
- the buffer threshold may be 10 seconds of content
- the first goodput threshold is 5 Mb/s
- the second goodput threshold is 8 Mb/s.
- the source selection algorithm 33 will then repeatedly evaluate step S6 and check whether more than 10 seconds of content is available to the media player 37. As long as this criterion is fulfilled, no additional second type source 21 will be used for download even if the goodput temporarily drops to 6 or even 5.1 Mb/s.
- the buffer fullness level will decrease and when the buffer fullness level indicates that less than 10 seconds of content is stored in the buffer the source selection algorithm 33 will initiate downloading from a second type source 21 as soon as the goodput is below the second goodput threshold of 8 Mb/s.
- first and second goodput threshold and the buffer threshold are merely exemplary and that other values could be assigned depending on e.g. the type of content being streamed (e.g., audio or video or both) and the type of network connection the client uses (e.g., wired, wireless or mobile network).
- the buffer threshold should be sufficiently high to allow the download from a second type source(s) 21 to ramp up before the buffered content is consumed.
- the first goodput threshold may be lower than the average goodput required to sustain the current QoE which has the benefit of tolerating low goodput rates without downloading from a second type source(s) 21 (provided sufficient amount of content is available in the content player’s 37 buffer).
- the second goodput threshold may be higher than the average goodput rate required to sustain a current QoE, since the second goodput threshold sets a lower bound for the goodput rate used when the buffer fullness level has passed a critical limit meaning that it is desirable to both increase the amount of buffered content while also continuing the playback of the content.
- another method for avoiding premature download form a second type source(s) 21 is averaging the measured goodput rate and/or buffer level used by the source selection algorithm 33 over time.
- the goodput rate and/or buffer level can be averaged over the duration of each segment or over the time interval T2 between subsequent measurements, meaning that temporary fluctuations in the goodput or buffer level sustained by a first type source(s) 11 will be tolerated.
- the sources 11, 21 selected by the source selection algorithm 33 are provided to a flow controller 32 which then transmits the requests to the selected sources 11, 21.
- the flow controller 32 is configured to request data from the sources 11, 21 designated by the source selection algorithm 33 in way that decreases or minimizes the amount of in-flight data.
- a method that may be used for achieving this type request allocation between the designated sources 11, 21 is explained in further detail in “DOWNLOAD CONTROL IN MULTI-SERVER COMMUNICATION SYSTEM”, published with International Publication number WO/2020/180988 on September 10, 2020, hereby incorporated by reference in its entirety.
- the flow controller 32 may be configured to send initial download requests to the sources 11, 21, receive data associated with these initial download requests and update information regarding quality (e.g., bandwidth and latency) of the communication links over which the requested data is transmitted. Based on the updated quality information of the communication links, the flow controller 32 will then determine how to send the subsequent requests. In other words, while the source selection algorithm 33 determines which sources 11, 21 that are to be used and when, the flow controller 32 will ensure that the sources selected by the source selection algorithm 33 are utilized efficiently. For instance, while data is requested from all sources designated by the source selection algorithm 33 the flow controller 32 controls how much data is to be requested from each source. For example, a source associated with lower latency and higher bandwidth will receive more requests compared to another source associated with higher latency and lower bandwidth.
- quality e.g., bandwidth and latency
- the source selection proxy 31 may be configured to use different transport methods for sources of the two different types belonging to the respective. For example, WebRTC data channels or QUIC may be used for downloading from the first type sources 11 (being e.g. peers) and HTTP or QUIC may be used downloading content from the second type sources 21 (being e.g. PoPs belonging to a CDN).
- WebRTC data channels or QUIC may be used for downloading from the first type sources 11 (being e.g. peers) and HTTP or QUIC may be used downloading content from the second type sources 21 (being e.g. PoPs belonging to a CDN).
- Fig. 5 is a graph showing an example of how the utilization level of central sources is achieved with the method and source selection proxy described in the above.
- the horizontal axis denotes time since the downloading of content started and the vertical axis denotes the goodput rate, amount of buffered or available content (e.g., the buffer level or buffer fullness) or the QoE for the lines 51, 52, 53, 54, 55, 56.
- Line 51 indicates the QoE for the content being downloaded and played back.
- the QoE is stable at the same level throughout the download process.
- the QoE is stable at the highest possible QoE.
- Line 52 indicates the buffer level or amount of (decoded) content available to the content player. At the start of the download at ti there is no content available to the content player however when the download continues the buffer level increases and at time t3 the buffer level has stabilized at a certain amount or duration of content.
- Line 53 indicates the goodput received from a second type source (e.g., a CDN). As seen, line 53 is discontinuous and not present between times t2 and t3. This is the result of the source selection algorithm determining at t2 that the goodput offered by first type sources (indicated with lines 55 and 56) exceeds the goodput threshold and the second type source is not necessary. From t2 to t3 the source selection algorithm only uses first type source(s) and the buffer level (line 52) continues to increase while the QoE (line 51) is stable. At time t3, the goodput offered by the first type sources has dropped dramatically and the source selection algorithm detects this as the measured goodput rate is below the goodput threshold.
- a second type source e.g., a CDN
- the source selection algorithm adds a second type source to the list of sources from which the content should be downloaded and from time t3 to t4 data is downloaded from the second type source (line 53) in addition to a small amount of data being downloaded from the first type sources (lines 55 and 56).
- Line 54 indicates the total aggregated goodput achieved with the first type sources and the second type sources at each point in time.
- Line 54 indicates goodput just as lines 53, 55, and 56 but is plotted at a different scale.
- the total aggregated goodput remains stable throughout the download between ti and t4 despite only first type sources being used between t2 and t3 and a second type source being mainly used between t3 and t4. Accordingly, the source selection method achieves efficient utilization reduction of for central sources without a trade-off in QoE or total goodput.
- Fig. 6 is a flow chart describing a simplified method for comparing the goodput threshold to the goodput rate for determining whether an additional second type source should be used for downloading content. Steps SI, S2, S3, S8, S9 and S 10 are analogous to the corresponding steps from fig. 2.
- the first source type may be edge sources or central sources. In the below any first type source is assumed to be an edge source and any second type source is assumed to be a central source, but the same method is also performed when any first type source is a central source, and any second type source is an edge source.
- the method of fig instead of determining a goodput rate and a goodput threshold explicitly, the method of fig.
- step S6 involves implicit determination of whether the goodput rate exceeds the goodput threshold. If it is determined at step S2 that first type sources are available, the downloading of a network encoded segment of content from the first type source(s) is initiated at step S3. The method then goes to step S41 involving waiting a predetermined time T3 prior to going to step S7 involving checking whether the decoding of the segment has been completed or not. If the decoding has been completed after T3 time since downloading started, the method goes to step S10 involving providing the decoded content to the content player. On the other hand, if the decoding of the segment has not been completed at step S7 the method goes to step S8 and starts downloading from at least one additional second type source.
- a goodput rate is determined indirectly by checking whether T3 time was sufficient to allow the segment to be downloaded and decoded.
- a new segment should be decoded and provided to the content player every 160 ms and if the method determines at step S7 that this is not the case, the method starts downloading content from an additional second type source at step S8.
- EEEs Enumerated Example Embodiments
- a method for downloading content from multiple sources over a network comprising: downloading network encoded content from each source in an initial source set, the initial source set comprising at least one source of a first type in the network and the network encoded content being coded with a network code; determining a goodput rate of the network encoded content being downloaded from the initial source set; comparing the goodput rate to a goodput threshold; if the goodput rate is below a goodput threshold: forming an updated source set by adding a source of a second type to the initial source set, wherein the second source type is different than the first source type; and continuing downloading the network encoded content from each source in the updated source set.
- EEE2 The method according to EEE1, wherein if the goodput rate is above the goodput threshold, the method comprises: continuing downloading the network encoded content from each source in the initial source set.
- EEE3 The method according to any one of the preceding EEEs, wherein the second source type comprises peer sources or edge-cache sources, and the first source type comprises sources belonging to a Content Delivery Network, CDN.
- EEE4 The method according to EEE1 or EEE2, wherein the first source type comprises peer sources or edge-cache sources, and the second source type comprises sources belonging to a Content Delivery Network, CDN.
- downloading network encoded content comprises downloading a current network encoded segment of a plurality of consecutive network encoded segments.
- EEE6 The method according to EEE5, further comprising: downloading a first portion of the current network encoded segment with the initial source set; downloading a remaining portion of the current network encoded segment with the updated source set; and initializing downloading of a subsequent, with respect to the current segment, network encoded segment with the initial source set.
- EEE7 The method according to EEE5 or EEE6, further comprising determining the goodput rate by measuring the goodput rate at multiple points in time while downloading the current network encoded segment.
- EEE8 The method according to EEE7, wherein the goodput rate is averaged over the multiple measurements of the goodput rate.
- EEE9 The method according to any one of the preceding EEEs, further comprising: determining a set of accessible first type sources; determining the initial source set by selecting at least one first type source in the set of accessible first type sources; determining a set of accessible second type sources; wherein adding the second type source to the initial source set to form the updated source set comprises selecting a second type source from the set of accessible second type sources.
- EEE 10 The method according to EEE9, further comprising repeatedly updating the set of accessible first type sources and the set of accessible second type sources.
- obtaining a goodput threshold comprises: obtaining a current Quality of Experience, QoE, level associated with the content; and determining the goodput threshold based on the goodput rate required to sustain the current QoE level.
- EEE 12 The method according to EEE11, further comprising: intercepting a content request from a content player; and obtaining the QoE level based on the content request from the content player.
- EEE13 The method according to EEE11 or EEE 12, further comprising: obtaining a target QoE level; comparing the current QoE level with the target QoE level; if the current QoE level indicates a lower QoE compared to the target QoE: forming the updated source set by adding at least one second type source to the initial source set; and downloading network encoded content from each source in the updated source set.
- EEE14 The method according to any one of the preceding EEEs, wherein the initial source set comprises at least two first type sources.
- EEE15 The method according to any one of the preceding EEEs, wherein the initial source set comprises only sources of the first source type.
- EEE 16 The method according to any one of the preceding EEEs, further comprising: decoding the network encoded content to obtain decoded content; and providing the decoded content into a buffer, associated with a media player.
- EEE 17 The method according to any one of the preceding EEEs, further comprising: obtaining a buffer fullness level, indicating the amount of buffered content stored in the buffer of a content player; if the buffer fullness level exceeds a buffer threshold, setting the goodput threshold to a first goodput threshold; else, setting the goodput threshold to a second goodput threshold; wherein the second goodput threshold is higher compared to the first goodput threshold.
- EEE18 A computer program product comprising instructions which, when the program is executed by a computer, causes the computer to carry out the method according to any one of EEE1 to EEE17.
- EEE19 A computer-readable storage medium storing the computer program according to EEE18.
- EEE20 A computer device comprising a processor configured to carry out the method according to any of EEE 1 to EEE 17.
- a source selection proxy comprising a computer device according to EEE20, wherein the source selection proxy is configured to download content requested by a content player.
- a streaming client device comprising the source selection proxy according to EEE21, and a content player.
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Information Transfer Between Computers (AREA)
Abstract
Description
Claims
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US202363494074P | 2023-04-04 | 2023-04-04 | |
| US63/494,074 | 2023-04-04 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2024208886A1 true WO2024208886A1 (en) | 2024-10-10 |
Family
ID=90718350
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/EP2024/059041 Pending WO2024208886A1 (en) | 2023-04-04 | 2024-04-03 | Method and device for source selection in peer-assisted network coded streaming |
Country Status (1)
| Country | Link |
|---|---|
| WO (1) | WO2024208886A1 (en) |
Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20130308699A1 (en) * | 2012-05-18 | 2013-11-21 | Home Box Office, Inc. | Audio-visual content delivery |
| CN102523072B (en) * | 2011-12-20 | 2014-02-19 | 清华大学 | LT Code Coding and Decoding Method with Error Detection and Correction Function |
| US20140143431A1 (en) * | 2012-11-21 | 2014-05-22 | Netflix, Inc. | Multi-cdn digital content streaming |
| US20200275171A1 (en) * | 2017-07-28 | 2020-08-27 | Dolby Laboratories Licensing Corporation | Method and system for providing media content to a client |
| WO2020180988A1 (en) | 2019-03-06 | 2020-09-10 | Dolby Laboratories Licensing Corporation | Download control in multi-server communication system |
| EP4312417A1 (en) * | 2022-07-25 | 2024-01-31 | Hulu, LLC | Content delivery network (cdn) selection using performance metric |
-
2024
- 2024-04-03 WO PCT/EP2024/059041 patent/WO2024208886A1/en active Pending
Patent Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN102523072B (en) * | 2011-12-20 | 2014-02-19 | 清华大学 | LT Code Coding and Decoding Method with Error Detection and Correction Function |
| US20130308699A1 (en) * | 2012-05-18 | 2013-11-21 | Home Box Office, Inc. | Audio-visual content delivery |
| US20140143431A1 (en) * | 2012-11-21 | 2014-05-22 | Netflix, Inc. | Multi-cdn digital content streaming |
| US20200275171A1 (en) * | 2017-07-28 | 2020-08-27 | Dolby Laboratories Licensing Corporation | Method and system for providing media content to a client |
| WO2020180988A1 (en) | 2019-03-06 | 2020-09-10 | Dolby Laboratories Licensing Corporation | Download control in multi-server communication system |
| EP4312417A1 (en) * | 2022-07-25 | 2024-01-31 | Hulu, LLC | Content delivery network (cdn) selection using performance metric |
Non-Patent Citations (2)
| Title |
|---|
| A R ARYA: "Fountain Code Based Encoding Scheme for Wireless Video Streaming", NCETET-2015 CONFERENCE PROCEEDINGS, 1 March 2015 (2015-03-01), XP093162506, Retrieved from the Internet <URL:https://www.ijert.org/research/fountain-code-based-encoding-scheme-for-wireless-video-streaming-IJERTCONV3IS05021.pdf> * |
| BULKAN UTKU ET AL: "Predicting quality of experience for online video service provisioning", MULTIMEDIA TOOLS AND APPLICATIONS, KLUWER ACADEMIC PUBLISHERS, BOSTON, US, vol. 78, no. 13, 1 February 2019 (2019-02-01), pages 18787 - 18811, XP036832539, ISSN: 1380-7501, [retrieved on 20190201], DOI: 10.1007/S11042-019-7164-9 * |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US10320869B2 (en) | Network-capacity optimized adaptive HTTP streaming | |
| US10034048B2 (en) | Multipath delivery for adaptive streaming | |
| US10298971B2 (en) | Encoding optimization using bitrate range comparisons for encoded segments | |
| US8953452B2 (en) | Enhancing performance of rapid channel changes and other playback positioning changes in adaptive streaming | |
| Famaey et al. | On the merits of SVC-based HTTP adaptive streaming | |
| US9306860B2 (en) | Congestion control method for dynamically maximizing communication link throughout | |
| US10200432B2 (en) | HTTP streaming client adaptation algorithm based on proportional-integral control | |
| US20150200992A1 (en) | Method for downloading, at a client terminal, an upcoming sequence of segments of a multimedia content, and corresponding terminal | |
| US11057445B2 (en) | Method for adapting the downloading behavior of a client terminal configured, to receive multimedia content, and corresponding terminal | |
| KR20150042191A (en) | Methods and devices for bandwidth allocation in adaptive bitrate streaming | |
| US20060031564A1 (en) | Methods and systems for streaming data at increasing transmission rates | |
| US9131251B2 (en) | Use of a receive-window size advertised by a client to a content server to change a video stream bitrate streamed by the content server | |
| KR102304476B1 (en) | Multipath-based block transmission system and streaming method for adaptive streaming service | |
| WO2024208886A1 (en) | Method and device for source selection in peer-assisted network coded streaming | |
| KR20140031916A (en) | Method and apparatus for streaming multimedia contents |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 24716391 Country of ref document: EP Kind code of ref document: A1 |
|
| DPE1 | Request for preliminary examination filed after expiration of 19th month from priority date (pct application filed from 20040101) | ||
| WWE | Wipo information: entry into national phase |
Ref document number: 2024716391 Country of ref document: EP |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| ENP | Entry into the national phase |
Ref document number: 2024716391 Country of ref document: EP Effective date: 20251104 |
|
| ENP | Entry into the national phase |
Ref document number: 2024716391 Country of ref document: EP Effective date: 20251104 |
|
| ENP | Entry into the national phase |
Ref document number: 2024716391 Country of ref document: EP Effective date: 20251104 |
|
| ENP | Entry into the national phase |
Ref document number: 2024716391 Country of ref document: EP Effective date: 20251104 |
|
| ENP | Entry into the national phase |
Ref document number: 2024716391 Country of ref document: EP Effective date: 20251104 |