Dynamic bandwidth selection for efficient transmission of multimedia streams in a computer network
First Claim
1. In a client computer, a method of dynamically adjusting a data transmission rate of a data stream from a server to the client computer, the client computer coupled to the server via a computer network, the computer network providing a network connection with a variable bandwidth for transmitting the data stream, the data stream including a plurality of data packets, said client computer including a playout buffer for buffering the incoming data packets, the method comprising:
- initializing the data transmission rate for said data stream;
dynamically computing a decrement bandwidth (DEC_BW) threshold for the playout buffer; and
decrementing the transmission rate upon determining that a difference between a first time of a first data packet and a last time of a last data packet in said playout buffer drops below said dynamically computed DEC_BW threshold.
3 Assignments
0 Petitions
Accused Products
Abstract
An efficient transmission protocol for transmitting multimedia streams from a server to a client computer over a diverse computer network including local area networks (LANs) and wide area networks (WANs) such as the internet. The client computer includes a playout buffer, and the transmission rate is dynamically matched to the available bandwidth capacity of the network connection between the server and the client computer. If a playtime of the playout buffer, which is one measure of the number of data packets currently in the playout buffer, drops below a dynamically computed Decrease_Bandwidth (DEC_BW) threshold, then the transmission rate is decreased by sending a DEC_BW message to the server. Conversely, if the number of packets remaining in the playout buffer rises above a dynamically computed Upper Increase_Bandwidth (INC_BW) threshold and does not drop below a Lower INC_BW threshold for at least an INC_BW wait period, then the transmission rate is incremented. The transmission rate can be selected from among a predetermined set of discrete bandwidth values or from within a continuous range of bandwidth values. In one variation, in addition to responding to changes in network connection capacity, the client computer also determines an average client computational capacity. Accordingly, if the average client computational capacity is less than the network capacity, the lower of the two capacities is the determining one, thereby avoiding a playout buffer overrun.
482 Citations
42 Claims
-
1. In a client computer, a method of dynamically adjusting a data transmission rate of a data stream from a server to the client computer, the client computer coupled to the server via a computer network, the computer network providing a network connection with a variable bandwidth for transmitting the data stream, the data stream including a plurality of data packets, said client computer including a playout buffer for buffering the incoming data packets, the method comprising:
-
initializing the data transmission rate for said data stream;
dynamically computing a decrement bandwidth (DEC_BW) threshold for the playout buffer; and
decrementing the transmission rate upon determining that a difference between a first time of a first data packet and a last time of a last data packet in said playout buffer drops below said dynamically computed DEC_BW threshold. - View Dependent Claims (2, 3, 4, 5, 6)
determining a lossrate of the data packets; and
decrementing the transmission rate upon determining the lossrate exceeds a lossrate threshold.
-
-
4. The method of claim 1 wherein said data stream is a video data stream.
-
5. The method of claim 1 further comprising:
-
determining an average client computational rate of said client computer; and
decrementing the transmission rate upon determining the average client computational rate is less than the transmission rate.
-
-
6. The method of claim 1, further comprising decrementing the transmission rate upon determining a difference between the current number of data packets and a previous number of data packets remaining in said playout buffer is less than a first constant, then decrementing the transmission rate.
-
7. In a client computer, a method of dynamically adjusting a transmission rate of a data stream from a server to the client computer, the client computer coupled to the server via a computer network, the computer network providing a network connection with a variable bandwidth for transmitting the data stream, the data stream including a plurality of data packets, said client computer including a playout buffer for buffering the incoming data packets, the method comprising:
-
initializing the transmission rate for said data stream;
initializing a Time_Before_Increase;
dynamically computing an upper increment bandwidth (INC_BW) threshold and a lower INC_BW threshold for said playout buffer; and
incrementing the transmission rate upon determining a current number of data packets remaining in the playout buffer rises above the upper INC_BW threshold and does not drop below the lower INC_BW threshold for at least said Time_Before_Increase. - View Dependent Claims (8, 9, 10, 11, 12, 13, 14)
resetting the Time_Buffer_Full upon determining the current number of data packets remaining in the playout buffer rises above the upper INC_BW threshold and then drops below the lower INC_BW threshold within said Time_Before_Increase.
-
-
9. The method of claim 7 further comprising increasing said Time_Before_Increase upon determining the transmission rate is reduced shortly after it was previously increased.
-
10. The method of claim 7 wherein said lower INC_BW threshold is initialized to a percentage of an ideal playout buffer size.
-
11. The method of claim 7 further comprising the steps of:
-
determining an average client computational rate of said client computer; and
if the average client computational rate is greater than the transmission rate and if the current number of data packets remaining in the playout buffer rises above the upper INC_BW threshold and does not drop below the lower INC_BW threshold for at least said INC_BW wait period, then incrementing the transmission rate.
-
-
12. The method of claim 7 wherein said data stream is a video data stream.
-
13. The method of claim 7 wherein said current number of packets remaining is represented by a current playtime which is set to a duetime of a last data packet in said playout buffer.
-
14. The method of claim 7 further comprising:
-
dynamically computing a decrement bandwidth (DEC_BW) threshold for the playout buffer; and
decrementing the transmission rate upon determining the current number of data packets remaining in said playout buffer drops below said dynamically computed DEC_BW threshold, and upon determining a difference between the current number of data packets and a previous number of data packets remaining in said playout buffer is less than a first constant.
-
-
15. A client computer useful in association with a server, the client computer coupled to the server via a computer network, the computer network providing a network connection with a variable bandwidth for transmitting a data stream from the server to the client computer, the data stream including a plurality of data packets, the client computer comprising:
a playout buffer for buffering the incoming data packets, wherein a transmission rate for said data stream is decremented upon determining that a difference between a first time of a first data packet and a last time of a last data packet in said playout buffer drops below a dynamically computed decrement bandwidth (DEC_BW) threshold. - View Dependent Claims (16, 17, 18, 19, 20)
-
21. A client computer useful in association with a server, the client computer coupled to the server via a computer network, the computer network providing a network connection with a variable bandwidth for transmitting a data stream from said server to said client computer, the data stream including a plurality of data packets, the client computer comprising:
a playout buffer for buffering the incoming data packets, wherein a transmission rate of said data stream is incremented upon determining a current number of data packets remaining in the playout buffer rises above a dynamically computed upper increment bandwidth (IN_BW) threshold and does not drop below a dynamically computed lower INC_BW threshold for at least a Time_Before_Increase. - View Dependent Claims (22, 23, 24, 25, 26, 27, 28)
-
29. A computer-readable medium useful in association with a client computer coupled to a server via a computer network, the computer network providing a network connection with a variable bandwidth for transmitting a data stream from the server to the client computer, the data stream including a plurality of data packets, the client computer having a processor and a playout buffer for buffering said data packets from the server, the computer-readable medium comprising computer-readable code instructions configured to cause said client computer to execute:
-
initializing a data transmission rate for said data stream;
dynamically computing a decrement bandwidth (DEC_BW) threshold for the playout buffer; and
decrementing the transmission rate upon determining that a difference between a first time of a first data packet and a last time of a last data packet in said playout buffer drops below said dynamically computed DEC_BW threshold. - View Dependent Claims (30, 31, 32, 33, 34)
determining a lossrate of the data packets; and
decrementing the transmission rate upon determining the lossrate exceeds a lossrate threshold.
-
-
32. The computer-readable medium of claim 29 wherein said data stream is a video data stream.
-
33. The computer-readable medium of claim 29 further comprising computer-readable code instructions configured to cause said client computer to execute:
-
determining an average client computational rate of said client computer; and
decrementing the transmission rate upon determining the average client computational rate is less than the transmission rate.
-
-
34. The computer readable medium of claim 29, further comprising decrementing the transmission rate upon determining a difference between the current number of data packets and a previous number of data packets remaining in said playout buffer is less than a first constant.
-
35. A computer-readable medium useful in association with a client computer coupled to a server via a computer network, the computer network providing a network connection with a variable bandwidth for transmitting a data stream from the server to the client computer, the data stream including a plurality of data packets, the client computer having a processor and a playout buffer for buffering said data packets from the server, the computer-readable medium comprising computer-readable code instructions configured to cause said client computer to execute:
-
initializing a data transmission rate for said data stream;
initializing a Time_Before_Increase;
dynamically computing an upper increment bandwidth (INC_BW) threshold and a lower INC_BW threshold for said playout buffer; and
incrementing the transmission rate upon determining a current number of data packets remaining in the playout buffer rises above the upper INC_BW threshold and does not drop below the lower INC_BW threshold for at least said Time_Before_Increase. - View Dependent Claims (36, 37, 38, 39, 40, 41, 42)
determining an average client computational rate of said client computer; and
incrementing the transmission rate upon determining the average client computational rate is greater than the transmission rate and upon determining the current number of data packets remaining in the playout buffer rises above the upper INC_BW threshold and does not drop below the lower INC_BW threshold for at least said Time_Before_Increase.
-
-
40. The computer-readable medium of claim 35 wherein said data stream is a video data stream.
-
41. The computer-readable medium of claim 35 wherein said current number of packets remaining is represented by a current playtime which is set to a duetime of a last data packet in said playout buffer.
-
42. The computer-readable medium of claim 35 further comprising computer-readable code instructions configured to cause said client computer to execute:
-
dynamically computing a decrement bandwidth (DEC_BW) threshold for the playout buffer; and
decrementing the transmission rate upon determining the current number of data packets in said playout buffer drops below said dynamically computed DEC_BW threshold, and upon determining a difference between the current number of data packets and a previous number of data packets remaining in said playout buffer is less than a first constant.
-
Specification