Distribution of multimedia video (also referred to herein as “media” and/or “program(s)”), such as movies and the like, from network services to a client device, may be achieved through adaptive bitrate streaming of the video. Prior to streaming, the video may be encoded at different bitrates and resolutions into multiple bitrate streams that are stored in the network services. Typically, each of the bitstreams includes time-ordered segments of encoded video.
Adaptive bitrate streaming includes determining an available streaming bandwidth at the client device, and then downloading a selected one of the different bitrate streams from the network services to the client device based on the determined available bandwidth. While streaming, the client device downloads and buffers the successive encoded video segments associated with the selected bitstream. The client device decodes the buffered encoded video segments to recover the video therein, and then plays back the recovered video on the client device, e.g., in audio-visual form.
In normal playback, the client device plays back the video recovered from each of the buffered segments in the order in which the video was originally encoded, i.e., in a forward direction. The client device may offer playback modes or features in addition to normal playback. Such additional playback features may include rewind, fast forward, skip, and so on, as is known.
The additional playback features are referred to herein as trick play features. In order to implement trick play features, such as rewind, the client device requires access to video that has already been played. Therefore, the client device may be required to store large amounts of already downloaded and played video in order to meet the demands of a selected trick play feature. However, many client devices, especially small, hand-held devices, have limited memory capacity and, therefore, may be unable to store the requisite amount of video.
In the drawings, the leftmost digit(s) of a reference number identifies the drawing in which the reference number first appears.
1 Network Environment
Environment 100 supports trick play features in different adaptive bitrate streaming embodiments, including on-demand streaming, live streaming, and real-time streaming embodiments. On-demand streaming includes encoding the content of a program from start to end in its entirety and then, after the entire program has been encoded, streaming, i.e., downloading, the encoded program to a client device. An example of on-demand streaming includes streaming a movie from a Video-on-Demand (VOD) service to a client device.
Live streaming includes encoding successive blocks of live content, i.e., a live program, as they are received from a content source, and then streaming each encoded block as it becomes available for download. Live streaming may include streaming live scenes, i.e., video, captured with a video camera.
Real-time streaming is similar in most aspects to live streaming, except that the input to real-time streaming is not a live video feed. Rather, the input, or source, may include successive encoded blocks, or input blocks, that have a format not suitable for streaming (e.g., for a given system) and must, therefore, be decoded and re-encoded (i.e., transcoded) into an encoded format that is suitable for streaming (in the given system). Real-time streaming handles the successive incompatible input blocks similar to the way live streaming handles the successive blocks of live content.
Network environment 100 is now described in detail. Network environment 100 includes server-side or network services 102 (also referred to simply as “services 102”) and client-side device 104. Network services 102 may be implemented as Internet cloud-based services. Network services 102 interact and cooperate with each other, and with client device 104, to manage and distribute, e.g., stream, multimedia content from content sources 108 to the client devices, over one or more communication network 106, such as the Internet. Network services 102 communicate with each other and with client devices 104 using any suitable communication protocol, such as an Internet protocol, which may include Transmission Control Protocol/Internet Protocol (TCP/IP), Hypertext Transfer Protocol (HTTP), etc., and other non-limiting protocols described herein.
Content sources 108 may include any number of multimedia content sources or providers that originate live and/or pre-recorded multimedia content (also referred to herein simply as “content”), and provide the content to services 102, directly, or indirectly through communication network 106. Content sources 108, such as Netflix®, HBO®, cable and television networks, and so on, may provide their content in the form of programs, including, but not limited to, entertainment programs (e.g., television shows, movies, cartoons, news programs, etc.), educational programs (e.g., classroom video, adult education video, learning programs, etc.), and advertising programs (e.g., commercials, infomercials, or marketing content). Content sources 108, such as, e.g., video cameras, may capture live scenes provide the resulting real-time video to services 102. Content sources may also include live broadcast feeds deployed using protocols such as Real-time Transport Protocol (RTP), and Real-time Messaging Protocol (RTMP).
Network services 102 include, but are not limited to: an encoder 110 to encode content from content sources 108; a content delivery network (CDN) 112 (also referred to as a “download server 112”) to store the encoded content, and from which the stored, encoded content may be streamed or downloaded to client device 104; and a real-time service (RTS) 114 (also referred to as a “real-time server (RTS) 114”) to (i) control services 102, and (ii) implement an RTS streaming control interface through which client device 104 may initiate and then monitor both on-demand, live, and real-time streaming sessions. Each of services 102 may be implemented as one or more distinct computer servers that execute one or more associated server-side computer program applications suited to the given service.
Encoder 110 may be implemented as a cloud encoder accessible over communication network 106. Encoder 110 encodes content provided thereto into a number of alternative bitstreams 120 (also referred to as encoded content) to support adaptive bitrate streaming of the content. For increased efficiency, encoder 110 may be implemented as a parallel encoder that includes multiple parallel encoders. In such an embodiment, encoder 110 divides the content into successive blocks or clips each of a limited duration in time. Each block may include a number of successive picture frames, referred to collectively as a group of pictures (GOPs). Encoder 110 encodes the divided blocks or GOPs in parallel to produce alternative bitstreams 120. Encoder 110 may also include transcoders to transcode input files from one encoded format to another, as necessary.
Alternative bitstreams 120 encode the same content in accordance with different encoding parameters/settings, such as at different encoding bitrates, resolutions, frame rates, and so on. In an embodiment, each of bitstreams 120 comprises a large number of sequential (i.e., time-ordered) files of encoded content, referred to herein as container files (CFs), as will be described further in connection with
After encoder 110 has finished encoding content, e.g., after each of the content blocks is encoded, the encoder uploads the encoded content to CDN 112 for storage therein. CDN 112 includes one or more download servers (DSs) to store the uploaded container files at corresponding network addresses, so as to be accessible to client device 104 over communication network 106.
RTS 114 acts as a contact/control point in network services 102 for client device 104, through which the client device may initiate and then monitor its respective on-demand, live, and real-time streaming sessions. To this end, RTS 114 collects information from services 102, e.g., from encoder 110 and CDN 112, that client device 104 may use to manage its respective streaming sessions, and provides the collected information to the client device via messages (described below) when appropriate during streaming sessions, thus enabling the client device to manage its streaming sessions. The information collected by RTS 114 (and provided to client device 104) identifies the encoded content, e.g., the container files, stored in CDN 112, and may include, but is not limited to, network addresses of the container files stored in the CDN, encoding parameters use to encode the container files, such as their encoding bitrates, resolutions, and video frame rates, and file information, such as file sizes, and file types.
Client device 104 may be capable of wireless and/or wired communication with network services 102 over communication network 106, and includes processing, storage, communication, and user interface capabilities sufficient to provide all of the client device functionality described herein. Such functionality may be provided, at least in part, by one or more client applications 107, such as computer programs, that execute on client device 104. Client applications 107 may include:
As described above, encoder 110 encodes multimedia content from content sources 108, and CDN 112 stores the encoded content. To support adaptive bitrate streaming and trick play features, encoder 110 encodes the content at multiple encoding levels, where each level represents a distinct combination of an encoding bitrate, a video resolution (for video content), and a video frame rate, to produce (i) multiple adaptive bitrate streams for the content, and (ii) a trick play stream for the content. The multiple streams may be indexed according to their respective encoding levels. While streaming the encoded program from CDN 112, client device 104 may switch between streams, i.e., levels (and thus encoded bitrates and resolutions), according to conditions at the client device. Also, while streaming the encoded program, client device 104 may download portions of the trick play stream from CDN 112 to implement trick play features in the client device.
Each of encoding levels L1-L3 corresponds to a distinct combination of an encoding bitrate (Rate), a video resolution (Res), and a video frame rate (FR). In the example, encoding levels L1, L2, L3 correspond to encoder settings Rate1/Res1/FR1, Rate2/Res2/FR2, Rate3/Res3/FR3, respectively. In an embodiment, the encoding bitrate Rate3 and the video frame rate FR3 used to encode the trick play stream are less than the encoding bitrates Rate1, Rate2 and the frame rates FR1, FR2, respectively, used to encode adaptive bitrate streams 1, 2.
Although the example of
Each of streams 1-3 includes a distinct, time-ordered, sequence of container files CF (i.e., successive container files CF), where time is depicted in
The encoded blocks of the container files CF in a given stream may encode the same content (e.g., video content) as corresponding blocks in the other streams. For example, the stream 1 block corresponding to time code TC1 has encoded therein the same video as that in the stream 2 block corresponding to TC1. Such corresponding blocks encode the same content and share the same time code TC, i.e., they are aligned or coincide in time.
In an embodiment, a program stream index 204 may be associated with encoded video program 200 to identify each of the streams therein (e.g., the ABR streams 1, 2, and the trick play stream). RTS 114 may create (and store) program stream index 204 based on the information collected from encoder 110 and CDN 112, as described above in connection with
Address pointers 210-1, 210-2, 210-3 may point to respective lists of addresses A1, A2, A3 of the container files CF comprising each of streams 1, 2, 3. Address lists A1, A2, A3 may each be represented as an array or linked list of container file network addresses, e.g., URLs. Accordingly, access to the information in program stream index 204 results in possible access to all of the container files associated with streams 1, 2, 3.
Although each of container files CF depicted in
Container files may encode a single stream, such as a video stream (as depicted in
In embodiments: the container files may be Matroska (MKV) containers based on Extensible Binary Meta Language (EBML), which is a derivative of Extensible Binary Meta Language (XML), or files encoded in accordance with the Moving Picture Experts Group (MPEG) standard; the program stream index may be provided in a Synchronized Multimedia Integration Language (SMIL) format; and client device 104 may download container files from CDN 114 over networks 106 using the HTTP protocol. In other embodiments, the container file formats may include OGG, flash video (FLV), Windows Media Video (WMV), or any other format.
Exemplary, non-limiting, encoding bitrates for different levels, e.g., levels L1, L2, L3 may range from below 125 kilo-bits-per-second (kbps) up to 15,000 kbps, or even higher, depending on the type of encoded media (i.e., content). Video resolutions Res 1-Res 4 may be equal to or different from each other.
The container files may support adaptive streaming of encoded video programs across an available spectrum bandwidth that is divided into multiple, i.e., n, levels. Video having a predetermined video resolution for each level may be encoded at a bitrate corresponding to the bandwidth associated with the given level. For example, in DivX® Plus Streaming, by Rovi Corporation, the starting bandwidth is 125 kbps and the ending bandwidth is 8400 kbps, and the number n of bandwidth levels is eleven (11). Each bandwidth level encodes a corresponding video stream, where the maximum encoded bitrate of the video stream (according to a hypothetical reference decoder model of the video coding standard H.264) is set equal to the bandwidth/bitrate of the given level. In DivX® Plus Streaming, the 11 levels are encoded according to 4 different video resolution levels, in the following way: mobile (2 levels), standard definition (4 levels), 720p (2 levels), and 1080p (3 levels).
2.1 Encoded Video Frame Structure
The encoding process may encode a video frame independent of, i.e., without reference to, any other video frames, such as preceding frames, to produce an encoded video frame referred to herein as a key frame. For example, the video frame may be intra-encoded, or intra-predicted. Such key frames are referred to as I-Frames in the H.264/MPEG standard set. Since the key frame was encoded independent of other encoded video frames, it may be decoded to recover the original video content therein independent of, i.e., without reference to, any other encoded video frames. In the context of streaming, the key frame may be downloaded from CDN 112 to client device 104, decoded independent of other encoded frames, and the recovered (decoded) video played back, i.e., presented, on the client device.
Alternatively, the encoding process may encode a video frame based on, or with reference to, other video frames, such as one or more previous frames, to produce an encoded video frame referred to herein as a non-key frame. For example, the video frame may be inter-encoded, i.e., inter-predicted, to produce the non-key frame. Such non-key frames include P-Frames and B-frames in the H.264/MPEG standard set. The non-key frame is decoded based on one or more other encoded video frames, e.g., key-frames, reference frames, etc. In the context of streaming, the non-key frame may be downloaded from CDN 112 to client device 104, decoded based on other encoded frames, and the recovered video played back.
With reference again to
A key/non-key (K/NK) flag associated with each of the frames 304, 306, and 308 indicates whether the associated frame is a key-frame or a non-key frame. Each of the key and the non-key frames may include a predetermined number of bytes of encoded video.
In an example in which the encoded video block represented by frame structure 300 encodes 2 seconds of video captured at a video frame rate of 30 frames per second (fps), the frame structure includes 60 encoded video frames, which may include N (i.e., one or more) interspersed key frames, and 60-N non-key frames. Typically, the number of non-key frames exceeds the number of key frames.
In the example in which the encoded video block represented by frame structure 300 encodes 2 seconds of video captured at a video frame rate of 30 frames per second (fps), the encoded video block represented by frame structure 320 also encodes 2 seconds of video. However the video frame rate for structure 320 is reduced to 5 fps, which yields 10 encoded video frames (key frames) every 2 seconds.
3 Sequence Diagram
3.1 Start-Up
At 410, a user of client device 104 selects content, such as a video program, to be streamed using the client device GUI.
At 422, client device 104 sends a “Start” message (also referred to as a “begin playback” message) to RTS 114 to start a streaming session. The Start message includes an identifier (ID) of the content to be streamed and a current time stamp. The ID identifies content from a content source that is to be streamed to client 104, and may indicate, e.g., a channel, program name, and/or source originating the content to be streamed. The current time stamp (also referred to as “current time”) indicates a current time, such as a Universal Time Code (UTC). The UTC may be acquired from any available UTC time service, as would be appreciated by those or ordinary skill in the relevant arts.
As mentioned above, it is assumed that at the time the Start message is issued, the content identified therein has already been encoded and is available for streaming, e.g., for video-on-demand streaming, or will begin to be encoded shortly after the time of the Start message, e.g., for live and real-time streaming. It is also assumed that RTS 114 has collected, or will be collecting, the information related to the encoded program from encoder 110 or CDN 115, such as a program stream index, e.g., program stream index 204, sufficient to identify the identified content in network services 102.
At 424, in response to the Start message, RTS 114 sends an encoding profile message (referred to as a “Profile” message) to client 104. The Profile message lists different encoding profiles used to encode the identified content, e.g., as available from the program stream index for the identified content. Each of the profiles specifies encoding parameters/settings, including, but not limited to: content type (e.g., audio, video, or subtitle); an encoding level corresponding to an encoding bitrate, resolution, and video frame rate (e.g., levels L1, L2, L3); and a container file type, e.g., a Multipurpose Internet Mail Extensions (MIME) type. The Profile message also indicates which encoding level among the multiple encoding levels e.g., encoding level L3, represents or corresponds to a trick play stream.
In response to the Profile message, client device 104 selects an appropriate encoding level (e.g., an appropriate combination of an encoding bitrate and a resolution) among the levels indicated in the Profile message (not including the level indicating the trick play stream) for normal streaming and playback of the identified content. Client device 104 may determine the appropriate encoding level based on a communication bandwidth at the client device.
3.2 Normal Streaming and Playback
After startup, normal streaming and playback begins, as follows.
At 432, after client device 104 has selected the encoding level, the client device sends a GetPlaylist message to RTS 114 to request a list of any new container files that have been uploaded since the client device last downloaded container files (if any) from CDN 112. The GetPlaylist message includes selection criteria for uploaded container files, namely, a current time and the selected encoding level. The current time represents a time code associated with the last container file downloaded by client device 104 (if any) in the current streaming session.
In response to the GetPlaylist message, RTS 114:
and
For each of the selected container files, the Playlist message includes the following information: the type of content encoded in the container file (e.g., video, audio, or subtitle); an address (e.g., URL) of the container file in CDN 112 (e.g., a subset of the addresses A1 or A2); a time code, e.g., a start time and an end time, associated with the content block encoded in the container file; and a file size of the container file.
At 434, in response to the Playlist message, client device 104 downloads container files from addresses in CDN 112 based on, i.e., as identified in, the Playlist message.
At 436, client device 104 decodes all of the key frames and the non-key frames of the encoded content block from each of the downloaded container files to recover the original content therein, and then presents the recovered content, whether in audio, visual, or in other form, on client device 104. The process of decoding the encoded content from the key and non-key frames and then presenting the recovered content on client device 104 is referred to as “normal playback” on the client device. In normal playback, the content recovered from successive downloaded container files is played back on client device 104 in a forward (play) direction, i.e., in an order of increasing time code. For example, with reference again to
The normal streaming and playback sequence repeats. Therefore, in summary, in the streaming and playback sequence, client device 104 periodically requests and downloads Playlist messages, downloads container files indicated in the Playlist messages, and plays back the content from the downloaded container files in the forward direction.
3.3 Trick Play
At any time during the normal streaming and playback sequence, the user may select a trick play (TP) feature through the GUI. Trick play features include, but are not limited to, rewind and fast forward, in which client device 104 rewinds and fast forwards through previously played back content.
At 440, assume the user selects the rewind trick play feature while client device 104 is performing the normal playback of content.
At 442, in response to the rewind request, client device 104 sends a GetPlaylist message to RTS 114 to solicit appropriate trick play video (container files) from network services 102. Therefore, in this case, the GetPlaylist message may also be referred to as a “GetTrickPlayPlaylist” message. The GetPlaylist message sent at 442 includes the following trick play file selection criteria:
At 444, in response to the GetPlaylist message sent at 442, RTS 114 generates and sends a trick play Playlist message to client device 104. The trick play Playlist message identifies those container files from the trick play stream (e.g., the stream associated with encoding level L3 in the example of
At 446, client device 104 downloads the trick play container files identified in the Playlist message from 444. For example, client device 104 downloads the trick play container files from their corresponding URLs.
At 448, client device 104 plays back video from the downloaded trick play container files, i.e., the client device decodes the key frames from each of the trick play container files and then presents the decoded video in a rewind play direction, i.e., in an order of decreasing time codes beginning with the trick play time.
The trick play sequence 442-448 repeats.
During trick play, the video from the key frames may be played back at a reduced video frame rate relative to that used for normal playback. For example, the trick play playback video frame rate may be 5 fps, instead of 30 fps.
Also, to implement a faster rewind, key frames may be skipped, e.g., every other key frame may be played back. In other words, only a subset of key frames in each of the downloaded trick play container files may be used in trick play playback.
The above described trick play sequence results when the user selects RWD at 440. Alternatively, the user may select fast forward (FFWD) at 440. The trick play sequence that results when the user selects FFWD is similar to that for RWD, except that the GetPlaylist message at 442 indicates FFWD instead of RWD. In response to the FFWD indication in the GetPlaylist message, at 444, RTS 114 returns a Playlist message identifying trick play files associated with successive time codes greater than (not less than) the trick play time. Then, at 448, client device 104 plays back the downloaded trick play files in the forward direction.
4 Profile and Playlist Messages
4.1 Profile Message
Similarly, AE profile 506 specifies:
The Profile message may also include a video frame rate at which each level was encoded.
As mentioned above in connection with
4.2 Playlist Message
Playlist message 600 includes a header 601 to specify the base profile as 3.0, and a body that includes sequential records or elements 602-610, each of which is defined as a seq element <seq>. In an embodiment, each seq element 602-610 corresponds to an uploaded container file. Using seq elements, RTS 114 is able to specify a sequence of real-time media streams for playback. A sequence tag is used with each element to indicate one of <video>, <audio> or <subtitle/text> encoded content for streaming. Elements 602-610 identify respective uploaded elements (e.g., container files) that meet the Playlist message criteria (i.e., encoding level 1 and a time code equal to or greater than 40). In the example of
715 includes encoding video into (i) multiple adaptive bitrate streams, and (ii) a corresponding trick play stream in accordance with corresponding distinct sets of encoder settings or levels, such as an encoding bitrate, a resolution, and a video frame rate. Each of the streams comprises container files of encoded video associated with successive time codes.
720 includes storing (i) the container files for each stream at corresponding addresses, such as network addresses, e.g., URLs, in a download server, e.g., in CDN 114, and (ii) an index identifying the container files of each stream in RTS 114.
725 includes receiving a playlist request (e.g., a GetPlaylist message) from a client device, e.g., over a communication network, for a selected one of the adaptive bitrate streams. The playlist request includes container file selection criteria, including a current time, an encoding level.
730 includes sending, to the client device over the communication network, a playlist (e.g., a Playlist message) identifying the stored files of the selected stream that meet the selection criteria, i.e., that are associated with time codes greater than the current time. The playlist may list URLs where the identified container files are stored and sizes of the files.
735 includes receiving, from the client device, a playlist request (e.g., another GetPlaylist message) for the trick play stream corresponding to the selected stream. The trick play playlist request includes a trick play time code, a trick play encoding level, and a trick play direction, e.g., fast forward or rewind.
740 includes sending, to the client device, a trick play playlist (e.g., another Playlist message) identifying the stored files (e.g., URLs of the stored files) of the trick play stream that are associated with successive time codes that are (i) less than the trick play time if the trick play direction is rewind, and (ii) greater than the trick play time if the trick play direction is fast forward.
5.2 Client Side
Together, operations 802-815 described below are considered precursor, or initialization, operations that lead to subsequent downloading of an adaptive bitrate stream.
802 includes requesting to stream a video program from network services over a communication network and, in response, receiving a Profile message over the communication network identifying multiple adaptive bitrate streams of encoded video and a trick play stream of encoded video that are stored in, and available for streaming from, network services. The streams may be identified according to their respective encoding levels (e.g., encoding bitrate, resolution, frame rate, etc.). Each of the streams comprises container files of the encoded video. The container files of each stream are associated with successive time codes.
805 includes selecting an adaptive bitrate stream from among the multiple adaptive bitrate streams. A client device may select an adaptive bitrate stream based an available communication bandwidth.
810 includes sending, to the network services over the communication network, a playlist request (e.g., a GetPlaylist message) for (container) files from the selected stream. The playlist request includes file selection criteria that includes a current time and specifies an encoding level corresponding to, e.g., an encoding bitrate and a resolution, of the selected stream.
815 includes receiving, from the network services over the communication network, a playlist (e.g., a Playlist message) identifying the files from the selected stream that meet the file selection criteria, i.e., that are associated with successive time codes greater than the current time.
820 includes downloading, from the network services over the communication network, files of encoded video from the selected stream as identified in the playlist, e.g., from URLs listed in the playlist.
825 includes playing back video from the downloaded files in an order of increasing time codes. This includes playing back video from both key and non-key frames at a normal video frame rate, such as 30 fps.
830 includes receiving a trick play feature request, such as a video rewind request, from a user of the client device. Next operations 835-850 are performed in response to the trick play request received at 830.
835 includes sending, to the network services over the communication network, a trick play playlist request (e.g., a GetTrickPlayPlayist message) for appropriate trick play files from the trick play stream corresponding to the selected stream. The request includes a trick play time (corresponding to a time when the user selected the trick play feature), a trick play encoding level as indicated in the Profile message received earlier by the client device at 802 (e.g., level L3), and a trick play direction (e.g., rewind or fast forward).
840 includes receiving, from the network services over the communication network, a trick play playlist (e.g., a Playlist message) identifying files from the trick play stream that meet the file selection criteria, i.e., that are associated with successive time codes (i) less than the trick play time if the direction is rewind, and (ii) greater than the trick play time if the direction is fast forward.
845 includes downloading the trick play files identified in the playlist from 840, e.g., from URLs listed in the playlist.
850 includes playing back video from the downloaded files in either the rewind direction, i.e., in an order of decreasing time codes, or in the forward direction, as appropriate. This includes playing back video only from key frames at a trick play video frame rate, such as 5 fps, which is reduced relative to the normal frame rate.
6 Systems
Computer system 900 includes one or more computer instruction processing units and/or processor cores, illustrated here as processor 902, to execute computer readable instructions, also referred to herein as computer program logic.
Computer system 900 may include memory, cache, registers, and/or storage, illustrated here as memory 904, which may include a non-transitory computer readable medium encoded with computer programs, illustrated here as computer program 906.
Memory 904 may include data 908 to be used by processor 902 in executing computer program 906, and/or generated by processor 902 during execution of computer program 906. Data 908 may include container files 908a from adaptive bitrate streams and trick play streams, and message definitions 908b for GetPlaylist, Playlist, and Profile messages, such as used in the methods described herein.
Computer program 906 may include:
Client application instructions 910 to cause processor 902 to perform client device functions as described herein. Instructions 910 include:
GUI instructions 912 to implement a GUI through which a user may select to stream a program and select trick play features;
streaming and playback instructions 914 to download, decode, and playback streamed video content;
trick play instructions 916 to implement trick play features; and
message protocol instructions 918 to implement client side message exchange protocols/sequences (sending and receiving of messages) as described in one or more examples above.
Instructions 910-918 cause processor 902 to perform functions such as described in one or more examples above.
Network/server-side application instructions 960 cause a processor to perform network-side (network services) functions as described herein. Instructions 960 have access to adaptive bitrate streams, trick play streams, indexes identifying the streams, and message definitions as described in one or more example above. Instructions 960 include:
encoder instructions 962 to encode multimedia content into adaptive bitrate streams and trick play streams, as described in one or more example above; and
message protocol instructions 964, including RTS instructions, to implement network side message exchange protocols/sequences (sending and receiving of messages) in support of adaptive bitrate streaming and trick play streaming, e.g., between RTS 114, client device 104, encoder 110, and CDN 112, as described in one or more examples above. For example, instructions 964 include instructions to create and send Profile and Playlist messages, and to respond to GetPlaylist messages.
Methods and systems disclosed herein may be implemented with respect to one or more of a variety of systems including one or more consumer systems, such as described below with reference to
System 1100 or portions thereof may be implemented within one or more integrated circuit dies, and may be implemented as a system-on-a-chip (SoC).
System 1100 may include one or more processors 1104 to execute client-side application programs stored in memory 1105.
System 1100 may include a communication system 1106 to interface between processors 1104 and communication networks, such as networks 106. Communication system 1106 may include a wired and/or wireless communication system.
System 1100 may include a stream processor 1107 to process program (i.e., content) streams, received over communication channel 1108 and through communication system 1106, for presentation at system 1100. Stream processor 1107 includes a buffer 1107a to buffer portions of received, streamed programs, and a decoder 1107b to decode and decrypt the buffered programs in accordance with encoding and encryption standards, and using decryption keys. In an alternative embodiment, decoder 1107b may be integrated with a display and graphics platform of system 1100. Stream processor 1107 together with processors 1104 and memory 1105 represent a controller of system 1100. This controller includes modules to perform the functions of one or more examples described herein, such as a streaming module to stream programs through communication system 1106.
System 1100 may include a user interface system 1110.
User interface system 1110 may include a monitor or display 1132 to display information from processor 1104, such as a client-side GUI.
User interface system 1110 may include a human interface device (HID) 1134 to provide user input to processor 1104. HID 1134 may include, for example and without limitation, one or more of a key board, a cursor device, a touch-sensitive device, and or a motion and/or image sensor. HID 1134 may include a physical device and/or a virtual device, such as a monitor-displayed or virtual keyboard.
User interface system 1110 may include an audio system 1136 to receive and/or output audible sound.
System 1100 may correspond to, for example, a computer system, a personal communication device, and/or a television set-top box.
System 1100 may include a housing, and one or more of communication system 1106, processors 1104, memory 1105, user interface system 1110, or portions thereof may be positioned within the housing. The housing may include, without limitation, a rack-mountable housing, a desk-top housing, a lap-top housing, a notebook housing, a net-book housing, a set-top box housing, a portable housing, and/or other conventional electronic housing and/or future-developed housing. For example, communication system 1102 may be implemented to receive a digital television broadcast signal, and system 1100 may include a set-top box housing or a portable housing, such as a mobile telephone housing.
Methods and systems disclosed herein may be implemented in circuitry and/or a machine, such as a computer system, and combinations thereof, including discrete and integrated circuitry, application specific integrated circuitry (ASIC), a processor and memory, and/or a computer-readable medium encoded with instructions executable by a processor, and may be implemented as part of a domain-specific integrated circuit package, a system-on-a-chip (SOC), and/or a combination of integrated circuit packages.
Methods and systems are disclosed herein with the aid of functional building blocks illustrating functions, features, and relationships thereof. At least some of the boundaries of these functional building blocks have been arbitrarily defined herein for the convenience of the description. Alternate boundaries may be defined so long as the specified functions and relationships thereof are appropriately performed. While various embodiments are disclosed herein, it should be understood that they are presented as examples. The scope of the claims should not be limited by any of the example embodiments disclosed herein.
The current application is a continuation of U.S. patent application Ser. No. 15/651,817 entitled “Network Video Streaming with Trick Play Based on Separate Trick Play Files” to Shivadas et al., filed Jul. 17, 2017, which is a continuation of U.S. patent application Ser. No. 14/810,345 entitled “Network Video Streaming with Trick Play Based on Separate Trick Play Files” to Shivadas et al., filed Jul. 27, 2015 and issued as U.S. Pat. No. 9,712,890 on Jul. 18, 2017, which is a continuation of U.S. patent application Ser. No. 13/905,852 entitled “Network Video Streaming with Trick Play Based on Separate Trick Play Files” to Shivadas et al., filed May 30, 2013 and issued as U.S. Pat. No. 9,094,737 on Jul. 28, 2015, the disclosures of which are hereby incorporated by reference in their entireties.
| Number | Name | Date | Kind |
|---|---|---|---|
| 5400401 | Wasilewski et al. | Mar 1995 | A |
| 5574785 | Ueno et al. | Nov 1996 | A |
| 5600721 | Kitazato | Feb 1997 | A |
| 5642338 | Fukushima et al. | Jun 1997 | A |
| 5813010 | Kurano et al. | Sep 1998 | A |
| 5819160 | Foladare et al. | Oct 1998 | A |
| 5854873 | Mori et al. | Dec 1998 | A |
| 5907658 | Murase et al. | May 1999 | A |
| 5923869 | Kashiwagi et al. | Jul 1999 | A |
| 6002834 | Hirabayashi et al. | Dec 1999 | A |
| 6009237 | Hirabayashi et al. | Dec 1999 | A |
| 6016381 | Taira et al. | Jan 2000 | A |
| 6057832 | Lev et al. | May 2000 | A |
| 6266483 | Okada et al. | Jul 2001 | B1 |
| 6282320 | Hasegawa et al. | Aug 2001 | B1 |
| 6320905 | Konstantinides | Nov 2001 | B1 |
| 6351538 | Uz | Feb 2002 | B1 |
| 6373803 | Ando et al. | Apr 2002 | B2 |
| 6415031 | Colligan et al. | Jul 2002 | B1 |
| 6441754 | Wang et al. | Aug 2002 | B1 |
| 6445877 | Okada et al. | Sep 2002 | B1 |
| 6453115 | Boyle | Sep 2002 | B1 |
| 6453116 | Ando et al. | Sep 2002 | B1 |
| 6504873 | Vehvilaeinen | Jan 2003 | B1 |
| 6512883 | Shim et al. | Jan 2003 | B2 |
| 6532262 | Fukuda et al. | Mar 2003 | B1 |
| 6594699 | Sahai et al. | Jul 2003 | B1 |
| 6654933 | Abbott et al. | Nov 2003 | B1 |
| 6690838 | Zhou | Feb 2004 | B2 |
| 6724944 | Kalevo et al. | Apr 2004 | B1 |
| 6751623 | Basso et al. | Jun 2004 | B1 |
| 6813437 | Ando et al. | Nov 2004 | B2 |
| 6868525 | Szabo | Mar 2005 | B1 |
| 6871006 | Oguz et al. | Mar 2005 | B1 |
| 6912513 | Candelore | Jun 2005 | B1 |
| 6931531 | Takahashi | Aug 2005 | B1 |
| 6957350 | Demos | Oct 2005 | B1 |
| 6970564 | Kubota et al. | Nov 2005 | B1 |
| 6983079 | Kim | Jan 2006 | B2 |
| 7006757 | Ando et al. | Feb 2006 | B2 |
| 7020287 | Unger | Mar 2006 | B2 |
| 7181438 | Szabo | Feb 2007 | B1 |
| 7188183 | Paul et al. | Mar 2007 | B1 |
| 7191335 | Maillard | Mar 2007 | B1 |
| 7212726 | Zetts | May 2007 | B2 |
| 7274861 | Yahata et al. | Sep 2007 | B2 |
| 7352956 | Winter et al. | Apr 2008 | B1 |
| 7382879 | Miller | Jun 2008 | B1 |
| 7397853 | Kwon et al. | Jul 2008 | B2 |
| 7400679 | Kwon et al. | Jul 2008 | B2 |
| 7418132 | Hoshuyama | Aug 2008 | B2 |
| 7457415 | Reitmeier et al. | Nov 2008 | B2 |
| 7499930 | Naka et al. | Mar 2009 | B2 |
| 7546641 | Robert et al. | Jun 2009 | B2 |
| 7639921 | Seo et al. | Dec 2009 | B2 |
| 7711052 | Hannuksela et al. | May 2010 | B2 |
| 7711647 | Gunaseelan et al. | May 2010 | B2 |
| 7853980 | Pedlow, Jr. et al. | Dec 2010 | B2 |
| 7864186 | Robotham et al. | Jan 2011 | B2 |
| 7873740 | Sitaraman et al. | Jan 2011 | B2 |
| 7945143 | Yahata et al. | May 2011 | B2 |
| 7984513 | Kyne et al. | Jul 2011 | B1 |
| 8131875 | Chen | Mar 2012 | B1 |
| 8169916 | Pai et al. | May 2012 | B1 |
| 8243924 | Chen et al. | Aug 2012 | B2 |
| 8286213 | Seo | Oct 2012 | B2 |
| 8286621 | Halmone | Oct 2012 | B2 |
| 8312079 | Newsome et al. | Nov 2012 | B2 |
| 8325800 | Holcomb et al. | Dec 2012 | B2 |
| 8327009 | Prestenback et al. | Dec 2012 | B2 |
| 8369421 | Kadono et al. | Feb 2013 | B2 |
| 8472792 | Butt | Jun 2013 | B2 |
| 8484368 | Robert et al. | Jul 2013 | B2 |
| 8681866 | Jia | Mar 2014 | B1 |
| 8683066 | Hurst et al. | Mar 2014 | B2 |
| 8782268 | Pyle et al. | Jul 2014 | B2 |
| 8819116 | Tomay et al. | Aug 2014 | B1 |
| 8849950 | Stockhammer et al. | Sep 2014 | B2 |
| 8918636 | Kiefer | Dec 2014 | B2 |
| 8964977 | Ziskind et al. | Feb 2015 | B2 |
| 9025659 | Soroushian et al. | May 2015 | B2 |
| 9038116 | Knox et al. | May 2015 | B1 |
| 9049497 | Chen et al. | Jun 2015 | B2 |
| 9667684 | Ziskind et al. | May 2017 | B2 |
| 10212486 | Chan et al. | Feb 2019 | B2 |
| 10225299 | van Der Schaar et al. | Mar 2019 | B2 |
| 10225588 | Kiefer et al. | Mar 2019 | B2 |
| 10264255 | Naletov et al. | Apr 2019 | B2 |
| 10321168 | van Der Schaar et al. | Jun 2019 | B2 |
| 10341698 | Kiefer et al. | Jul 2019 | B2 |
| 10368096 | Braness et al. | Jul 2019 | B2 |
| 10382785 | Braness et al. | Aug 2019 | B2 |
| 10437896 | Soroushian et al. | Oct 2019 | B2 |
| 10462537 | Shivadas et al. | Oct 2019 | B2 |
| 10856020 | Kiefer et al. | Dec 2020 | B2 |
| 20010021276 | Zhou | Sep 2001 | A1 |
| 20010052077 | Fung et al. | Dec 2001 | A1 |
| 20010052127 | Seo et al. | Dec 2001 | A1 |
| 20020048450 | Zetts | Apr 2002 | A1 |
| 20020067432 | Kondo et al. | Jun 2002 | A1 |
| 20020135607 | Kato et al. | Sep 2002 | A1 |
| 20020141503 | Kobayashi et al. | Oct 2002 | A1 |
| 20020154779 | Asano et al. | Oct 2002 | A1 |
| 20020159528 | Graziani et al. | Oct 2002 | A1 |
| 20020164024 | Arakawa et al. | Nov 2002 | A1 |
| 20020169971 | Asano et al. | Nov 2002 | A1 |
| 20030002577 | Pinder | Jan 2003 | A1 |
| 20030044080 | Frishman et al. | Mar 2003 | A1 |
| 20030053541 | Sun et al. | Mar 2003 | A1 |
| 20030063675 | Kang et al. | Apr 2003 | A1 |
| 20030077071 | Lin et al. | Apr 2003 | A1 |
| 20030078891 | Capitant | Apr 2003 | A1 |
| 20030135742 | Evans | Jul 2003 | A1 |
| 20030142594 | Tsumagari et al. | Jul 2003 | A1 |
| 20030206717 | Yogeshwar et al. | Nov 2003 | A1 |
| 20030210821 | Yogeshwar et al. | Nov 2003 | A1 |
| 20040001594 | Krishnaswamy et al. | Jan 2004 | A1 |
| 20040022391 | Obrien | Feb 2004 | A1 |
| 20040028227 | Yu | Feb 2004 | A1 |
| 20040037421 | Truman | Feb 2004 | A1 |
| 20040047592 | Seo et al. | Mar 2004 | A1 |
| 20040047607 | Seo et al. | Mar 2004 | A1 |
| 20040076237 | Kadono et al. | Apr 2004 | A1 |
| 20040084035 | Newton | May 2004 | A1 |
| 20040093494 | Nishimoto et al. | May 2004 | A1 |
| 20040101059 | Joch et al. | May 2004 | A1 |
| 20040101142 | Nasypny | May 2004 | A1 |
| 20040107356 | Shamoon et al. | Jun 2004 | A1 |
| 20040243488 | Yamamoto et al. | Dec 2004 | A1 |
| 20050013494 | Srinivasan et al. | Jan 2005 | A1 |
| 20050015509 | Sitaraman et al. | Jan 2005 | A1 |
| 20050063541 | Candelore | Mar 2005 | A1 |
| 20050076232 | Kawaguchi | Apr 2005 | A1 |
| 20050132208 | Hug et al. | Jun 2005 | A1 |
| 20050144468 | Northcutt | Jun 2005 | A1 |
| 20050177741 | Chen et al. | Aug 2005 | A1 |
| 20050243912 | Kwon et al. | Nov 2005 | A1 |
| 20050265555 | Pippuri | Dec 2005 | A1 |
| 20060013568 | Rodriguez | Jan 2006 | A1 |
| 20060020825 | Grab | Jan 2006 | A1 |
| 20060059223 | Klemets et al. | Mar 2006 | A1 |
| 20060165163 | Burazerovic et al. | Jul 2006 | A1 |
| 20060165233 | Nonaka et al. | Jul 2006 | A1 |
| 20070047645 | Takashima | Mar 2007 | A1 |
| 20070067472 | Maertens et al. | Mar 2007 | A1 |
| 20070067622 | Nakano et al. | Mar 2007 | A1 |
| 20070083467 | Lindahl et al. | Apr 2007 | A1 |
| 20070180051 | Kelly et al. | Aug 2007 | A1 |
| 20070201695 | Saarikivi | Aug 2007 | A1 |
| 20070256141 | Nakano et al. | Nov 2007 | A1 |
| 20080008319 | Poirier | Jan 2008 | A1 |
| 20080086570 | Dey et al. | Apr 2008 | A1 |
| 20080101718 | Yang et al. | May 2008 | A1 |
| 20080131078 | Jeong et al. | Jun 2008 | A1 |
| 20080137847 | Candelore et al. | Jun 2008 | A1 |
| 20080162949 | Sato et al. | Jul 2008 | A1 |
| 20080219449 | Ball et al. | Sep 2008 | A1 |
| 20080229025 | Plamondon | Sep 2008 | A1 |
| 20080271102 | Kienzle et al. | Oct 2008 | A1 |
| 20080320160 | Sitaraman et al. | Dec 2008 | A1 |
| 20090010622 | Yahata et al. | Jan 2009 | A1 |
| 20090013195 | Ochi et al. | Jan 2009 | A1 |
| 20090077143 | Macy, Jr. | Mar 2009 | A1 |
| 20090106082 | Senti et al. | Apr 2009 | A1 |
| 20090249081 | Zayas | Oct 2009 | A1 |
| 20090268905 | Matsushima et al. | Oct 2009 | A1 |
| 20090282162 | Mehrotra et al. | Nov 2009 | A1 |
| 20090307258 | Priyadarshi et al. | Dec 2009 | A1 |
| 20090310819 | Hatano | Dec 2009 | A1 |
| 20100142915 | Mcdermott et al. | Jun 2010 | A1 |
| 20100189183 | Gu et al. | Jul 2010 | A1 |
| 20100235528 | Bocharov et al. | Sep 2010 | A1 |
| 20110010466 | Fan et al. | Jan 2011 | A1 |
| 20110058675 | Brueck et al. | Mar 2011 | A1 |
| 20110082914 | Robert et al. | Apr 2011 | A1 |
| 20110103374 | Lajoie et al. | May 2011 | A1 |
| 20110145858 | Philpott et al. | Jun 2011 | A1 |
| 20110173345 | Knox et al. | Jul 2011 | A1 |
| 20110179185 | Wang et al. | Jul 2011 | A1 |
| 20110197261 | Dong et al. | Aug 2011 | A1 |
| 20110246661 | Manzari et al. | Oct 2011 | A1 |
| 20110296048 | Knox et al. | Dec 2011 | A1 |
| 20110314130 | Strasman | Dec 2011 | A1 |
| 20120005312 | Mcgowan et al. | Jan 2012 | A1 |
| 20120042090 | Chen et al. | Feb 2012 | A1 |
| 20120047542 | Lewis et al. | Feb 2012 | A1 |
| 20120110120 | Willig et al. | May 2012 | A1 |
| 20120147958 | Ronca et al. | Jun 2012 | A1 |
| 20120167132 | Mathews et al. | Jun 2012 | A1 |
| 20120257678 | Zhou et al. | Oct 2012 | A1 |
| 20120260277 | Kosciewicz | Oct 2012 | A1 |
| 20120311094 | Biderman | Dec 2012 | A1 |
| 20120311174 | Bichot et al. | Dec 2012 | A1 |
| 20120331167 | Hunt | Dec 2012 | A1 |
| 20130013803 | Bichot et al. | Jan 2013 | A1 |
| 20130080267 | McGowan | Mar 2013 | A1 |
| 20130159633 | Lilly | Jun 2013 | A1 |
| 20130179589 | McCarthy et al. | Jul 2013 | A1 |
| 20140019592 | Arana et al. | Jan 2014 | A1 |
| 20140096269 | Amidei et al. | Apr 2014 | A1 |
| 20140140253 | Lohmar et al. | May 2014 | A1 |
| 20140149557 | Lohmar et al. | May 2014 | A1 |
| 20150281310 | Ziskind et al. | Oct 2015 | A1 |
| 20150288530 | Oyman | Oct 2015 | A1 |
| 20170214947 | Kiefer et al. | Jul 2017 | A1 |
| 20170238030 | Ziskind et al. | Aug 2017 | A1 |
| 20180007451 | Shivadas et al. | Jan 2018 | A1 |
| 20180060543 | Grab et al. | Mar 2018 | A1 |
| 20180262757 | Naletov et al. | Sep 2018 | A1 |
| 20180285261 | Mandal et al. | Oct 2018 | A1 |
| 20180332094 | Braness | Nov 2018 | A1 |
| 20190020907 | Kiefer et al. | Jan 2019 | A1 |
| 20190020928 | Chan et al. | Jan 2019 | A1 |
| 20190045219 | Braness et al. | Feb 2019 | A1 |
| 20190045220 | Braness et al. | Feb 2019 | A1 |
| 20190045234 | Kiefer et al. | Feb 2019 | A1 |
| 20190158553 | Van Der Schaar et al. | May 2019 | A1 |
| 20190297364 | van Der Schaar et al. | Sep 2019 | A1 |
| 20190342587 | Kiefer et al. | Nov 2019 | A1 |
| 20190356928 | Braness et al. | Nov 2019 | A1 |
| Number | Date | Country |
|---|---|---|
| 2237293 | Jul 1997 | CA |
| 2823829 | Jan 2019 | CA |
| 105072454 | Apr 2019 | CN |
| 0818111 | Jan 1998 | EP |
| 0818111 | Jan 2000 | EP |
| 1453319 | Sep 2004 | EP |
| 1283640 | Oct 2006 | EP |
| 2180664 | Apr 2010 | EP |
| 2360923 | Aug 2011 | EP |
| 2661875 | Nov 2019 | EP |
| 2661696 | May 2020 | EP |
| 3697096 | Aug 2020 | EP |
| 3700219 | Aug 2020 | EP |
| 3742740 | Nov 2020 | EP |
| 3975574 | Mar 2022 | EP |
| 2004328218 | Nov 2004 | JP |
| 2005504480 | Feb 2005 | JP |
| 2005286881 | Oct 2005 | JP |
| 2006521035 | Sep 2006 | JP |
| 2009522887 | Jun 2009 | JP |
| 6453291 | Jan 2019 | JP |
| 6657313 | Feb 2020 | JP |
| 202080551 | May 2020 | JP |
| 20040039852 | May 2004 | KR |
| 20060106250 | Oct 2006 | KR |
| 20070005699 | Jan 2007 | KR |
| 20100106418 | Oct 2010 | KR |
| 101917763 | Nov 2018 | KR |
| 101988877 | Jun 2019 | KR |
| 102072839 | Jan 2020 | KR |
| 102122189 | Jun 2020 | KR |
| 2328040 | Jun 2008 | RU |
| 2000049762 | Aug 2000 | WO |
| 2000049763 | Aug 2000 | WO |
| 2003047262 | Jun 2003 | WO |
| 2004012378 | Feb 2004 | WO |
| 2004100158 | Nov 2004 | WO |
| 2005008385 | Jan 2005 | WO |
| 2005015935 | Feb 2005 | WO |
| 2005109224 | Nov 2005 | WO |
| 2009006302 | Jan 2009 | WO |
| 2009070770 | Jun 2009 | WO |
| 2009109976 | Sep 2009 | WO |
| 2010005673 | Jan 2010 | WO |
| 2011086190 | Jul 2011 | WO |
| 2011087449 | Jul 2011 | WO |
| 2011101371 | Aug 2011 | WO |
| Entry |
|---|
| Declaration of Patrick McDaniel, Ph.D., Inter Partes Review of U.S. Pat. No. 10,225,588, IPR filed Feb. 15, 2020, 211 pgs. |
| First Amended Complaint for Patent Infringement, DivX, LLC v. Netflix, Inc., No. 2:19-cv-1602-PSG, Am. Compl. (C.D. Cal Aug. 21, 2019), 229 pgs., IPR filed Feb. 15, 2020. |
| Petition for Inter Partes Review of U.S. Pat. No. 10,225,588, IPR2020-00558, 96 pgs., IPR filed Feb. 15, 2020. |
| Power of Attorney—Hulu, LLC (IPR2020-00558), 4 pgs., IPR filed Feb. 15, 2020. |
| Power of Attorney—Netflix, Inc. (IPR2020-00558), 4 pgs., IPR filed Feb. 15, 2020. |
| U.S. Appl. No. 61/530,305, filed Sep. 1, 2011, 6 pgs. |
| Written Opinion for International Application No. PCT/US2007/063950 filed Mar. 14, 2007, report completed Mar. 1, 2008; report dated Mar. 19, 2008, 6 pgs. |
| “DVD-MPeg differences”, printed Jul. 2, 2009 from http://dvd.sourceforge.net/dvdinfo/dvdmpeg.html, 1 pg. |
| “HTTP Live Streaming on the Leading Media CDN”, Akamai website, retrieved from http://www.akamai.com/html/resources/http-live-streaming.html, 2015, accessed May 11, 2015, 5 pgs. |
| “Media Delivery Solutions for Streaming Video and Software Delivery”, Akamai website, Retrieved from http://www.akamai.com/html/solutions/media-delivery-solutions.html, 2015, Accessed May 11, 2015, 5 pgs. |
| “Microsoft Announces Breakthrough Technology Enabling Simple Access to Broad Set of Digital Content, Including Music, Games, Video, Ring Tones and Pictures”, Microsoft, Feb. 12, 2017, Retrieved from https://news.microsoft.com/2007/02/12/microsoft-announces-breakthrough-technology-enabling-simple-access-to-broad-set-of-digital-content-including-music-games-video-ring-tones-and-pictures/, 5 pgs. |
| “SDMI Secure Digital Music Initiative”, SDMI Portable Device Specification, Part 1, Version 1.0, Jul. 8, 1999, pp. 1-35. |
| “Supplementary European Search Report for Application No. EP 10834935, International Filing Date Nov. 15, 2010, Search Completed May 27, 2014, 9 pgs.” |
| De Cock et al., “Complexity-Based Consistent-Quality Encoding in the Cloud”, IEEE International Conference on Image Processing (ICIP), Date of Conference Sep. 25-28, 2016, Phoenix, AZ, pp. 1484-1488. |
| Lin et al., “Multipass Encoding for Reducing Pulsing Artifacts in Cloud Based Video Transcoding”, IEEE International Conference on Image Processing (ICIP), Date of Conference Sep. 27, 30, 2015, Quebec City, QC, Canada, pp. 907-911. |
| Sheu, Tsang-Ling et al., “Dynamic layer adjustments for SVC segments in P2P streaming networks”, Computer Symposium (ICS), 2010, 2010 International, Tainan, Taiwan, R.O.C., pp. 793-798. |
| Unknown, “MPEG-4 Video Encoder: Based on International Standard ISO/IEC 14496-2”, Patni Computer Systems, Ltd., publication date unknown, 15 pgs. |
| Prosecution File History for U.S. Appl. No. 13/340,623 to Kiefer et al. (“Kiefer”), IPR filed Feb. 15, 2020, 1249 pgs., presented in 6 parts. |
| Prosecution File History for U.S. Pat. No. 10,225,588, IPR filed Feb. 15, 2020, 2937 pgs., presented in 29 parts. |
| Decision Granting Institution of Inter Partes Review 35 U.S.C. § 314, IPR2020-00558, U.S. Pat. No. 10,225,588, 46 pgs. |
| Extended European Search Report for European Application No. 19211286.0, Search completed Jul. 3, 2020, dated Jul. 13, 2020, 9 Pgs. |
| Extended European Search Report for European Application No. 19211291.0, Search completed Jul. 6, 2020, dated Jul. 14, 2020, 12 Pgs. |
| Extended European Search Report for European Application No. 20172313.7 Search completed Aug. 19, 2020 dated Aug. 27, 2020, 11 Pgs. |
| Information Technology—MPEG Systems Technologies—Part 7: Common Encryption in ISO Base Media File Format Files (ISO/IEC 23001-7), Apr. 2015, 24 pgs. |
| ISO/IEC 14496-12 Information technology—Coding of audio-visual objects—Part 12: ISO base media file format, Feb. 2004 (“MPEG-4 Part 12 Standard”), 62 pgs. |
| ISO/IEC 14496-12:2008(E) Informational Technology—Coding of Audio-Visual Objects Part 12: ISO Base Media File Format, Oct. 2008, 120 pgs. |
| ISO/IEC FCD 23001-6 MPEG systems technologies Part 6: Dynamic adaptive streaming over HTTP (DASH), Jan. 28, 2011, 86 pgs. |
| Microsoft Corporation, Advanced Systems Format (ASF) Specification, Revision 01.20.03, Dec. 2004, 121 pgs. |
| MPEG-DASH presentation at Streaming Media West 2011, Nov. 2011, 14 pgs. |
| Pomelo, LLC Tech Memo, Analysis of Netflix's Security Framework for ‘Watch Instantly’ Service, Mar.-Apr. 2009, 18 pgs. |
| Server-Side Stream Repackaging (Streaming Video Technologies Panorama, Part 2), Jul. 2011, 15 pgs. |
| Text of ISO/IEC 23001-6: Dynamic adaptive streaming over HTTP (DASH), Oct. 2010, 71 pgs. |
| Universal Mobile Telecommunications System (UMTS), ETSI TS 126 233 V9.1.0 (Jun. 2011) 3GPP TS 26.233 version 9.1.0 Release 9, 18 pgs. |
| Universal Mobile Telecommunications Systems (UMTS); ETSI TS 126 244 V9.4.0 (May 2011) 3GPP TS 26.244 version 9.4.0 Release 9, 58 pgs. |
| “Apple HTTP Live Streaming specification”, Aug. 2017, 60 pgs. |
| “Data Encryption Decryption using AES Algorithm, Key and Salt with Java Cryptography Extension”, Available at https://www.digizol.com/2009/10/java-encrypt-decrypt-jce-salt.html, October 200, 6 pgs. |
| “Delivering Live and On-Demand Smooth Streaming”, Microsoft Silverlight, 2009, 28 pgs. |
| “HTTP Based Adaptive Streaming over HSPA”, Apr. 2011, 73 pgs. |
| “HTTP Live Streaming”, Mar. 2011, 24 pgs. |
| “HTTP Live Streaming”, Sep. 2011, 33 pgs. |
| “Java Cryptography Architecture API Specification & Reference”, Available at https://docs.oracle.com/javase/1.5.0/docs/guide/security/CryptoSpec.html, Jul. 25, 2004, 68 pgs. |
| “Java Cryptography Extension, javax.crypto.Cipher class”, Available at https://docs.oracle.com/javase/1.5.0/docs/api/javax/crypto/Cipher.html, 2004, 24 pgs. |
| “JCE Encryption—Data Encryption Standard (DES) Tutorial”, Available at https://mkyong.com/java/jce-encryption-data-encryption-standard-des-tutorial/, Feb. 25, 2009, 2 pgs. |
| “Live and On-Demand Video with Silverlight and IIS Smooth Streaming”, Microsoft Silverlight, Windows Server Internet Information Services 7.0, Feb. 2010, 15 pgs. |
| “Microsoft Smooth Streaming specification”, Jul. 22, 2013, 56 pgs. |
| “Single-Encode Streaming for Multiple Screen Delivery”, Telestream Wowza Media Systems, 2009, 6 pgs. |
| “The MPEG-DASH Standard for Multimedia Streaming Over the Internet”, IEEE MultiMedia, vol. 18, No. 4, 2011, 7 pgs. |
| “Windows Media Player 9”, Microsoft, Mar. 23, 2017, 3 pgs. |
| Abomhara et al., “Enhancing Selective Encryption for H.264/AVC Using Advanced Encryption Standard”, International Journal of computer Theory and Engineering, Apr. 2010, vol. 2, No. 2, pp. 223-229. |
| Alattar et al., A.M., “Improved selective encryption techniques for secure transmission of MPEG video bit-streams”, In Proceedings 1999 International Conference on Image Processing (Cat. 99CH36348), vol. 4, IEEE, 1999, pp. 256-260. |
| Antoniou et al., “Adaptive Methods for the Transmission of Video Streams in Wireless Networks”, 2015, 50 pgs. |
| Apostolopoulos et al.,“Secure Media Streaming and Secure Transcoding”, Multimedia Security Technologies for Digital Rights Management, 2006, 33 pgs. |
| Asai et al., “Essential Factors for Full-Interactive VOD Server: Video File System, Disk Scheduling, Network”, Proceedings of Globecom '95, Nov. 14-16, 1995, 6 pgs. |
| Beker et al., “Cipher Systems, The Protection of Communications”, 1982, 40 pgs. |
| Bocharov et al, Portable Encoding of Audio-Video Objects, The Protected Interoperable File Format (PIFF), Microsoft Corporation, First Edition Sep. 8, 2009, 30 pgs. |
| Bulterman et al., “Synchronized Multimedia Integration Language (SMIL 3.0)”, W3C Recommendation, Dec. 1, 2008, https://www.w3.org/TR/2008/REC-SMIL3-20081201/, 321 pgs. (presented in five parts). |
| Cahill et al., “Locally Adaptive Deblocking Filter for Low Bit Rate Video”, Proceedings 2000 International Conference on Image Processing, Sep. 10-13, 2000, Vancouver, BC, Canada, 4 pgs. |
| Candelore, U.S. Appl. No. 60/372,901, filed Apr. 17, 2002, 5 pgs. |
| Chaddha et al., “A Frame-work for Live Multicast of Video Streams over the Internet”, Proceedings of 3rd IEEE International Conference on Image Processing, Sep. 19, 1996, Lausanne, Switzerland, 4 pgs. |
| Cheng, “Partial Encryption for Image and Video Communication”, Thesis, Fall 1998, 95 pgs. |
| Cheng et al., “Partial encryption of compressed images and videos”, IEEE Transactions on Signal Processing, vol. 48, No. 8, Aug. 2000, 33 pgs. |
| Cheung et al., “On the Use of Destination Set Grouping to Improve Fairness in Multicast Video Distribution”, Proceedings of IEEE INFOCOM'96, Conference on Computer Communications, vol. 2, IEEE, 1996, 23 pgs. |
| Collet, “Delivering Protected Content, An Approach for Next Generation Mobile Technologies”, Thesis, 2010, 84 pgs. |
| Diamantis et al., “Real Time Video Distribution using Publication through a Database”, Proceedings SIBGRAPI'98. International Symposium on Computer Graphics, Image Processing, and Vision (Cat. No. 98EX237), Oct. 1990, 8 pgs. |
| Dworkin, “Recommendation for Block Cipher Modes of Operation: Methods and Techniques”, NIST Special Publication 800-38A, 2001, 66 pgs. |
| Fang et al., “Real-time deblocking filter for MPEG-4 systems”, Asia-Pacific Conference on Circuits and Systems, Oct. 28-31, 2002, Bail, Indonesia, 4 pgs. |
| Fielding et al., “Hypertext Transfer Protocol—HTTP1.1”, Network Working Group, RFC 2616, Jun. 1999, 114 pgs. |
| Fukuda et al., “Reduction of Blocking Artifacts by Adaptive DCT Coefficient Estimation in Block-Based Video Coding”, Proceedings 2000 International Conference on Image Processing, Sep. 10-13, 2000, Vancouver, BC, Canada, 4 pgs. |
| Huang, U.S. Pat. No. 7,729,426, U.S. Appl. No. 11/230,794, filed Sep. 20, 2005, 143 pgs. |
| Huang et al., “Adaptive MLP post-processing for block-based coded images”, IEEE Proceedings—Vision, Image and Signal Processing, vol. 147, No. 5, Oct. 2000, pp. 463-473. |
| Huang et al., “Architecture Design for Deblocking Filter in H.264/JVT/AVC”, 2003 International Conference on Multimedia and Expo., Jul. 6-9, 2003, Baltimore, MD, 4 pgs. |
| Jain et al., U.S. Appl. No. 61/522,623, filed Aug. 11, 2011, 44 pgs. |
| Jung et al., “Design and Implementation of an Enhanced Personal Video Recorder for DTV”, IEEE Transactions on Consumer Electronics, vol. 47, No. 4, Nov. 2001, 6 pgs. |
| Kalva, Hari, “Delivering MPEG-4 Based Audio-Visual Services”, 2001, 113 pgs. |
| Kang et al., “Access Emulation and Buffering Techniques for Steaming of Non-Stream Format Video Files”, IEEE Transactions on Consumer Electronics, vol. 43, No. 3, Aug. 2001, 7 pgs. |
| Kim et al, “A Deblocking Filter with Two Separate Modes in Block-based Video Coding”, IEEE transactions on circuits and systems for video technology, vol. 9, No. 1, 1999, pp. 156-160. |
| Kim et al., “Tree-Based Group Key Agreement”, Feb. 2004, 37 pgs. |
| Laukens, “Adaptive Streaming—A Brief Tutorial”, EBU Technical Review, 2011, 6 pgs. |
| Legault et al., “Professional Video Under 32-bit Windows Operating Systems”, SMPTE Journal, vol. 105, No. 12, Dec. 1996, 10 pgs. |
| Li et al., “Layered Video Multicast with Retransmission (LVMR): Evaluation of Hierarchical Rate Control”, Proceedings of IEEE INFOCOM'98, the Conference on Computer Communications. Seventeenth Annual Joint Conference of the IEEE Computer and Communications Societies. Gateway to the 21st Century, Cat. No. 98, vol. 3, 1998, 26 pgs. |
| List et al., “Adaptive deblocking filter”, IEEE transactions on circuits and systems for video technology, vol. 13, No. 7, Jul. 2003, pp. 614-619. |
| Massoudi et al., “Overview on Selective Encryption of Image and Video Challenges and Perspectives”, EURASIP Journal on Information Security, Nov. 2008, 18 pgs. |
| McCanne et al., “Receiver-driven Layered Multicast”, Conference proceedings on Applications, technologies, architectures, and protocols for computer communications, Aug. 1996, 14 pgs. |
| Meier, “Reduction of Blocking Artifacts in Image and Video Coding”, IEEE Transactions on Circuits and Systems for Video Technology, vol. 9, No. 3, Apr. 1999, pp. 490-500. |
| Newton et al., “Preserving Privacy by De-identifying Facial Images”, Carnegie Mellon University School of Computer Science, Technical Report, CMU-CS-03-119, Mar. 2003, 26 pgs. |
| O'Brien, U.S. Appl. No. 60/399,846, filed Jul. 30, 2002, 27 pgs. |
| O'Rourke, “Improved Image Decompression for Reduced Transform Coding Artifacts”, IEEE Transactions on Circuits and Systems for Video Technology, vol. 5, No. 6, Dec. 1995, pp. 490-499. |
| Park et al., “A postprocessing method for reducing quantization effects in low bit-rate moving picture coding”, IEEE Transactions on Circuits and Systems for Video Technology, vol. 9, No. 1, Feb. 1999, pp. 161-171. |
| Richardson, “H.264 and MPEG-4 Video Compression”, Wiley, 2003, 306 pgs. (presented in 2 parts). |
| Sima et al., “An Efficient Architecture for Adaptive Deblocking Filter of H.264 AVC Video Coding”, IEEE Transactions on Consumer Electronics, vol. 50, No. 1, Feb. 2004, pp. 292-296. |
| Spanos et al., “Performance Study of a Selective Encryption Scheme for the Security of Networked, Real-Time Video”, Proceedings of the Fourth International Conference on Computer Communications and Networks, IC3N'95, Sep. 20-23, 1995, Las Vegas, NV, pp. 2-10. |
| Srinivasan et al., “Windows Media Video 9: overview and applications”, Signal Processing: Image Communication, 2004, 25 pgs. |
| Stockhammer, “Dynamic Adaptive Streaming over HTTP-Standards and Design Principles”, Proceedings of the second annual ACM conference on Multimedia, Feb. 2011, pp. 133-145. |
| Timmerer et al., “HTTP Streaming of MPEG Media”, Proceedings of Streaming Day, 2010, 4 pgs. |
| Tiphaigne et al., “A Video Package for Torch”, Jun. 2004, 46 pgs. |
| Trappe et al., “Key Management and Distribution for Secure Multimedia Multicast”, IEEE Transaction on Multimedia, vol. 5, No. 4, Dec. 2003, pp. 544-557. |
| Van Deursen et al., “On Media Delivery Protocols in the Web”, 2010 IEEE International Conference on Multimedia and Expo, Jul. 19-23, 2010, 6 pgs. |
| Ventura, Guillermo Albaida, “Streaming of Multimedia Learning Objects”, AG Integrated Communication System, Mar. 2003, 101 pgs. |
| Waggoner, “Compression for Great Digital Video”, 2002, 184 pgs. |
| Watanabem et al., “MPEG-2 decoder enables DTV trick plays”, esearcher System LSI Development Lab, Fujitsu Laboratories Ltd., Kawasaki, Japan, Jun. 2001, 2 pgs. |
| Wiegand, “Joint Video Team (JVT) of ISO/IEC MPEG and ITU-T VCEG”, Jan. 2002, 70 pgs. |
| Willig et al., U.S. Appl. No. 61/409,285, filed Nov. 2, 2010, 43 pgs. |
| Yang et al., “Projection-Based Spatially Adaptive Reconstruction of Block-Transform Compressed Images”, IEEE Transactions on Image Processing, vol. 4, No. 7, Jul. 1995, pp. 896-908. |
| Yang et al., “Regularized Reconstruction to Reduce Blocking Artifacts of Block Discrete Cosine Transform Compressed Images”, IEEE Transactions on Circuits and Systems for Video Technology, vol. 3, No. 6, Dec. 1993, pp. 421-432. |
| Yu et al., “Video deblocking with fine-grained scalable complexity for embedded mobile computing”, Proceedings 7th International Conference on Signal Processing, Aug. 31-Sep. 4, 2004, pp. 1173-1178. |
| Zakhor, “Iterative Procedures for Reduction of Blocking Effects in Transform Image Coding”, IEEE Transactions on Circuits and Systems for Video Technology, vol. 2, No. 1, Mar. 1992, pp. 91-95. |
| Hunt, “Encoding for streaming”, The Netflix Blog, Nov. 6, 2008, printed from https://web.archive.org/web/20081216044437/http:/blog.netflix.com/2008/11/encoding-for-streaming.htm., retrieved on Feb. 8, 2022, 28 pgs. |
| Pereira, “Security on Over the Top TV Services”, Thesis, Nov. 2011, 114 pgs. |
| Stockhammer, “MPEG's Dynamic Adaptive Streaming over HTTP (DASH)—An Enabling Standard for Internet TV”, Qualcomm Incorporated, Apr. 11, 2015, Retrieved from the Internet, https://www.w3.org/2011/09/webtv/slides/W3C-Workshop.pdf, 30 pgs. |
| 3GPP TS 26.247, V10.1.0, 3rd Generation Partnership Project; Technical Specification Group Services and System Aspects Transparent end-to-end Packet-switches Streaming Services (PSS); Nov. 2011, 112 pages. |
| Chinese Patent Application 201180060590.1 office action dated Aug. 6, 2015, 11 pgs. |
| Examination report for GB1308663.2, dated May 18, 2016, 3 pgs. |
| Extended European Search Report for European Application No. 21208230.9, Search completed Feb. 18, 2022, dated Mar. 1, 2022, 15 Pgs. |
| Filed Application and Filing Receipt for U.S. Appl. No. 61/359,748, Application filed Jun. 29, 2010, Receipt mailed Jul. 13, 2010, 38 pages. |
| Great Britain Application GB1308663.2 search report dated Jan. 5, 2017, 1 pg. |
| ISO/IEC 14496-12 Information technology—Coding of audio-visual objects —Part 12: ISO base media file format, Amendment 3: DASH support and RTP reception hint track processing, 2011, 44 pgs. |
| ISO/IEC CD 23001-6 MPEG systems technologies Part 6: Dynamic adaptive streaming over HTTP (DASH), Oct. 15, 2010, 70 pgs. |
| ISO/IEC DIS 23009-1, Information technology—Dynamic adaptive streaming over HTTP (DASH)—Part 1: Media presentation description and segment formats, dated Aug. 30, 2011, 132 pgs. |
| ISO/IEC JTC1/SC29/WG11, MPEG/M18620, Oct. 2010, Text of ISO/IEC 23001-6: Dynamic adaptive streaming over HTTP (DASH), 72 pgs. |
| ISO/IEC JTC1/SC29/WG11, MPEG/N11578, Text of ISO/IEC 23001-6: Dynamic adaptive streaming over HTTP (DASH), Oct. 2010, 70 pgs. |
| ISO/IEC JTC1/SC29-WG11—Coding of Moving Pictures and Audio, MPEG2010/M18692, Jan. 2010, 10 pgs. |
| Search Report for Canadian patent application 2,816,621, dated Oct. 30, 2014, 6 pgs. |
| Search report for European Patent Application 11838186.2, dated Jul. 13, 2017, 6 pgs. |
| “Pixel aspect ratio—Wikipedia”, Nov. 24, 2010, pp. 1-8. |
| Number | Date | Country | |
|---|---|---|---|
| 20200059706 A1 | Feb 2020 | US |
| Number | Date | Country | |
|---|---|---|---|
| Parent | 15651817 | Jul 2017 | US |
| Child | 16665652 | US | |
| Parent | 14810345 | Jul 2015 | US |
| Child | 15651817 | US | |
| Parent | 13905852 | May 2013 | US |
| Child | 14810345 | US |