System and process for controlling the coding bit rate of streaming media data employing a limited number of supported coding bit rates
First Claim
1. A computer-implemented process for controlling a coding bit rate of streaming media data being transmitted to a client from a server over a computer network, comprising using the server to perform the following process actions:
- generating a streaming media data stream which exhibits a coding bit rate supported by the server, and which after an initial startup period exhibits a coding bit rate related to a rate requested by the client;
computing parameters indicative of the state of an encoder buffer of the server, wherein said encoder buffer is used to stage portions of the streaming media data prior to transmission to the client, and wherein for each coding bit rate supported by the server, computing said parameters comprises computing a set of parameters defining an initial state of the encoder buffer as it would exist if a data stream corresponding to the coding bit rate were streamed therefrom, and wherein said encoder buffer parameters comprise the coding bit rate associated with the data stream, the size of the encoder buffer employed with the coding bit rate of the data stream, and a value indicative of the initial encoder buffer fullness exhibited at the coding bit rate of the data stream; and
providing the encoder buffer state parameters and the streaming media data stream to the client, whereby said parameters are usable by the client to establish, on an ongoing basis, a current coding bit rate for the streaming media data, which is estimated will provide a high quality playback of the streaming media data while still keeping a decoder buffer of the client, used to receive streaming media data from the server, filled to a desired duration level so as to reduce the chance of an underflow condition which would result in an interruption of the playback of the streaming media data by the client.
3 Assignments
0 Petitions
Accused Products
Abstract
A system and process for controlling the coding bit rate of streaming media data is presented where a server streams data that exhibits one of a number of coding bit rates supported by the server. Initially, the server chooses the coding bit rate. However, after this startup period, the client provides coding bit rate requests. The server transmits the streaming media data at the most appropriate supported coding bit rate closest to the rate requested. The coding bit rates requested are those estimated to provide a high quality playback of the streaming data while still keeping a decoder buffer of the client filled to a desired level. A leaky bucket model is incorporated so that the changes in buffer duration due to natural variation in the instantaneous coding bit rate are not mistaken for changes in buffer duration due to network congestion.
-
Citations
41 Claims
-
1. A computer-implemented process for controlling a coding bit rate of streaming media data being transmitted to a client from a server over a computer network, comprising using the server to perform the following process actions:
-
generating a streaming media data stream which exhibits a coding bit rate supported by the server, and which after an initial startup period exhibits a coding bit rate related to a rate requested by the client; computing parameters indicative of the state of an encoder buffer of the server, wherein said encoder buffer is used to stage portions of the streaming media data prior to transmission to the client, and wherein for each coding bit rate supported by the server, computing said parameters comprises computing a set of parameters defining an initial state of the encoder buffer as it would exist if a data stream corresponding to the coding bit rate were streamed therefrom, and wherein said encoder buffer parameters comprise the coding bit rate associated with the data stream, the size of the encoder buffer employed with the coding bit rate of the data stream, and a value indicative of the initial encoder buffer fullness exhibited at the coding bit rate of the data stream; and providing the encoder buffer state parameters and the streaming media data stream to the client, whereby said parameters are usable by the client to establish, on an ongoing basis, a current coding bit rate for the streaming media data, which is estimated will provide a high quality playback of the streaming media data while still keeping a decoder buffer of the client, used to receive streaming media data from the server, filled to a desired duration level so as to reduce the chance of an underflow condition which would result in an interruption of the playback of the streaming media data by the client. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34)
-
-
35. A system for controlling a coding bit rate of streaming media data being transmitted to a client from a server over a computer network, comprising:
-
a general purpose server computing device; a computer program comprising program modules executable by the computing device, wherein the computing device is directed by the program modules of the computer program to, generate a streaming media data stream which exhibits a coding bit rate supported by the server, and which after an initial startup period exhibits a coding bit rate related to a rate requested by the client, compute parameters indicative of the state of an encoder buffer of the server, said encoder buffer being used to stage portions of the streaming media data prior to transmission to the client, and wherein computing parameters indicative of the state of an encoder buffer, comprises, computing, for each coding bit rate supported by the server, a set of parameters defining an initial state of the encoder buffer as it would exist if a data stream corresponding to the coding bit rate were streamed therefrom, wherein said encoder buffer parameters comprise the coding bit rate associated with the data stream, the size of the encoder buffer employed with the coding bit rate of the data stream, and a value indicative of the initial encoder buffer fullness exhibited at the coding bit rate of the data stream, and computing an upper bound gap for each frame of the streaming media data generated for each coding bit rate supported by the server, wherein the upper bound gap is defined as the number of data bits that the server'"'"'s encoder buffer can contain over the bits currently contained therein after a just-generated frame is fully input into the encoder buffer, and provide the encoder buffer state parameters and the streaming media data stream to the client, wherein the parameters are useable by the client to establish, on an ongoing basis, said rate requested by the client. - View Dependent Claims (36, 37, 38, 39)
-
-
40. A computer-implemented process for controlling a coding bit rate of streaming media data being transmitted to a client from a server over a computer network, comprising:
-
a generating step for generating a streaming media data stream which exhibits a coding bit rate supported by the server, and which after an initial startup period exhibits a coding bit rate related to a rate requested by the client; a computing step for computing parameters indicative of the state of an encoder buffer of the server, said encoder buffer being used to stage portions of the streaming media data prior to transmission to the client; a second computing step for computing an upper bound gap for each frame of the streaming media data generated for each coding bit rate supported by the server, wherein the upper bound gap is defined as the number of data bits that the server'"'"'s encoder buffer can contain over the bits currently contained therein after a just-generated frame is fully input into the encoder buffer; and a providing step for providing the encoder buffer state parameters and the streaming media data stream to the client, whereby said parameters are usable by the client to establish, on an ongoing basis, a current coding bit rate for the streaming media data, which is estimated will provide a high quality playback of the streaming media data while still keeping a decoder buffer of the client, used to receive streaming media data from the server, filled to a desired duration level so as to reduce the chance of an underflow condition which would result in an interruption of the playback of the streaming media data by the client;
whereina limited number of coding bit rates are supported by the server, and wherein as the coding bit rate associated with the last frame provided to the client and the frame currently being streamed to the client has already been set and the coding bit rate is only changed on a frame-by-frame basis, the frame under consideration by the client for which a coding bit rate is requested is a frame of the streaming media data yet to be generated by the server and which frame is identified in the client request as the first frame that is to be encoded at the new coding bit rate, and wherein the generating step, comprises, (a) a receiving step for receiving a coding bit rate request from the client along with the identity of the first frame that the requested rate is to apply to, (b) a finding step for finding a supported coding bit rate that is equal to, or if none are equal, the closest smaller rate to, the requested coding bit rate, (c) a producing step for, whenever a supported coding bit rate is found that is a lower rate than the coding bit rate associated with the last generated frame of the streaming media data, producing the identified first frame and all future frames generated thereafter at that supported rate, and (d) a determining step for, whenever a supported coding bit rate is found that is a higher rate than the coding bit rate associated with a frame immediately preceding the identified first frame associated with the requested new coding bit rate, determining if a difference, between the upper bound gap associated with said immediately preceding frame if it is encoded at the supported coding bit rate found and the upper bound gap associated with that frame encoded at the current coding bit rate, is less than or equal to a maximum allowable difference value, a second producing step for, whenever the difference is less than the maximum allowable difference value, producing the identified first frame and all future frames generated thereafter at that supported rate, and a second finding step for, whenever the difference is not less than the maximum allowable difference value, finding the next lower supported coding bit rate and repeat steps (c)-(d). - View Dependent Claims (41)
-
Specification