← Back to Patent Explorer
US6292834B1 Expired / Lapsed US ⏱️ 0.0 years remaining

Dynamic bandwidth selection for efficient transmission of multimedia streams in a computer network

Assignee: Microsoft Technology Licensing LLC
•
Filing: 1997-03-14
•
Granted: 2001-09-18
•
Expires: 2017-03-14
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

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.

Inventors

  • 👤 Hemanth Srinivas Ravi
  • 👤 Anders Edgar Klemets
  • 👤 Navin Chaddha
  • 👤 David de Val

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-24 13:45
CPC Classifications
H; H04; H04L; H04L65/00; H04L65/10; H04L65/102; H04L65/1043; H04L65/1066; H04L65/1101; H04L65/60; H04L65/61; H04L65/612; H04L65/75; H04L65/762; H04L65/765; H04L65/80; H04N; H04N21/00; H04N21/20; H04N21/21; H04N21/218; H04N21/2187; H04N21/222; H04N21/23; H04N21/234; H04N21/23424; H04N21/2343; H04N21/23439; H04N21/24; H04N21/2402; H04N21/25; H04N21/266; H04N21/2662; H04N21/80; H04N21/83; H04N21/845; H04N21/8455

Claims Analysis

Total Claims: 48
Claim 1
Independent Claim 135 words
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.
Claim 2
Dependent Claim 135 words
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.
Claim 3
Dependent Claim 33 words
The method of claim 1 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.
Claim 4
Dependent Claim 27 words
The method of claim 1 further comprising: determining a lossrate of the data packets; and decrementing the transmission rate upon determining the lossrate exceeds a lossrate threshold.
Claim 5
Dependent Claim 14 words
The method of claim 1 wherein said data stream is a video data stream.
Claim 6
Dependent Claim 35 words
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.
Claim 7
Dependent Claim 46 words
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.
Claim 8
Dependent Claim 141 words
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.
Claim 9
Dependent Claim 141 words
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.
Claim 10
Dependent Claim 68 words
The method of claim 7 wherein a Time_Buffer_Full indicates how long the current number of data packets remaining in the playout buffer has risen above the upper INC_BW threshold, and wherein the method further comprising: 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.
Claim 11
Dependent Claim 23 words
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.
Claim 12
Dependent Claim 21 words
The method of claim 7 wherein said lower INC_BW threshold is initialized to a percentage of an ideal playout buffer size.
Claim 13
Dependent Claim 73 words
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.
Claim 14
Dependent Claim 14 words
The method of claim 7 wherein said data stream is a video data stream.
Claim 15
Dependent Claim 33 words
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.
Claim 16
Dependent Claim 73 words
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.
Claim 17
Dependent Claim 111 words
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.
Claim 18
Dependent Claim 111 words
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.
Claim 19
Dependent Claim 34 words
The client computer of claim 15 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.
Claim 20
Dependent Claim 24 words
The client computer of claim 15 wherein the transmission rate is decremented upon determining a lossrate of the data packets exceeds a lossrate threshold.
Claim 21
Dependent Claim 15 words
The client computer of claim 15 wherein said data stream is a video data stream.
Claim 22
Dependent Claim 29 words
The client computer of claim 15 wherein the transmission rate is decremented upon determining an average client computational rate of the client computer is less than the transmission rate.
Claim 23
Dependent Claim 46 words
The client computer of claim 15 , wherein the transmission rate for said data stream is decremented 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.
Claim 24
Dependent Claim 114 words
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.
Claim 25
Dependent Claim 114 words
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.
Claim 26
Dependent Claim 65 words
The client computer of claim 21 wherein a Time_Buffer_Full indicates how long the current number of data packets remaining in the playout buffer has risen above the upper INC_BW threshold, wherein said Time_Buffer_Full is reset 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.
Claim 27
Dependent Claim 24 words
The client computer of claim 21 wherein said Time_Before_Increase is increased upon determining the transmission rate is reduced shortly after it was previously increased.
Claim 28
Dependent Claim 22 words
The client computer of claim 21 wherein said lower INC_BW threshold is intialized to a percentage of an ideal playout buffer size.
Claim 29
Dependent Claim 62 words
The client computer of claim 21 wherein the transmission rate is incremented upon determining an average computational rate of said client computer 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.
Claim 30
Dependent Claim 15 words
The client computer of claim 21 wherein said data stream is a video data stream.
Claim 31
Dependent Claim 34 words
The client computer of claim 21 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.
Claim 32
Dependent Claim 68 words
The client computer of claim 21 wherein the transmission rate for said data stream is decremented upon determining the current number of data packets remaining in said playout buffer drops below a dynamically computed decrement bandwidth (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.
Claim 33
Dependent Claim 142 words
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.
Claim 34
Dependent Claim 142 words
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.
Claim 35
Dependent Claim 34 words
The computer-readable medium of claim 29 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.
Claim 36
Dependent Claim 39 words
The computer-readable medium of claim 29 further comprising computer-readable code instructions configured to cause said client computer to execute: determining a lossrate of the data packets; and decrementing the transmission rate upon determining the lossrate exceeds a lossrate threshold.
Claim 37
Dependent Claim 15 words
The computer-readable medium of claim 29 wherein said data stream is a video data stream.
Claim 38
Dependent Claim 47 words
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.
Claim 39
Dependent Claim 43 words
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.
Claim 40
Dependent Claim 150 words
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.
Claim 41
Dependent Claim 150 words
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.
Claim 42
Dependent Claim 79 words
The computer-readable medium of claim 35 wherein a Time_Buffer_Full indicates how long the current number of data packets remaining in the playout buffer has risen above the upper INC_BW threshold, the computer-readable medium further comprising computer-readable code instructions configured to cause said client computer to execute 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.
Claim 43
Dependent Claim 35 words
The computer-readable medium of claim 35 further comprising computer-readable code instructions configured to cause said client computer to execute increasing said Time_Before_Increase upon determining the transmission rate is reduced shortly after it was previously increased.
Claim 44
Dependent Claim 22 words
The computer-readable medium of claim 35 wherein said lower INC_BW threshold is initialized to a percentage of an ideal playout buffer size.
Claim 45
Dependent Claim 81 words
The computer-readable medium of claim 35 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 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.
Claim 46
Dependent Claim 15 words
The computer-readable medium of claim 35 wherein said data stream is a video data stream.
Claim 47
Dependent Claim 34 words
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.
Claim 48
Dependent Claim 84 words
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.

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2004-09-17 2005-03-19 2005-09-18 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2008-09-17 2009-03-19 2009-09-18 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2012-09-17 2013-03-19 2013-09-18 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag