IP Library Granted Patent US 7,249,291
Granted Patent B2
US 7,249,291 · App. 10/367,573 · Granted Jul 24, 2007

System and method for reliably communicating the content of a live data stream

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 7,249,291
App. No.
10/367,573
Granted
Jul 24, 2007
Kind
B2
Abstract

A method for communicating the content of a live data stream to a receiver using a plurality of channels comprising two encoder channels used to encode the live data content prior to transmission. Initially a plurality of segments of a live data stream are received, wherein each segment contains segment data. A forward error correction algorithm is applied to each segment's data, thereby producing FEC-encoded segment data. The FEC-encoded segment data is contained within an FEC-encoded block, resulting in a corresponding plurality of FEC-encoded blocks being generated. Each FEC-encoded block is copied to a sub-channel on both a first encoder channel and a second encoder channel, resulting in a plurality of FEC-encoder blocks residing on the first and second encoder channels. The first and second encoder channels differ in the number of sub-channels they contain (interleaving depth), and accordingly the arrangement of the FEC-encoded blocks in the first and second encoder channels are different. A first cross-section of the FEC-encoded segment data contained within the FEC-encoded blocks resident in the first encoder channel is added to a first transmit block T 0 . Similarly, A first cross-section of the FEC-encoded segment data contained within the FEC-encoded blocks resident in the second encoder channel is added to a second transmit block T 1 . The first and second transmit blocks are then communicated to the receiver.

Claims (50)

1. A method for communicating the content of a live data stream to a receiver using a plurality of channels comprising one or more main channels having at least two sub-channels, the method comprising:

receiving a first segment of a live data stream, the first segment, S 0 , containing first segment data;

applying a forward error correction algorithm the first segment data to produce a corresponding transmit block, T 0 ;

dividing the T 0 block into two or more T 0 sub-blocks, wherein each of the two or more T 0 sub-blocks comprise substantially distinct FEC-encoded first segment data;

transmitting a first of the two or more T 0 sub-blocks to a receiver on a first main sub-channel;

receiving a second segment of the live data stream, the second segment, S 1 , containing second segment data;

applying a forward error correction algorithm to the second segment data to produce a transmit block T 1 ;

dividing the T 1 block into two or more T 1 sub-blocks, wherein each of the two or more T 1 sub-blocks comprises substantially distinct FEC-encoded second segment data;

transmitting substantially concurrently, the second of the two or more T 0 sub-blocks on the first main sub-channel and a first of the two or more T 1 sub-blocks on a second main sub-channel.

2. The method recited in claim 1 , wherein applying a forward error correction algorithm to two or more subsets of the first and second segment data comprises applying a Luby Transform to the first and second segment data.

3. The method recited in claim 1 , wherein applying a forward error correction algorithm to two or more subsets of the first and second segment data comprises applying a Reed-Solomon transform to the first and second segment data.

4. The method recited in claim 1 , further comprising:

receiving the first T 0 sub-block via the first main sub-channel; and

receiving the second T 0 sub-block via the first channel and the first T 1 sub-block via the second channel substantially concurrently.

5. The method recited in claim 1 , wherein the plurality of channels also comprises one or more booster channels each having at least two sub-channels and the receiver has insufficient bandwidth to receive the transmitted blocks on the main and booster channels simultaneously, the method further comprising:

receiving a least one of the two or more T 0 sub-blocks via the booster channel;

recovering the first segment data from the at least one received T 0 sub-block;

thereafter, switching receiver reception to the main channel;

receiving at least one of the two or more T 1 sub-blocks via the second main sub-channel; and

recovering the second segment data from the at least one received T 1 sub-block.

6. The method of claim 1 , further comprising transmitting substantially concurrently, the first T 0 sub-block on a first booster sub-channel, and the first T 1 sub-block on a second booster sub-channel, wherein the second T 0 sub-block, the second T 1 sub-block, the first T 0 sub-block, and the first T 1 sub-block are all transmitted substantially concurrently.

7. The method recited in claim 1 , wherein the T 0 and T 1 blocks are divided into three of more T 0 sub-blocks and three or more T 1 sub-blocks, respectively, and wherein each of the three or more T 0 and T 1 sub-blocks comprise substantially distinct data, the method further comprising:

