IP Library › Granted Patent US 11,489,620
Granted Patent B1
US 11,489,620 · App. 17/480,917 · Granted Nov 1, 2022

Loss recovery using streaming codes in forward error correction

Inventors: Ganesh Ananthanarayanan (Seattle, WA); Yu Yan (Kirkland, WA); Martin Ellis (Pittsburgh, PA); Michael Harrison Rudow (Pittsburgh, PA)
Assignee: Microsoft Technology Licensing, LLC
H04L1/004
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 11,489,620
App. No.
17/480,917
Granted
Nov 1, 2022
Kind
B1
Abstract

Identifying, by a sender and for each frame i of a plurality of frames of a video stream, a partition of a set of video data symbols D[i] into a first set of video data symbols U[i] and a second set of video data symbols V[i]. Generating, by the sender and for each frame i, a set of one or more streaming forward error correction (FEC) code parity symbols P[i] based on the symbols: V[i−τ] through V[i−1], U[i−τ], and the symbols D[i], wherein τ is a function of a maximum tolerable latency of the video stream expressed as a whole number of frames. Encoding, by the sender and for each frame i, packets carrying the symbols D[i], and P[i]. Transmitting, by the sender, each frame i of encoded packets in frame order to one or more receivers.

Claims (77)

1. A computer implemented method for forward error correction (FEC) in video streaming, comprising:

identifying, by a sender and for each frame i of a plurality of frames of a video stream, a partition of a set of video data symbols D[i] into a first set of video data symbols U[i] and a second set of video data symbols V[i];

generating, by the sender and for each frame i , a set of one or more streaming FEC code parity symbols P[i] based on the symbols: V[i−τ] through V[i−1], U[i−τ], and the symbols D[i], wherein τ is a function of a maximum tolerable latency of the video stream expressed as a whole number of frames;

encoding, by the sender and for each frame i, packets carrying the symbols D[i], and P[i]; and

transmitting, by the sender, each frame i of encoded packets to one or more receivers.

2. The method of claim 1 , wherein the number of symbols in the first set U[i] is equal to the number of symbols in the second set V[i].

3. The method of claim 1 , wherein τ is a maximum number of frames such that a time to encode τ consecutive frames plus a propagation delay is less than the maximum tolerable latency.

4. The method of claim 1 , further comprising:

receiving, by the sender and from at least one receiver, at least one quality report comprising parameters including one or more of:

a fraction of packets lost across two or more consecutive frames where at least one packet is lost per frame,

a fraction of instances in which one or more frames with packet loss are followed by at least τ consecutive frames of lossless transmission,

a fraction of packet losses,

a fraction of frames with at least one packet loss,

a mean number of consecutive packets lost,

a mean number of consecutive frames with at least one packet lost,

a mean number of consecutive packet receptions after a loss,

a mean number of consecutive frame receptions without a loss after a loss,

a burst density and a gap density for packets,

a burst density and a gap density for frames, or

a classification of a nominal bandwidth overhead of the streaming FEC code; and

selecting, by the sender and based on the quality report, a bandwidth overhead reduction from a nominal bandwidth overhead of the streaming FEC code for use in the generating for a period of time,

wherein the generating comprises generating the set of streaming FEC code parity symbols P[i] at a bandwidth overhead specified by the bandwidth overhead reduction.

5. The method of claim 4 , wherein selecting a bandwidth overhead reduction comprises selecting one bandwidth overhead reduction from a plurality of bandwidth overhead reductions comprising at least no reduction.

6. The method of claim 4 , wherein the selecting comprises applying, by the sender, a machine learning process using the parameters of at least one received quality report.

7. The method of claim 6 , wherein the machine learning process is a neural network.

8. The method of claim 7 , wherein the neural network is a binary classifier neural network.

9. The method of claim 8 , wherein the neural network is a fully connected neural network with one hidden layer and applies a cross-entropy loss.

10. The method of claim 1 , further comprising:

receiving, by the sender from a receiver and prior to the generating, a bandwidth overhead reduction classification indicating one of a plurality of bandwidth overhead reductions from a nominal bandwidth overhead of the streaming FEC code, the plurality of bandwidth overhead reductions comprising at least no bandwidth overhead reduction,

wherein the generating comprises generating the set of streaming FEC code parity symbols P[i] at a bandwidth overhead specified by the received bandwidth overhead reduction classification.

11. The method of claim 10 , wherein the bandwidth overhead reduction classification was selected at the receiver using parameters including a plurality of:

a fraction of packets lost across two or more consecutive frames where at least one packet is lost per frame,

a fraction of instances in which one or more frames with packet loss are followed by at least τ consecutive frames of lossless transmission,

a fraction of packet losses,

