Adaptive bitrate management for streaming media over packet networks
DCFirst Claim
Patent Images
1. A method comprising:
- providing pseudo-streaming media data for transmission to a terminal, wherein the pseudo-streaming media data includes one or more sequence numbers and corresponds to one or more timestamps;
causing a table to store an association between the one or more sequence numbers and the one or more timestamps;
receiving one or more transport control protocol (TCP) acknowledgments from a terminal, wherein a TCP acknowledgment of the one or more received TCP acknowledgments includes a sequence number of the one or more sequence numbers and corresponds to a certain time;
acquiring the timestamp from the table using the sequence number of the TCP acknowledgement;
estimating one or more network conditions of a media network based at least in part on a comparison between the certain time and the acquired timestamp;
determining an optimal audio bitrate and an optimal video bitrate using the estimated one or more network conditions;
receiving media data that includes audio media data and video media data;
encoding the audio media data using the optimal audio bitrate;
encoding the video media data using the optimal video bitrate; and
providing the encoded audio media data and the encoded video media data for transmission to the terminal.
8 Assignments
Litigations
0 Petitions
Accused Products
Abstract
A method including providing pseudo-streaming media data to a terminal; receiving a transport control protocol (TCP) acknowledgement from the terminal; estimating one or more network conditions of a network based at least in part on the TCP acknowledgement; determining an optimal session bitrate based on the estimated one or more network conditions; and providing pseudo-streaming media data to the terminal based on the optimal session bitrate.
79 Citations
22 Claims
-
1. A method comprising:
-
providing pseudo-streaming media data for transmission to a terminal, wherein the pseudo-streaming media data includes one or more sequence numbers and corresponds to one or more timestamps; causing a table to store an association between the one or more sequence numbers and the one or more timestamps; receiving one or more transport control protocol (TCP) acknowledgments from a terminal, wherein a TCP acknowledgment of the one or more received TCP acknowledgments includes a sequence number of the one or more sequence numbers and corresponds to a certain time; acquiring the timestamp from the table using the sequence number of the TCP acknowledgement; estimating one or more network conditions of a media network based at least in part on a comparison between the certain time and the acquired timestamp; determining an optimal audio bitrate and an optimal video bitrate using the estimated one or more network conditions; receiving media data that includes audio media data and video media data; encoding the audio media data using the optimal audio bitrate; encoding the video media data using the optimal video bitrate; and providing the encoded audio media data and the encoded video media data for transmission to the terminal. - View Dependent Claims (2)
-
-
3. A method comprising:
-
receiving media data that includes audio media data and video media data; receiving one or more transport control protocol (TCP) acknowledgments from a terminal; estimating one or more network conditions of a media network using the one or more TCP acknowledgments; determining an optimal session bitrate using the estimated one or more network conditions; allocating the optimal session bitrate between the audio media data and the video media data to produce the optimal audio bitrate and the optimal video bitrate; encoding the audio media data using the optimal audio bitrate; encoding the video media data using the optimal video bitrate; and providing the encoded audio media data and the encoded video media data for transmission to the terminal. - View Dependent Claims (4, 5, 6, 7, 8)
-
-
9. A terminal including one or more processors and a memory, the terminal comprising:
-
a buffer configured to receive pseudo-streaming media data packets provided by an adaptive bitrate manager over a network; and a media player configured to receive pseudo-streaming media packets and to provide one or more transport control protocol (TCP) acknowledgments to the adaptive bitrate manager, wherein the adaptive bitrate manager is configured to provide the pseudo-streaming media packets to the terminal, wherein the pseudo-streaming media data includes one or more sequence numbers and corresponds to one or more timestamps, to cause a table to store an association between the one or more sequence numbers and the one or more timestamps, to receive the one or more TCP acknowledgments, wherein a TCP acknowledgment of the one or more received TCP acknowledgments includes a sequence number of the one or more sequence numbers and corresponds to a certain time, to acquire the timestamp from the table using the sequence number of the TCP acknowledgement, to estimate one or more network conditions of the media network based at least in part on a comparison between the certain time and the acquired timestamp, to determine an optimal audio bitrate and an optimal video bitrate using the estimated one or more network conditions, to receive media data that includes audio media data and video media data, to encode the audio media data using the optimal audio bitrate, to encode the video media data using the optimal video bitrate, and to provide the encoded audio media data and the encoded video media data as media data packets to the terminal.
-
-
10. A system including one or more processors and a memory, the system comprising:
an adaptive bitrate manager configured to estimate one or more network conditions of a media network between the adaptive bitrate manager and a terminal using one or more received TCP acknowledgments and to acquire media data that includes audio media data and video media data, the adaptive bitrate manager further comprising; an adaptive bitrate controller configured to determine an optimal session bitrate using the estimated one or more network conditions, a bitrate splitter configured to acquire the optimal session bitrate and allocate the optimal session bitrate between the audio media data and the video media data to produce an optimal audio bitrate and an optimal video bitrate, and one or more encoders configured to; encode the audio media data using the optimal audio bitrate, encode the video media data using the optimal video bitrate, and provide the encoded audio media data and the encoded video media data for transmission to the terminal.
-
11. A system including one or more processors and a memory, the system comprising:
an adaptive bitrate manager configured to provide pseudo-streaming media data for transmission to a terminal, wherein the provided pseudo-streaming media data includes one or more sequence numbers and corresponds to one or more timestamps, to cause a table to store an association between the one or more sequence numbers and the one or more timestamps, to receive one or more TCP acknowledgments, wherein a TCP acknowledgment of the one or more received TCP acknowledgments includes a sequence number of the one or more sequence numbers and corresponds to a certain time, to acquire the timestamp from the table using the sequence number of the TCP acknowledgment, to estimate one or more network conditions of a media network based at least in part on a comparison between the certain time and the acquired timestamp, and to acquire media data that includes audio media data and video media data, the adaptive bitrate manager further comprising; a bitrate splitter configured to determine an optimal audio bitrate and an optimal video bitrate using the estimated one or more network conditions, and one or more encoders configured to; encode the audio media data using the optimal audio bitrate, encode the video media data using the optimal video bitrate, and provide the encoded audio media data and the encoded video media data for transmission to the terminal.
-
12. A non-transitory computer readable medium storing instructions that, when executed by an adaptive bitrate manager including one or more processors, cause the adaptive bitrate manager to perform a method for processing one or more TCP acknowledgments, the method comprising:
-
providing pseudo-streaming media data for transmission to a terminal, wherein the provided pseudo-streaming media data includes one or more sequence numbers and corresponds to one or more timestamps; causing a table to store an association between the one or more sequence numbers and the one or more timestamps; receiving one or more transport control protocol (TCP) acknowledgments from a terminal, wherein a TCP acknowledgment of the one or more received TCP acknowledgments includes a sequence number of the one or more sequence numbers and corresponds to a certain time; acquiring the timestamp from the table using the sequence number of the TCP acknowledgement; estimating one or more network conditions of a media network based at least in part on a comparison between the certain time and the acquired timestamp; determining an optimal audio bitrate and an optimal video bitrate using the estimated one or more network conditions; receiving media data that includes audio media data and video media data; encoding the audio media data using the optimal audio bitrate; encoding the video media data using the optimal video bitrate; and providing the encoded audio media data and the encoded video media data for transmission to the terminal. - View Dependent Claims (13)
-
-
14. A non-transitory computer readable medium storing instructions that, when executed by an adaptive bitrate manager including one or more processors, cause the adaptive bitrate manager to perform a method for processing one or more TCP acknowledgments, the method comprising:
-
receiving media data that includes audio media data and video media data; receiving one or more transport control protocol (TCP) acknowledgments from a terminal; estimating one or more network conditions of a media network using the one or more TCP acknowledgments; determining an optimal session bitrate using the estimated one or more network conditions; allocating the optimal session bitrate between the audio media data and the video media data to produce the optimal audio bitrate and the optimal video bitrate; encoding the audio media data using the optimal audio bitrate; encoding the video media data using the optimal video bitrate; and providing the encoded audio media data and the encoded video media data for transmission to the terminal. - View Dependent Claims (15, 16, 17, 18, 19)
-
-
20. A method comprising:
-
receiving media data that includes audio media data and video media data; receiving an optimal session bitrate; allocating the optimal session bitrate between the audio media data and the video media data to produce an optimal audio bitrate and an optimal video bitrate, wherein allocating the optimal session bitrate between audio and video media can involves allocating a higher bitrate for either the audio media or the video media over the other; encoding the audio media data using the optimal audio bitrate; encoding the video media data using the optimal video bitrate; multiplexing the encoded audio media data and the encoded video media data; and providing the multiplexed encoded audio and video media data for transmittal to a terminal.
-
-
21. A non-transitory computer readable storage medium storing instructions that, when executed by one or more computers, cause the one or more computers to perform a method for processing an optimal session bitrate, the method comprising:
-
receiving media data that includes audio media data and video media data; receiving the optimal session bitrate; allocating the optimal session bitrate between the audio media data and the video media data to produce an optimal audio bitrate and an optimal video bitrate, wherein allocating the optimal session bitrate between audio and video media can involves allocating a higher bitrate for either the audio media or the video media over the other; encoding the audio media data using the optimal audio bitrate; encoding the video media data using the optimal audio bitrate and the optimal video bitrate; multiplexing the encoded audio media data and the encoded video media data; and providing the multiplexed encoded audio and video media data for transmittal to a terminal.
-
-
22. A terminal including one or more processors and a memory, the terminal comprising:
-
a buffer configured to receive pseudo-streaming media data packets provided by an adaptive bitrate manager over a network; and a media player configured to receive pseudo-streaming media packets and to provide one or more transport control protocol (TCP) acknowledgments to the adaptive bitrate manager, wherein the adaptive bitrate manager is configured to receive media data that includes audio media data and video media data, to receive the one or more TCP acknowledgments, to estimate one or more network conditions of the media network using the one or more TCP acknowledgments, to determine an optimal session bitrate using the estimated one or more network conditions, to allocate the optimal session bitrate between the audio media data and the video media data to produce an optimal audio bitrate and an optimal video bitrate, to encode the audio media data using the optimal audio bitrate, to encode the video media data using the optimal video bitrate, and to provide the encoded audio media data and the encoded video media data for transmission as media data packets to the terminal.
-
Specification