Adaptive bit-rate adjustment of multimedia communications channels using transport control protocol
Abstract
A videoconferencing apparatus having a corresponding method and instruction program comprises a video codec to generate video data; a video packetizer to produce TCP packets of the video data; an audio codec to generate audio data; an audio packetizer to produce packets of the audio data; a transmit circuit to transmit the TCP packets; a receive circuit to receive a RTCP receiver report representing a number of the TCP packets of the video data received by a receiver; and a controller to generate an estimate of a number of the TCP packets of the video data transmitted but not yet received based on a difference between a number of the TCP packets of the video data transmitted by the transmit circuit and the number of the TCP packets of the video data received by the receiver, and control the video bit rate according to the estimate.
Claims
exact text as granted — not AI-modified1 . A videoconferencing apparatus comprising:
a video codec to generate video data at a video bit rate; a video packetizer to produce Transport Control Protocol (TCP) packets of the video data; an audio codec to generate audio data at an audio bit rate; an audio packetizer to produce packets of the audio data; a transmit circuit to transmit the TCP packets of the video data and the packets of the audio data; a receive circuit to receive a Real-time Transport Control Protocol (RTCP) receiver report representing a number of the TCP packets of the video data received by a receiver of the TCP packets of the video data; and a controller to
generate an estimate of a number of the TCP packets of the video data transmitted by the transmit circuit but not yet received by the receiver based on a difference between a number of the TCP packets of the video data transmitted by the transmit circuit and the number of the TCP packets of the video data received by the receiver, and
control the video bit rate according to the estimate.
2 . An apparatus comprising:
a data generator to generate data at a bit rate; a packetizer to produce Transport Control Protocol (TCP) packets of the data; a transmit circuit to transmit the TCP packets of the data; and a controller to control the bit rate according to an estimate of a number of the TCP packets of the data transmitted by the transmit circuit but not yet received by a receiver of the TCP packets of the data.
3 . The apparatus of claim 2 , wherein:
the controller generates the estimate of the number of the TCP packets of the data transmitted by the transmit circuit but not yet received by the receiver based on
a number of the TCP packets of the data transmitted by the transmit circuit following an initialization event,
a number of the TCP packets of the data received by the receiver following the initialization event, and
a previous estimate of the number of the TCP packets of the data transmitted by the transmit circuit but not yet received by the receiver.
4 . The apparatus of claim 3 , wherein, to generate the estimate of the number of the TCP packets of the data transmitted by the transmit circuit but not yet received by the receiver, the controller:
determines a plurality of differences, each at a different time, between a number of the TCP packets of the data transmitted by the transmit circuit following an initialization event and a number of the TCP packets of the data received by the receiver following the initialization event; and generates the estimate according to at least one of the group consisting of
a median of the differences,
a mean of the differences, and
a mode of the differences.
5 . The apparatus of claim 2 , wherein, to control the bit rate according to the estimate of the number of the TCP packets of the data transmitted by the transmit circuit but not yet received by the receiver, the controller:
decreases the bit rate when a first predetermined number of consecutive differences between the number of the TCP packets of the data transmitted by the transmit circuit following an initialization event and the number of the TCP packets of the data received by the receiver following the initialization event fall above a threshold that is a first function of the estimate of the number of the TCP packets of the data transmitted by the transmit circuit but not yet received by the receiver; increases the bit rate when a second predetermined number of consecutive differences between the number of the TCP packets of the data transmitted by the transmit circuit following an initialization event and the number of the TCP packets of the data received by the receiver following the initialization event fall below a threshold that is a second function of the estimate of the number of the TCP packets of the data transmitted by the transmit circuit but not yet received by the receiver; and increases the bit rate when the bit rate has not been increased for a predetermined interval.
6 . The apparatus of claim 5 , wherein, to control the bit rate according to the estimate of the number of the TCP packets of the data transmitted by the transmit circuit but not yet received by the receiver, the controller further:
generates a new estimate of the number of the TCP packets of the data transmitted by the transmit circuit but not yet received by the receiver; determines whether the new estimate falls outside an estimate window surrounding the estimate; controls the bit rate based on the new estimate when the new estimate falls outside the estimate window surrounding the estimate; and controls the bit rate based on the estimate when the new estimate falls inside the estimate window surrounding the estimate.
7 . The apparatus of claim 2 , further comprising:
a receive circuit to receive a packet of data representing the number of the TCP packets of the data received by the receiver.
8 . The apparatus of claim 7 , wherein the packet of data representing the number of the TCP packets of the data received by the receiver comprises:
a Real-time Transport Control Protocol (RTCP) receiver report packet.
9 . The apparatus of claim 2 , wherein the data generator comprises at least one of the group consisting of:
a video codec to encode video data; and an audio codec to encode audio data.
10 . A videoconferencing system comprising the apparatus of claim 2 .
11 . A method comprising:
generating data at a bit rate; producing Transport Control Protocol (TCP) packets of the data; transmitting the TCP packets of the data; and controlling the bit rate according to an estimate of a number of the TCP packets of the data transmitted by the transmit circuit but not yet received by a receiver of the TCP packets of the data.
12 . The method of claim 11 , further comprising:
generating the estimate of the number of the TCP packets of the data transmitted by the transmit circuit but not yet received by the receiver based on
a number of the TCP packets of the data transmitted following an initialization event,
a number of the TCP packets of the data received by the receiver following the initialization event, and
a previous estimate of the number of the TCP packets of the data transmitted but not yet received by the receiver.
13 . The method of claim 12 , wherein generating the estimate of the number of the TCP packets of the data transmitted but not yet received by the receiver comprises:
determining a plurality of differences, each at a different time, between a number of the TCP packets of the data transmitted following an initialization event and a number of the TCP packets of the data received by the receiver following the initialization event; and generating the estimate according to at least one of the group consisting of
a median of the differences,
a mean of the differences, and
a mode of the differences.
14 . The method of claim 11 , wherein controlling the bit rate according to the estimate of the number of the TCP packets of the data transmitted but not yet received by the receiver comprises:
decreasing the bit rate when a first predetermined number of consecutive differences between the number of the TCP packets of the data transmitted following an initialization event and the number of the TCP packets of the data received by the receiver following the initialization event fall above a threshold that is a first function of the estimate of the number of the TCP packets of the data transmitted but not yet received by the receiver; increasing the bit rate when a second predetermined number of consecutive differences between the number of the TCP packets of the data transmitted following an initialization event and the number of the TCP packets of the data received by the receiver following the initialization event fall below a threshold that is a second function of the estimate of the number of the TCP packets of the data transmitted but not yet received by the receiver; and increasing the bit rate when the bit rate has not been increased for a predetermined interval.
15 . The method of claim 14 , wherein controlling the bit rate according to the estimate of the number of the TCP packets of the data transmitted but not yet received by the receiver of the TCP packets of the data further comprises:
generating a new estimate of the number of the TCP packets of the data transmitted but not yet received by the receiver; determining whether the new estimate falls outside an estimate window surrounding the estimate; controlling the bit rate based on the new estimate when the new estimate falls outside the estimate window surrounding the estimate; and controlling the bit rate based on the estimate when the new estimate falls inside the estimate window surrounding the estimate.
16 . The method of claim 11 , further comprising:
receiving a packet of data representing the number of the TCP packets of the data received by the receiver.
17 . The method of claim 16 , wherein the packet of data representing the number of the TCP packets of the data received by the receiver comprises:
a Real-time Transport Control Protocol (RTCP) receiver report packet.
18 . The method of claim 11 , wherein the data comprises at least one of video data or audio data.
19 . A device-readable medium or waveform containing a program of instructions executable by a device and adapted to perform the method of claim 11 .
20 . A device-readable medium or waveform containing a program of instructions executable by a device adapted to perform the method of claim 12.Cited by (0)
No later patents cite this yet.
References (0)
No backward citations on record.