IP Library Granted Patent US 9,673,936
Granted Patent B2
US 9,673,936 · App. 14/204,385 · Granted Jun 6, 2017

Method and system for providing error correction to low-latency streaming video

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,673,936
App. No.
14/204,385
Granted
Jun 6, 2017
Kind
B2
Abstract

Disclosed is a method for providing error correction to a video stream transmitted from a server to a client device, wherein the server is connected to an intermediate module over a bandwidth-limited network and the intermediate module is connected to the client device over a lossy network. The method includes intercepting data transmitted from the bandwidth-limited network to the lossy network by the intermediate module, identifying the video stream for error correction from the intercepted data at the intermediate module, generating error correction data for the video stream by the intermediate module and transmitting a modified stream that includes the video stream and the error correction data over the lossy network to the client device by the intermediate module.

Claims (47)

1. A method for providing error correction to a video stream transmitted from a server to a client device, wherein:

the server is connected to an intermediate module over a bandwidth-limited network; and

the intermediate module is connected to the client device over a lossy network;

the method comprising:

intercepting data transmitted from the bandwidth-limited network to the lossy network by the intermediate module;

identifying the video stream in the intercepted data at the intermediate module;

determining an amount of error correction data for the video stream for the lossy network at the intermediate module; and

when the determined amount of error correction is not present with the video stream in the intercepted data:

generating the determined amount of error correction data for the video stream by the intermediate module; and

transmitting a modified video stream that includes the video stream and the generated error correction data over the lossy network to the client device by the intermediate module.

2. The method of claim 1 , wherein the intermediate module is implemented in a router or modem.

3. The method of claim 1 , wherein determining the amount of error correction data to be generated for the video stream is based at least in part upon conditions associated with the lossy network.

4. The method of claim 3 , wherein the conditions associated with the lossy network include an available bandwidth for the lossy network, cross traffic associated with the lossy network, link quality of the lossy network or recent interferences or collisions that have occurred along the lossy network.

5. The method of claim 1 , wherein different amounts of error correction data may be generated for different portions of the video stream.

6. The method of claim 1 , wherein the error correction data is sent in an application specific format.

7. The method of claim 1 , further comprising setting by the intermediate module a field in a header of a packet transmitting at least a portion of the error correction data to identify the server as a transmitter of the error correction data.

8. The method of claim 1 , wherein the error correction data is generated using at least one of: Vandermonde matrices, low-density parity check codes, rateless codes, Luby transform codes, online codes, Raptor codes, or Raptor-Q codes.

9. The method of claim 1 , wherein the intermediate module receives bandwidth-limited network error correction data with the video stream and uses the bandwidth-limited network error correction data to correct the video stream received by the intermediate module prior to generating a set of error correction data for the video stream.

10. A computer program product comprising a non-transitory computer usable medium having executable code to execute a method for providing error correction to a video stream transmitted from a server to a client, wherein: the server is connected to an intermediate module over a bandwidth-limited network; and the intermediate module is connected to the client over a lossy network; the method comprising:

intercepting data transmitted from the bandwidth-limited network to the lossy network by the intermediate module; identifying the video stream in the intercepted data at the intermediate module; determining, at the intermediate module, an amount of error correction data for the video stream for the lossy network, the bandwidth-limited network having an available amount of bandwidth that is insufficient to transmit the determined amount of error correction data for the lossy network; generating the determined amount of error correction data for the video stream by the intermediate module rather than by the server;

and transmitting a modified video stream that includes the video stream and the generated error correction data over the lossy network to the client by the intermediate module.

11. The computer program product of claim 10 , wherein the intermediate module is implemented in a WiFi router or modem.

12. The computer program product of claim 10 , wherein determining the amount of error correction data to be generated for the video stream is based at least in part upon conditions associated with the lossy network.

13. The computer program product of claim 12 , wherein the conditions associated with the lossy network include an available bandwidth for the lossy network, cross traffic associated with the lossy network, link quality of the lossy network or recent interferences or collisions that have occurred along the lossy network.

14. The computer program product of claim 10 , wherein different amounts of error correction data may be generated for different portions of the video stream.

15. The computer program product of claim 10 , wherein the error correction data is sent in an application specific format.

16. The computer program product of claim 10 , further comprising setting by the intermediate module a field in a header of a packet transmitting at least a portion of the error correction data to identify the server as a transmitter of the error correction data.

17. The computer program product of claim 10 , wherein the error correction data is generated using at least one of: Vandermonde matrices, low-density parity check codes, rateless codes, Luby transform codes, online codes, Raptor codes, or Raptor-Q codes.

18. The computer program product of claim 10 , wherein the intermediate module receives bandwidth-limited network error correction data with the video stream and uses the bandwidth-limited network error correction data to correct the video stream received by the intermediate module prior to generating a set of error correction data for the video stream.

19. An intermediate module for providing error correction to a video stream transmitted from a server to a client device, wherein:

the server is connected to the intermediate module over a bandwidth-limited network; and

the intermediate module is connected to the client device over a lossy network;

the intermediate module being configured to:

intercept data transmitted from the bandwidth-limited network to the lossy network by the intermediate module;

identify the video stream in the intercepted data at the intermediate module;

determine an amount of error correction data for the video stream for the lossy network at the intermediate module; and

when the determined amount of error correction is not present with the video stream in the intercepted data:

generate error correction data for the video stream; and

transmit a modified stream that includes the video stream and the error correction data over the lossy network to the client device.

20. The intermediate module of claim 19 , wherein the intermediate module is implemented in a router or modem.

21. The intermediate module of claim 19 , wherein determining the amount of error correction data to be generated for the video stream is based at least in part upon conditions associated with the lossy network.

22. The intermediate module of claim 21 , wherein the conditions associated with the lossy network include an available bandwidth for the lossy network, cross traffic associated with the lossy network, link quality of the lossy network or recent interferences or collisions that have occurred along the lossy network.

23. The intermediate module of claim 19 , wherein different amounts of error correction data may be generated for different portions of the video stream.

24. The intermediate module of claim 19 , wherein the error correction data is sent in an application specific format.

25. The intermediate module of claim 19 , wherein the error correction data is generated using at least one of:

Vandermonde matrices, low-density parity check codes, rateless codes, Luby transform codes, online codes, Raptor codes, or Raptor-Q codes.

26. The intermediate module of claim 19 , wherein the intermediate module receives bandwidth-limited network error correction data with the video stream and uses the bandwidth-limited network error correction data to correct the video stream received by the intermediate module prior to generating a set of error correction data for the video stream.

Assignments (3)
CHANGE OF NAME Recorded Oct 2, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044097/0658 →
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: DHARMAPURIKAR, MAKARAND; IZVORSKI, ALEXANDER
To: CIINOW, INC.
Reel/Frame 032731/0571 →