receiving a third segment of the live data stream, the third segment, S 2 , containing third segment data;

applying a forward error correction algorithm to the third segment data to produce a transmit block, T 2 ;

dividing the T 2 block into three or more T 2 sub-blocks, wherein each of the three or more T 2 sub-blocks comprises substantially distinct third segment data;

transmitting the third of the three or more T 0 sub-blocks on the first main sub-channel after the second T 0 sub-block;

transmitting a second of the three or more T 1 sub-blocks on the second main sub-channel after the first T 1 sub-block; and

transmitting a first of the three or more T 2 sub-blocks to the receiver on a third main sub-channel,

wherein the third T 0 sub-block, the second T 1 sub-block, and the first T 2 sub-block are all transmitted substantially concurrently.

8. The method recited in claim 7 , wherein the plurality of channels also comprises one or more booster channels each having at least two sub-channels, the method further comprising:

transmitting, on a first booster sub-channel, the first of the three of more T 2 sub-blocks after the first T 1 block;

transmitting, on a second booster sub-channel, the first T 1 sub-block after the first T 0 sub-block; and

transmitting, on a third booster sub-channel, the second T 1 sub-block after the second T 0 sub-block.

9. The method recited in claim 7 , wherein the plurality of channels also comprises one or more booster channels each having at least two sub-channels and the receiver has insufficient bandwidth to receive the transmitted blocks on the main and booster channels simultaneously, the method further comprising:

receiving a least one of the two or more T 0 sub-blocks via the booster channel;

recovering the first segment data from the at least one received T 0 sub-block;

thereafter, switching receiver reception to the main channel;

receiving at least one of the three or more T 1 sub-blocks via the second main sub-channel;

recovering the second segment data from the at least one received T 1 sub-block;

receiving at least one of the three or more T 2 sub-blocks via the third main sub-channel; and

recovering the third segment data from the at least one received T 2 sub-block.

10. A system operable to communicate the content of a live data stream to a receiver via a plurality of channels, the system comprising:

a receiver operable to receive first and second segments of a live data stream, the first and second segments containing first and second segment data, respectively;

an encoder operable to apply a forward error correction algorithm to the first segment data and to the second segment data to produce a corresponding first transmit block, T 0 , and a second transmit block, T 1 ;

a block partitioner operable to divide each of the first and second transmit blocks T 0 and T 1 into a plurality of sub-blocks; and

a transmitter operable to transmit the T 0 sub-blocks on a first channel and the plurality of T 1 sub-blocks on a second channel;

wherein the receiver is a switchable, single-channel receiver configured to switch reception between a first channel to receive one or more of the T 0 sub-blocks and a second channel to receive one or more of the T 1 sub-blocks.

11. The system recited in claim 10 , wherein the encoder comprises an information additive code generator.

12. The system recited in claim 10 , further comprising a decoder operable to recover the first segment data from the received one or more T 0 data blocks and the second segment.

13. The system recited in claim 12 , wherein the decoder comprises an information additive code decoder.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 19, 2018
From: DIGITAL FOUNTAIN, INC.
To: QUALCOMM INCORPORATED
Reel/Frame 045641/0207 →
CORRECTIVE ASSIGNMENT TO CORRECT THE INCORRECT EXECUTION DATES PREVIOUSLY RECORDED ON REEL 014768 FRAME 0525. ASSIGNOR(S) HEREBY CONFIRMS THE CORRECT EXECUTION DATES. Recorded Jul 22, 2011
From: RASMUSSEN, JENS EILSTRUP; SHOKROLLAHI, AMIN; LASSEN, SOREN; HORN, GAVIN; GOYAL, VIVEK; DOBYNS, BARRY; LUBY, MICHAEL
To: DIGITAL FOUNTAIN, INC.
Reel/Frame 026632/0088 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 8, 2003
From: RASMUSSEN, JENS; LASSEN, SOREN; LUBY, MICHAEL G.; HORN, GAVIN; SHOKROLLAHI, M. AMIN; GOYAL, VIVEK; DOBYNS, BARRY
To: DIGITAL FOUNTAIN, INC.
Reel/Frame 014768/0525 →