IP Library Granted Patent US 9,860,605
Granted Patent B2
US 9,860,605 · App. 14/220,014 · Granted Jan 2, 2018

Method and apparatus for controlling source transmission rate for video streaming based on queuing delay

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,860,605
App. No.
14/220,014
Granted
Jan 2, 2018
Kind
B2
Abstract

A method for controlling transmission rate for video streaming based on queuing delay, includes determining a queuing delay for a packet transmitted from a source to a destination over a packet switched network and adjusting a transmission rate of the source in response to the determined queuing delay.

Claims (66)

1. A method for controlling transmission rate for video streaming from a source to a destination based on a receive queuing delay, the method comprising:

determining a peak destination receive rate (B_dest_max);

determining a most recent source transmission bitrate (B_source);

determining the receive queuing delay (T_delay) for a packet transmitted from the source to the destination over a packet switched network; and

adjusting a source transmission rate by lowering the source transmission rate to a predetermined value (B_source_min) for a time period equal to:

T _delay*( B _source/( B _dest_max− B _source_min)).

2. The method of claim 1 , wherein the receive queuing delay is measured by recording a send timestamp and a receive timestamp for the packet.

3. The method of claim 1 , wherein the receive queuing delay is determined for a subset of packets being transmitted from the source to the destination over the packet switched network.

4. The method of claim 1 , wherein the receive queuing delay is determined at the destination and subsequently transmitted to the source.

5. The method of claim 4 , wherein the receive queuing delay is transmitted to the source periodically.

6. The method of claim 4 , wherein the receive queuing delay is transmitted to the source when the receive queuing delay exceeds a threshold.

7. The method of claim 1 , wherein the source transmission rate is adjusted in response to the determined receive queuing delay growing gradually over a time period between a time (T 1 ) and a time (T 2 ).

8. The method of claim 1 , wherein the source transmission rate is adjusted in response to the determined receive queuing delay spiking instantly between successive packets.

9. The method of claim 1 , wherein transmission from the source is paused or the source transmission rate is lowered to the predetermined value (B_source_min) for a time period equal to the receive queuing delay (T_delay) when the peak destination receive rate is unavailable.

10. The method of claim 1 , wherein transmission from the source is paused for a time period equal to:

T _delay*( B _source/ B _dest_max).

11. The method of claim 1 , further comprising:

determining an acknowledgement packet receive time (T_upstream).

12. The method of claim 11 , wherein transmission from the source is paused for a time period equal to:

max(0, T _delay* B _source−( T _upstream*( B _dest_max− B _source)))/ B _dest_max.

13. The method of claim 11 , wherein transmission from the source is lowered to the predetermined value (B_source_min) for a time period equal to:

max(0, T _delay* B _source−( T _upstream*( B _dest_max− B _source_min− B _source)))/( B _dest_max− B _source_min).

14. The method of claim 1 , wherein the adjusting the source transmission rate comprises:

calculating a process variable from a recent history of receive queuing delay values; and

applying a proportional integral-differential control algorithm to steer the source transmission rate to a value suitable for maintaining the process variable at a desired level.

15. A computer program product embodied on a non-transitory computer readable medium, the computer readable medium having stored thereon a sequence of instructions which, when executed by a processor causes the processor to control transmission rate for video streaming from a source to a destination based on a receive queuing delay by:

determining a peak destination receive rate (B_dest_max);

determining a recent source transmission bitrate (B_source);

receiving from the destination the receive queuing delay (T_delay) measured at the destination for a packet transmitted from the source to the destination over a packet switched network; and

transmitting another packet at a source transmission rate determined at the source in response to the received measured receive queuing delay by lowering the source transmission rate to a predetermined value (B_source_min) for a time period equal to:

T _delay*( B _source/( B _dest_max− B _source_min)).

16. The computer program product of claim 15 , wherein the receive queuing delay is measured by recording a send timestamp and a receive timestamp for the packet.

