Hypertext Transfer Protocol (HTTP) streaming is currently the most popular method of delivering content over the Internet. For live events, content is made available progressively through constant duration segments. The segment availability follows a timeline that indicates when each successive segment becomes available at the HTTP server.
Dynamic Adaptive Streaming Over Hypertext Transfer Protocol (DASH) is a standard that implements HTTP streaming. DASH announces the segment availability in a Media Presentation Description (MPD). The MPD is a segment availability timeline that announces the segments, the times segments are available, and the size of the segments.
In current systems, the MPD is provided to a receiver device via Over-the-Air (OTA) delivery. In the provided MPD, the segment availability times may be selected to account for a maximum path delay that is estimated to occur between the encoder output and the receiver device reception of the segment. However, not all receiver devices in a network will experience the maximum path delay. Thus, receiver devices in lower delay areas that use the segment availability times in current MPDs can experience longer channel acquisition and switch times than necessary because the maximum path delay is longer than the actual delay experienced by the receiver devices in lower delay areas.
The systems, methods, and devices of the various embodiments enable a device to use a modified segment availability time. In various embodiments, a Broadcast Multimedia Service Center (BMSC) server may be enabled to modify a segment availability timeline in which the availability times of the segments. In various embodiments, segment availability time adjustments may be made at a service layer of the receiver device. In various embodiments, segment availability time adjustments may be made by a client application on the receiver device.
Various embodiments may include receiving a segment availability timeline at a device, receiving a File Delivery Table (FDT) packet at the device, the FDT packet including a FDT timestamp, determining an FDT arrival time at the device, determining an actual availability start time at the device based at least in part on the FDT arrival time and the FDT timestamp, and shifting a start time of the segment availability timeline based at least in part on the determined actual availability start time.
Various embodiments may include determining a transmission time of the FDT packet, indicating a FDT timestamp in the FDT packet in which the FDT timestamp is based at least in part on the determined transmission time, and transmitting the FDT packet at the determined transmission time.
Further embodiments include a device configured with processor executable instructions to perform operations of the methods summarized above. Further embodiments include a device including means for performing functions of the methods summarized above. Further embodiments include a non-transitory processor-readable storage medium having stored thereon processor-executable instructions configured to cause a device processor to perform operations of the methods summarized above.
The accompanying drawings, which are incorporated herein and constitute part of this specification, illustrate exemplary embodiments of the invention, and together with the general description given above and the detailed description given below, serve to explain the features of the invention.
The various embodiments will be described in detail with reference to the accompanying drawings. Wherever possible, the same reference numbers will be used throughout the drawings to refer to the same or like parts. References made to particular examples and implementations are for illustrative purposes, and are not intended to limit the scope of the invention or the claims.
The word “exemplary” is used herein to mean “serving as an example, instance, or illustration.” Any implementation described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other implementations.
As used herein, the terms “mobile device” and “receiver device” are used interchangeably herein to refer to any one or all of cellular telephones, smart phones, personal or mobile multi-media players, personal data assistants (PDA's), laptop computers, tablet computers, smart books, palm-top computers, wireless electronic mail receivers, multimedia Internet enabled cellular telephones, wireless gaming controllers, and similar personal electronic devices that include a programmable processor and memory and circuitry for receiving an MPD and making the MPD available to a DASH client.
The various embodiments are described herein using the term “server” to refer to any computing device capable of functioning as a server, such as a master exchange server, web server, mail server, document server, content server, or any other type of server. A server may be a dedicated computing device or a computing device including a server module (e.g., running an application that may cause the computing device to operate as a server). A server module (e.g., server application) may be a full function server module, or a light or secondary server module (e.g., light or secondary server application) that is configured to provide synchronization services among the dynamic databases on receiver devices. A light server or secondary server may be a slimmed-down version of server-type functionality that can be implemented on a receiver device thereby enabling it to function as an Internet server (e.g., an enterprise e-mail server) only to the extent necessary to provide the functionality described herein.
Dynamic Adaptive Streaming Over Hypertext Transfer Protocol (DASH) is a standard that implements HTTP streaming. DASH announces the segment availability in a Media Presentation Description (MPD). The MPD is a segment availability timeline that announces the segments, the times segments are available, and the size of the segments. In current systems, the MPD is provided to a receiver device via Over-the-Air (OTA) delivery. The Third Generation Partnership Project (3GPP) has standardized DASH over Download Delivery as a method to be used for providing HTTP streaming using broadcast over Long Term Evolution (LTE) (i.e., evolved Multimedia Broadcast Multicast Services (eMBMS)).
Various examples of different applications/clients, middleware, segment availability timelines, radio technologies, and transport protocols are discussed herein, specifically DASH clients, Multicast Service Device Clients, MPDs, eMBMS, and HTTP. The discussions of DASH clients, Multicast Service Device Clients, MPDs, eMBMS, and HTTP are provided merely as examples to better illustrate the aspects of the various embodiments, and are not intended to limit the various embodiments in any way. Other applications/clients, middleware, segment availability timelines, radio technologies, and transport protocols may be used with the various embodiments, and the other applications/clients, middleware, segment availability timelines, radio technologies, and transport protocols may be substituted in the various examples without departing from the spirit or scope of the invention. For instance, various embodiments may use segments formatted according to one or more other adaptive streaming protocols, such as, HTTP Live Streaming (“HLS”), that may use other segment availability timelines, such as, an HLS index file, that may have a start time.
The various embodiments enable devices, such as receiver devices, Broadcast Multimedia Service Center (BMSC) servers, etc., to account for delays in the availability of data segments (“segment availability”) in a data stream for use on the devices. In an embodiment, a receiver device may adjust the availability times in a segment availability timeline received from a network (e.g., an MPD received OTA from a BMSC server) to generate a modified MPD listing based on the actual times received segments will be available to applications/clients on the receiver device (e.g., a DASH client retrieving segments for a media player application). In another embodiment, a BMSC may adjust the availability times in a segment availability timeline received from a network (e.g., an MPD received OTA from an encoder and/or segmenter) to generate a modified MPD listing based on the actual times received segments will be available for transmission from the BMSC server.
In various embodiments, a device, such as a receiver device, BMSC server, etc., may receive an MPD with the availability start time (AST) of the segments set to an initial start time set by an encoder (AST1) or a worst case start time (AST3). The worst case start time may be a start time for the segments identified in the MPD selected based at least in part on the estimated worst case delay (delayMAX) for transmissions of packets to the device via a network. The device may receive a File Delivery Table (FDT) packet and determine the FDT arrival time (tnr) of that packet. In various embodiments, the FDT packet may include a timestamp indicated in the FDT packet from the sending device (e.g., a BMSC server sending packets to a receiver device, an encoder sending packets to a BMSC server, etc.) reflecting the FDT packet transmission time (tnt) plus a transmission delay (Δ1) and a processing delay (Δ2). The timestamp may be a single value indicative of the FDT packet transmission time (tnt) plus the delays (Δ1 and Δ2) (e.g., a value equal to (Δ1+Δ42−tnt) or may be three separate values (e.g., tnt, Δ1, and Δ2). When the MPD indicates a worst case delay start time (AST3), the transmission time tnt of the FDT packet may be shifted by the worst case delay (e.g., tnt=tnt+delayMAX) to account for the shift in MPD start time. The device may determine the means for performing network jitter estimate actual availability start time (AST2) as the availability start time of the segments indicated in the MPD (e.g., AST1 or AST3) indicated in the MPD plus the transmission delay (Δ1) plus the processing delay (Δ2) plus the determined FDT arrival time (tnr) minus the value if the FDT packet transmission time (tnt) plus the segment duration (D). The device may shift the MPD start time (AvailabilityStartTime) to the actual availability start time (AST2) plus a determined network jitter estimate. In this manner, the timestamp of the FDT packet may be used to shift the start times of the MPD without needing to wait for a complete arrival of a segment.
In various embodiments, a device, such as a receiver device, BMSC server, etc., may receive an MPD with the availability start time (AST) of the segments set to any start time. The device may receive a File Delivery Table (FDT) packet and determine the FDT arrival time (t2) of that packet. In various embodiments, the FDT packet may include a timestamp indicated in the FDT packet from the sending device (e.g., a BMSC server sending packets to a receiver device, an encoder sending packets to a BMSC server, etc.) reflecting the offset time (PacketOffset) of the transmission time of the FDT packet (t1) from the availability start time indicated in the MPD the sending device originally received (AST1), e.g., (PacketOffset=t1−AST1). The timestamp may be a single value indicative of the FDT packet transmission time (t1) minus the availability start time indicated in the MPD the sending device originally received (AST1) (e.g., a value equal to (t1−AST1)) or may be two separate values (e.g., (t1) and (AST1)). The device may determine the actual availability start time (AST2) as the determined FDT arrival time (t2) minus the offset time (PacketOffset) (e.g., t1−AST1). The device may shift the MPD start time (AvailabilityStartTime) to the actual availability start time (AST2) plus a determined network jitter estimate. In this manner, the timestamp of the FDT packet may be used to shift the start times of the MPD without needing to wait for a complete arrival of a segment and regardless of any delay used to generate the availability start time in the MPD as received by the device.
In various embodiments, the modified MPD with the shifted MPD start time may be stored in a memory of the device, such as a receiver device, BMSC server, etc., and segments may be requested by the device at the shifted MPD start time based on the modified MPD. In various embodiments, the device, such as a receiver device, BMSC server, etc., may store an indication of the shifted MPD start time (AvailabilityStartTime) in a delay adjustment message. A delay adjustment message may be parameter and/or indication of a delay adjustment, such as a file including a delay adjustment. In an embodiment, the delay adjustment message may enable another application, such as a client application on the receiver device, to modify the availability times in a segment availability timeline received from a network (e.g., an MPD received OTA from a Broadcast Multimedia Service Center (BMSC) server) to generate a modified MPD listing based on the actual times received segments will be available to applications/clients on the receiver device (e.g., a DASH client retrieving segments for a media player application). In another embodiment, the delay adjustment message may enable another application, such as a client application on the receiver device, to adjust the timing of its requests for segments based on the actual times received segments will be available to applications/clients on the receiver device (e.g., a DASH client retrieving segments for a media player application) without modifying the segment availability timeline itself.
In an embodiment, network jitter estimates (e.g., network jitter values) may be provided in a manifest file that describes the segment availability timeline (e.g., MPD) sent to the receiver device. In another embodiment, the network jitter may be pre-provisioned on the receiver device (e.g., stored in a non-volatile memory of the receiver device at the time of manufacture). In other embodiments, the network jitter estimate may be delivered to the receiver device in any message, such as in a service announcement. In an embodiment, the network jitter estimate may be delivered to the receiver device in a message independent of the message in which a MPD may be delivered. As used herein, “jitter” refers to the difference between earliest and latest possible arrival times of a segment as a difference from the availability timeline of the segment.
In the various embodiments, the FDT timestamp may be indicated in the FDT in any manner. As an example, the FDT timestamp may be indicated in standard ALC packet header fields, such as the sender current time field (SCT field). As another example, an extension header, such as a 64 bit field, may be added as an ALC extension header to pass the FDT timestamp. As a further example, an extension header, such as a 64 bit field, may be added as an FDT extension header to pass the FDT timestamp. As a further example, three separate 32 bit fields may be added to an ALC extension header, one for each value FDT packet transmission time (tnt), transmission delay (Δ1), and processing delay (Δ2). As another example, a single 32 bit field may be added to an ALC extension header to indicate the value of the sum of the values for FDT packet transmission time (tnt), transmission delay (Δ1), and processing delay (Δ2) (e.g., a value equal to tnt+Δ1−Δ2).
Various embodiments provide methods for modifying a segment availability timeline based on additional information beyond merely device- (e.g., a receiver device, BMSC server, etc.) determined information, such as the time at which the device receives a segment. The various embodiments provide methods for modifying a segment availability timeline based on both device-determined information (e.g., a FDT arrival time) and information determined external to a device, such as information provided by a network (e.g., a FDT timestamp). For example, various embodiments provide methods for transmitting FDT packets that indicate a FDT timestamp that is based at least in part on a determined transmission time of the FDT packet. A device may receive the FDT packet indicating the FDT timestamp and determine both when the FDT packet actually arrived at the device (e.g., the FDT arrival time) and the transmission time of the FDT packet as indicated by the FDT timestamp. The use of both device determined information (e.g., a FDT arrival time) and information determined external to a device (e.g., a FDT timestamp) in modifying a segment availability timeline may result in the device determining a more accurate availability start time for a segment availability timeline than if the device had determined the actual availability start time based only on device-determined information (e.g., a FDT arrival time).
Various examples of different devices modifying MPD availability start times are discussed herein, specifically receiver devices and BMSC servers. The discussions of receiver devices and BMSC servers are provided merely as examples to better illustrate the aspects of the various embodiments, and are not intended to limit the various embodiments in any way. Other devices may be used with the various embodiments to modify MPDs, and the other devices may be substituted in the various examples to modify MPDs without departing from the scope of the invention.
In addition to generating segments, the encoder 302 may generate an MPD 310. The encoder generated MPD 310 may list the segments generated and/or to be generated by the encoder 302, the segment lengths (e.g., size), and the availability time of the segments. In an embodiment, the availability times in the encoder generated MPD 310 may correspond to the output times of the encoder 302 generated segments. The encoder 302 may provide the generated MPD 310 to the BMSC 304. In an embodiment, the BMSC 304 may receive the generated MPD 310 and adjust the segment availability timeline to account for any OTA delivery delay (e.g., network jitter) to generate an MPD 312. The BMSC 304 may send the MPD 312 to the receiver device. The MPD 312 may list the segment availability times corresponding to the OTA availability times of the segments. In an embodiment, the receiver device may receive the MPD 312, and the Multicast Service Device Client 306 of the receiver device may adjust the availability times per an FDT timestamp to generate a modified MPD 314 listing the actual estimated availability time for the segments at the receiver device. The Multicast Service Device Client 306 may provide the modified MPD 314 to the DASH client 308, and the DASH client may use the segment availability times in the MPD to request segments from the local HTTP server of the receiver device using the receiver device clock. In another embodiment, the Multicast Service Device Client 306 of the receiver device adjust the availability times in the MPD 312 per the FDT timestamp and communicate the adjustments to the availability times to the DASH client 308 separate from any MPD sent to the DASH client 308.
Based on the relationships of the availability times AST1 and AST2, the delays Δ1 and Δ2, the transmission timestamp tnt, and the arrival timestamp tna, the availability start time (AST2) may be determined as the availability start time AST1 plus the delay Δ1 plus the delay Δ2 plus the difference between the arrival timestamp tna and the transmission timestamp tnt plus the segment duration D (e.g., AST2=AST1+Δ1+Δ2+(tnr−tnt)+D). The receiver device may receive an MPD with the AST1 availability time, and BMSC may send the receiver device the estimates of the delays Δ1 and Δ2 and the transmission timestamp tnt. By providing the estimates of the delays Δ1 and Δ2 and the transmission timestamp tnt to the receiver device, the receiver device may be enabled to modify the availability start time AST1 in the MPD to the availability start time AST2 and generate a modified MPD to use for requesting segments when they may actually be available. Alternatively, when the MPD received by the receiver device includes an AST3 worst case delay availability time (e.g., AST3=AST1+DelayMAX), the BMSC timestamp for packet transmission may account for the same delay (e.g., tnt=transmission time+DelayMAX) timestamp.
In block 603 the Multicast Service Device Client, client application, or BMSC server may determine the network jitter. In an embodiment, the device may receive a network jitter value in a User Service Description (USD). In other embodiments, the network jitter value may be pre-provisioned and stored in a memory of the device.
In block 604 the Multicast Service Device Client, client application, or BMSC server may receive an FDT and determine the FDT arrival timestamp (tnr). In an embodiment, the FDT may include an FDT timestamp indicating one or more values, such as the FDT transmission time (tnt), the transmission delay from the encoder (Δ1), and/or the processing delay at the BMSC (Δ2). When the start time in the MPD is the initial start time (AST1), the FDT transmission time (tnt) may represent the actual time at which the FDT packet was transmitted. When the start time in the MPD is a worst case start time (AST3), the FDT transmission time (tnt) may be adjusted to account for the worst case delay (delayMAX) by adding the worst case delay (delayMAX) to the actual time at which the FDT packet was transmitted to generate a shifted transmission time (tnt=tnt+delayMAX). In an embodiment, the values may be indicated separately in the FDT timestamp, such as distinct values for tnt, Δ1, and Δ2. In another embodiment, the values may be indicated as a single value, such as the sum of Δ1+Δ2−tnt.
In block 606 the Multicast Service Device Client, client application, or BMSC server may determine the FDT timestamp values (tnt, Δ1, and Δ2). For example, the Multicast Service Device Client, client application, or BMSC server may parse the header of the FDT packet (e.g., parse the ALC header elements, ALC header extensions, FDT header extensions, etc.) to determine the FDT timestamp indicated in the FDT packet header. In block 607 the Multicast Service Device Client, client application, or BMSC server may determine the segment duration (D) of the segment associated with the FDT. The segment duration (D) may be indicated in the received MPD, in the FDT, or in another data source available to the Multicast Service Device Client, client application, or BMSC server.
In block 608 the Multicast Service Device Client, client application, or BMSC server determine the actual availability start time (AST2) as the start time from the received MPD (e.g., initial availability start time (AST1) or worst case start time (AST3)) plus the transmission delay from the encoder (Δ1) plus the processing delay at the BMSC (Δ2) plus the FDT arrival time (tnr) minus the FDT transmission time (tnt) plus the segment duration (D) (e.g., AST2=(AST1 or AST3)+Δ1+Δ2+(tnr−tnt)+D).
In block 610 the Multicast Service Device Client, client application, or BMSC server may shift the MPD start time (AvailabilityStartTime) to the determined actual start time (AST2) plus the network jitter (NetworkJitter). In this manner, the MPD may be shifted to reflect the actual time that segments may be available and account for the path delay actually experienced by the receiver device. In optional block 612 the Multicast Service Device Client, client application, or BMSC server may store the modified MPD in a memory available to the Multicast Service Device Client, client application, or BMSC server. In an embodiment, storing the modified MPD may include storing the modified MPD at a memory location associated with a URL at which some or all MPDs are stored on the receiver device or BMSC server. In another embodiment, the client application may not specifically store the modified MPD in a separate memory location. Rather, in optional block 614 the client application may merely use the modified MPD to request segments at a shifted availability time. In a further embodiment, the operations of method 600A may be repeated on a per representation basis to enable the availability times in different representations to be shifted independently.
In blocks 602, 603, 604, 606, 607, 608, and 610 the Multicast Service Device Client, client application, or BMSC server may perform operations of like numbered blocks of method 600A described above with reference to
As discussed above, in block 603 the Multicast Service Device Client, client application, or BMSC server may determine the network jitter. In block 903 the Multicast Service Device Client, client application, or BMSC server may receive the FDT and determine the FDT arrival time (t2). In an embodiment, the FDT may include an FDT timestamp indicating offset time (PacketOffset) between the transmission of the FDT packet and the availability time in the MPD at the sending device. In block 904 the Multicast Service Device Client, client application, or BMSC server may determine the FDT timestamp (PacketOffset). For example, the Multicast Service Device Client, client application, or BMSC server may parse the header of the FDT packet (e.g., parse the ALC header elements, ALC header extensions, FDT header extensions, etc.) to determine the FDT timestamp indicated in the FDT packet header. In block 906 the Multicast Service Device Client, client application, or BMSC server determine the actual availability start time (AST2) as the FDT arrival time (t2) minus the FDT timestamp (PacketOffset) (e.g., AST2=t2−PacketOffset). As discussed above with reference to
In block 1004, the BMSC server may determine a transmission delay from the encoder to the BMSC server (Δ1). The BMSC server may estimate the transmission delay by comparing timestamps in the packets received from the encoder to the actual time the packets were received. Alternatively, the transmission delay (Δ1) may be a pre-provisioned value stored in a memory available to the BMSC server. In block 1005, the BMSC server may determine a processing delay (Δ2) in preparing the packets for transmission. The processing delay (Δ2) may be a pre-provisioned value stored in a memory available to the BMSC server.
In block 1006, the BMSC server may determine the FDT transmission time (tnt), and in block 1007, the BMSC server may indicate the FDT timestamp (tnt, Δ1, Δ2) in the FDT. For example, the FDT timestamp may be indicated in the ALC elements of the FDT or an ALC or FDT header extension. In an embodiment, the values may be indicated separately in the FDT timestamp, such as distinct values for tnt, Δ1, and Δ2. In another embodiment, the values may be indicated as a single value, such as the sum of Δ1+Δ2−tnt. In block 1008 the BMSC server may transmit the FDT at the FDT transmission time.
In block 1010, the BMSC server may estimate a worst case delay (delayMAX) for sending segments to a receiver device. In block 1011, the BMSC server may determine the worst case start time (AST3) based at least in part on the initial start time (AST1) and estimated worst case delay (delayMAX). For example, the AST3 may be determined as AST1 plus the worst case delay (delayMAX) (e.g., AST3=AST1+delayMAX).
In block 1012, the BMSC server may shift the MPD start time to the worst case start time (AST3) to generate an MPD including an indication of the worst cast start time (AST3). In block 1013, the BMSC server may send the MPD including the indication of the worst case start time (AST3) to the receiver device.
As discussed above, the BMSC server may determine the transmission delay (Δ1) and processing delay (Δ2) in blocks 1004 and 1005. In block 1014, the BMSC server may determine the FDT transmission time adjusted for the estimated worst case delay (delayMAX) (e.g., tnt=tnt+delayMAX). In this manner, the FDT timestamp sent from the BMSC server may include a transmission time (tnt) that accounts for the worst case delay used to generate the MPD with the worst case start time (AST3). As discussed above, the BMSC server may indicate the FDT timestamp (tnt, Δ1, Δ2) in the FDT in block 1007, and the BMSC server may transmit the FDT at the FDT transmission time in block 1008.
In blocks 1002 and 1003, the BMSC server may perform operations of like numbered blocks of the method 1000a described above with reference to
The various embodiments (including, but not limited to, embodiments discussed above with reference to
The various embodiments (including, but not limited to, embodiments discussed above with reference to
The processors 1201 and 1301 may be any programmable microprocessor, microcomputer or multiple processor chip or chips that can be configured by software instructions (applications) to perform a variety of functions, including the functions of the various embodiments described above. In some devices, multiple processors may be provided, such as one processor dedicated to wireless communication functions and one processor dedicated to running other applications. Typically, software applications may be stored in the internal memory before they are accessed and loaded into the processors 1201 and 1301. The processors 1201 and 1301 may include internal memory sufficient to store the application software instructions. In many devices the internal memory may be a volatile or nonvolatile memory, such as flash memory, or a mixture of both. For the purposes of this description, a general reference to memory refers to memory accessible by the processors 1201 and 1301 including internal memory or removable memory plugged into the device and memory within the processors 1201 and 1301 themselves.
The foregoing method descriptions and the process flow diagrams are provided merely as illustrative examples and are not intended to require or imply that the steps of the various embodiments must be performed in the order presented. As will be appreciated by one of skill in the art the order of steps in the foregoing embodiments may be performed in any order. Words such as “thereafter,” “then,” “next,” etc. are not intended to limit the order of the steps; these words are simply used to guide the reader through the description of the methods. Further, any reference to claim elements in the singular, for example, using the articles “a,” “an” or “the” is not to be construed as limiting the element to the singular.
The various illustrative logical blocks, modules, circuits, and algorithm steps described in connection with the embodiments disclosed herein may be implemented as electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present invention.
The hardware used to implement the various illustrative logics, logical blocks, modules, and circuits described in connection with the aspects disclosed herein may be implemented or performed with a general purpose processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general-purpose processor may be a microprocessor, but, in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration. Alternatively, some steps or methods may be performed by circuitry that is specific to a given function.
In one or more exemplary aspects, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored as one or more processor-executable instructions or computer-executable instructions or code on a non-transitory computer-readable medium or non-transitory processor-readable medium. The steps of a method or algorithm disclosed herein may be embodied in a processor-executable software module, which may reside on a non-transitory computer-readable or processor-readable storage medium. Non-transitory server-readable, computer-readable or processor-readable storage media may be any storage media that may be accessed by a computer or a processor. By way of example but not limitation, such non-transitory server-readable, computer-readable or processor-readable media may include RAM, ROM, EEPROM, FLASH memory, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that may be used to store desired program code in the form of instructions or data structures and that may be accessed by a computer. Disk and disc, as used herein, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk, and Blu-ray disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above are also included within the scope of non-transitory server-readable, computer-readable and processor-readable media. Additionally, the operations of a method or algorithm may reside as one or any combination or set of codes and/or instructions on a non-transitory server-readable, processor-readable medium and/or computer-readable medium, which may be incorporated into a computer program product.
The preceding description of the disclosed embodiments is provided to enable any person skilled in the art to make or use the present invention. Various modifications to these embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other embodiments without departing from the spirit or scope of the invention. Thus, the present invention is not intended to be limited to the embodiments shown herein but is to be accorded the widest scope consistent with the following claims and the principles and novel features disclosed herein.
The present application claims priority to U.S. Provisional Patent Application No. 62/119,353 entitled “Availability Start Time Adjustment By Device For DASH Over Broadcast” filed Feb. 23, 2015, the entire contents of which are hereby incorporated by reference.
Number | Date | Country | |
---|---|---|---|
62119353 | Feb 2015 | US |