Multi-level congestion control for large scale video conferences
First Claim
1. A method for streaming data to a client, the method comprising a plurality of operations comprising:
- transmitting a data stream over a computer network for receipt by a client, the data stream being selected from a plurality of data streams, each of the plurality of data streams having a different bitrate;
the data stream being transmitted in the form of a series of data packets;
transmitting a pair of timing packets for receipt by a client, the timing packets comprising a first packet and a second packet, the second packet being transmitted after the first packet with a known delay;
receiving a plurality of reporting packets, the reporting packets each including a At value representative of the length of time that elapsed between a time of receipt of the first packet and a time of receipt of the second packet of a corresponding pair of timing packets;
determining that additional bandwidth is available when the Δ
t values decrease over time; and
selecting a new data stream for receipt by the client when the additional bandwidth is determined to be available, the new data stream having a higher bitrate than the data stream.
2 Assignments
0 Petitions
Accused Products
Abstract
A method for streaming data is described. In the method, a pair of timing packets is periodically transmitted to a client, the second packet of the pair being transmitted after the first packet with a known delay. A plurality of reports are received from the client, each of the reports including a Δt value representative of the length of time that elapsed between receipt by the client of the first packet and the second packet of the pairs of timing packets. Additional bandwidth is determined to be available when the Δt values decrease. A new data stream having a higher bitrate is selected for transmission to the client when additional bandwidth is determined to be available. A server for streaming data is also described.
132 Citations
26 Claims
-
1. A method for streaming data to a client, the method comprising a plurality of operations comprising:
-
transmitting a data stream over a computer network for receipt by a client, the data stream being selected from a plurality of data streams, each of the plurality of data streams having a different bitrate;
the data stream being transmitted in the form of a series of data packets;transmitting a pair of timing packets for receipt by a client, the timing packets comprising a first packet and a second packet, the second packet being transmitted after the first packet with a known delay; receiving a plurality of reporting packets, the reporting packets each including a At value representative of the length of time that elapsed between a time of receipt of the first packet and a time of receipt of the second packet of a corresponding pair of timing packets; determining that additional bandwidth is available when the Δ
t values decrease over time; andselecting a new data stream for receipt by the client when the additional bandwidth is determined to be available, the new data stream having a higher bitrate than the data stream. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A server for streaming data comprising:
-
a media codec configured to receive a high bitrate data stream, the data stream representing media content, the media codec generating at least one lower bitrate data stream, each of the lower bitrate data streams representing the media content; a packetizer for encapsulating the high bitrate data stream and each of the lower bitrate data streams into network packets; and a transmit circuit, the transmit circuit being configured to transmit current one of the data streams over a network for receipt by a client, the current one of the data streams being transmitted in the form of a plurality of network packets; a receive circuit, the receive circuit being configured to receive communications from the client; and a controller, the controller being configured to cause the transmit circuit to periodically transmit a pair of timing packets for receipt by the client, each of the pair of timing packets comprising a first packet and a second packet, the second packet being transmitted after the first packet with a known delay, the controller being in communication with the receive circuit, the controller being configured to receive a report from the client in response to each pair of timing packets, each of the reports including a Δ
t value representative of the length of time that elapsed between receipt of the first packet and receipt of the second packet of the pair of timing packets, the controller further being configured to determine that additional bandwidth is available when the Δ
t values decrease, and to cause the transmit circuit to transmit a higher bitrate one of the data streams for receipt by the client than the than the current one of the data streams when the additional bandwidth is determined to be available. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19, 20, 21)
-
-
22. A method for adjusting a bitrate of streaming data being transmitted to a client, the method comprising:
-
transmitting a first one of plurality of data streams over a computer network for receipt by the client, each of the plurality of data streams containing streaming data representing a multimedia signal in the form of a plurality of data packets, each of the plurality of data streams having a different bitrate than others of the data streams; monitoring a number of unprocessed ones of the data packets; ceasing transmission of the first one of the plurality of data streams and transmitting a lower bitrate one of the plurality of data streams when the number of unprocessed data packets increases; determining whether additional bandwidth is available; and ceasing transmission of the lower bitrate data stream and initiating transmission of a higher bitrate one of the data streams when the number of unprocessed data packets reduces and the additional bandwidth is available. - View Dependent Claims (23, 24, 25, 26)
-
Specification