a fraction of frames with at least one packet loss,

a mean number of consecutive packets lost,

a mean number of consecutive frames with at least one packet lost,

a mean number of consecutive packet receptions after a loss,

a mean number of consecutive frame receptions without a loss after a loss,

a burst density and a gap density for packets,

a burst density and a gap density for frames, or

a classification of the nominal bandwidth overhead of the streaming FEC code.

12. A sender device for forward error correction (FEC) in video streaming, comprising:

a memory; and

at least one processor coupled to the memory, the memory including instructions executable by the at least one processor to cause the device to:

identify, by the sender and for each frame i of a plurality of frames of a video stream, a partition of a set of video data symbols D[i] into a first set of video data symbols U[i] and a second set of video data symbols V[i];

generate, by the sender and for each frame i, a set of one or more streaming FEC code parity symbols P[i] based on the symbols: V[i−τ] through V[i−1], [i−τ], and the symbols D[i], wherein τ is a function of a maximum tolerable latency of the video stream expressed as a whole number of frames;

encode, by the sender and for each frame i, packets carrying the symbols D[i] and P[i]; and

transmit, by the sender, each frame i of encoded packets in frame order to one or more receivers.

13. The device of claim 12 , wherein the number of symbols in the first set U[i] is equal to the number of symbols in the second set V[i].

14. The device of claim 12 , wherein τ is a maximum number of frames such that a time to encode τ consecutive frames plus a propagation delay is less than the maximum tolerable latency.

15. The device of claim 12 , wherein the memory further includes instructions executable by the at least one processor to cause the device to:

receive, by the sender and from at least one receiver, at least one quality report comprising parameters including one or more of:

a fraction of packets lost across two or more consecutive frames where at least one packet is lost per frame,

a fraction of instances in which one or more frames with packet loss are followed by at least τ consecutive frames of lossless transmission,

a fraction of packet losses,

a fraction of frames with at least one packet loss,

a mean number of consecutive packets lost,

a mean number of consecutive frames with at least one packet lost,

a mean number of consecutive packet receptions after a loss,

a mean number of consecutive frame receptions without a loss after a loss,

a burst density and a gap density for packets,

a burst density and a gap density for frames, or

a classification of a nominal bandwidth overhead of the streaming FEC code; and

select, by the sender and based on the quality report, a bandwidth overhead reduction from a nominal bandwidth overhead of the streaming FEC code for use in the generating for a period of time,

wherein the generating comprises generating the set of streaming FEC code parity symbols P[i] at a bandwidth overhead specified by the bandwidth overhead reduction.

16. The device of claim 15 , wherein selecting a bandwidth overhead reduction comprises selecting one bandwidth overhead reduction from a plurality of bandwidth overhead reductions comprising at least no reduction.

17. A computer-implemented method for forward error correction (FEC) in video streaming, comprising:

receiving, in a receiver and from a sender, a video stream including streaming forward error correction (FEC), the stream comprising a plurality of sequential frames, each frame i comprising:

data symbols D[i] consisting of a first set of video data symbols U[i] and a second set of video data symbols V[i], and

a set of one or more streaming FEC code parity symbols P[i] based on the symbols: V[i−τ] through V[i−1], U[i−τ], and the symbols D[i], wherein τ is a function of a maximum tolerable latency of the video stream expressed as a whole number of frames; and

upon a burst loss across b frames, each experiencing at least one packet loss, where b is an integer ranging from 1 to τ+1 comprising frame i through frame i+b−1;

decoding lost symbols from among V[i], . . . , V[i+b−1] using one or more of properly received P[i], . . . , P [i+τ], and

decoding lost symbols of U[j] for any integer j ranging from i to (i+b−1) using one or more of properly received P [j], . . . , P[j+τ].

18. The method of claim 17 , wherein each decoding comprises Gaussian Elimination.

19. The method of claim 17 , wherein the number of symbols in the first set U[i] is equal to the number of symbols in the second set V[i].

20. The method of claim 17 , wherein τ is a maximum number of frames such that a time to encode τ consecutive frames plus a propagation delay is less than the maximum tolerable latency.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 11, 2024
From: RUDOW, MICHAEL HARRISON
To: CARNEGIE MELLON UNIVERSITY
Reel/Frame 069551/0874 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 11, 2024
From: VINAYAK, RASHMI KORLAKAI
To: CARNEGIE MELLON UNIVERSITY
Reel/Frame 069552/0140 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 12, 2021
From: ANANTHANARAYANAN, GANESH; YAN, YU; ELLIS, MARTIN; RUDOW, MICHAEL HARRISON
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 057764/0930 →
Continuity (1)
Provisional Application 63208718 · Jun 9, 2021
Cited By (1)
US 12,537,622