17. The computer program product of claim 15 , wherein the receive queuing delay is determined for a subset of packets being transmitted from the source to the destination over the packet switched network.

18. The computer program product of claim 15 , wherein the receive queuing delay is received at the source periodically.

19. The computer program product of claim 15 , wherein the receive queuing delay is received at the source when the receive queuing delay exceeds a threshold.

20. The computer program product of claim 15 , wherein the source transmission rate is adjusted in response to the determined receive queuing delay growing gradually over a time period between a time (T 1 ) and a time (T 2 ).

21. The computer program product of claim 20 , wherein the source transmission rate is adjusted in response to the determined receive queuing delay spiking instantly between successive packets.

22. The computer program product of claim 21 , wherein the instructions further cause the processor to control the transmission rate by:

pausing transmission from the source or lowering the source transmission rate to the predetermined value (B_source_min) for a time period based on the instantaneous receive queuing delay (T_delay).

23. The computer program product of claim 15 , wherein transmission from the source is paused or the source transmission rate is lowered to the predetermined value (B_source_min) for a time period equal to the receive queuing delay (T_delay) when the peak destination receive rate is unavailable.

24. The computer program product of claim 15 , wherein determining the most recent source transmission rate comprises receiving the recent source transmission bitrate (B_source).

25. The computer program product of claim 15 , wherein transmission from the source is paused for a time period equal to:

T _delay*( B _source/ B _dest_max).

26. The computer program product of claim 24 , further comprising:

determining an acknowledgement packet receive time (T_upstream).

27. The computer program product of claim 26 , wherein transmission from the source is paused for a time period equal to:

max(0, T _delay* B _source−( T _upstream*( B _dest_max− B _source)))/ B _dest_max.

28. The computer program product of claim 26 , wherein transmission from the source is lowered to the predetermined value (B_source_min) for a time period equal to:

max(0, T _delay* B _source−( T _upstream*( B _dest_max− B _source_min− B _source)))/( B _dest_max− B _source_min).

29. The computer program product of claim 15 , wherein the adjusting the source transmission rate, comprises:

calculating a process variable from a recent history of receive queuing delay values; and

applying a proportional integral-differential control algorithm to steer the source transmission rate to a value suitable for maintaining the process variable at a desired level.

30. A system at a source for controlling transmission rate for video streaming from the source to a destination based on a receive queuing delay, comprising:

a non-transitory memory having stored therein:

receive queuing delay metadata associated with a packet switched network;

data packets for transmission; and

source transmission rate adjustment policies;

a transmission rate controller coupled with the memory to obtain the metadata and the policies, and programmed to determine a source transmission rate based on the metadata, the policies, and a measured receive queuing delay received from the destination, the source transmission rate determined by:

determining a peak destination receive rate (B_dest_max);

determining a most recent source transmission bitrate (B_source);

determining a receive queue queuing delay (T_delay) from the receiving queuing delay metadata; and

adjusting a source transmission rate by lowering the source transmission rate to a predetermined value (B_source_min) for a time period equal to:

T _delay*( B _source/( B _dest_max− B _source_min)); and

a packet transmission rate module to transmit the data packets across the packet switched network according to the source transmission rate.

31. The method of claim 1 , wherein the adjusting the source transmission rate of the source in response to the determined receive queuing delay comprises adjusting an encoding parameter of a video encoder.

32. The method of claim 31 , where the encoding parameter comprises at least one of a bitrate parameter, a video resolution parameter, a quality parameter, a frame rate parameter, or a frame skip parameter.

Assignments (3)
CHANGE OF NAME Recorded Oct 5, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044129/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 27, 2014
From: CIINOW, INC.
To: GOOGLE INC.
Reel/Frame 033621/0128 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 22, 2014
From: IZVORSKI, ALEXANDER; RAUT, DEVEN; DHARMAPURIKAR, MAKARAND
To: CIINOW, INC.
Reel/Frame 032731/0683 →