IP Library Granted Patent US 8,726,136
Granted Patent B2
US 8,726,136 · App. 13/789,144 · Granted May 13, 2014

Systems, methods, apparatus and computer program products for highly reliable file delivery using compound and braided FEC encoding and decoding

Inventor: Weimin Fang (Stamford, CT)
Assignee: Kencast, Inc.
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 8,726,136
App. No.
13/789,144
Granted
May 13, 2014
Kind
B2
Abstract

Systems, methods, apparatus and computer program products provide highly reliable file delivery using a combination of packet-level FEC on source data packets which are arranged in matrices, where encoding is performed on both rows and columns or on rows, columns and diagonals.

Claims (54)

1. A method for reconstructing a source file, comprising the steps of:

receiving a plurality of packets, wherein each packet is at least one of a source packet or an FEC packet;

storing each source packet into a corresponding source packet matrix;

storing each FEC packet;

determining, for each row of the source packet matrix, whether at least one of the source packets has not been received and can be recovered based, in part, on a status information field of the row;

recovering a first source packet that has not been received;

updating a status information field of a column and a diagonal associated with the recovered first source packet;

determining, for each column of the source packet matrix, whether at least one of the source packets has not been received and can be recovered based, in part, on a status information field of the column;

recovering a second source packet that has not been received;

updating a status information field of a row and a diagonal associated with the recovered second source packet; and

determining, for each diagonal of the source packet matrix, whether at least one of the source packets has not been received and can be recovered based, in part, on a status information field of the diagonal;

recovering a third source packet that has not been received; and

updating a status information field of a row and a column associated with the recovered third source packet.

2. A non-transitory computer-readable medium having stored thereon sequences of instructions, the sequences of instructions including instructions which, when executed by a computer system, cause the computer system to perform:

receiving a plurality of packets, wherein each packet is at least one of a source packet or an FEC packet;

storing each source packet into a corresponding source packet matrix;

storing each FEC packet;

determining, for each row of the source packet matrix, whether at least one of the source packets has not been received and can be recovered based, in part, on a status information field of the row;

recovering a first source packet that has not been received;

updating a status information field of a column and a diagonal associated with the recovered first source packet;

determining, for each column of the source packet matrix, whether at least one of the source packets has not been received and can be recovered based, in part, on a status information field of the column;

recovering a second source packet that has not been received;

updating a status information field of a row and a diagonal associated with the recovered second source packet; and

determining, for each diagonal of the source packet matrix, whether at least one of the source packets has not been received and can be recovered based, in part, on a status information field of the diagonal;

recovering a third source packet that has not been received; and

updating a status information field of a row and a column associated with the recovered third source packet.

3. An apparatus for reconstructing a source file, comprising:

a receiver configured to receive a plurality of packets, wherein each packet is at least one of a source packet or an FEC packet;

a memory configured to store each source packet into a corresponding source packet matrix and to store each FEC packet;

a processor configured to determine, for each row of the source packet matrix, whether at least one of the source packets has not been received and can be recovered based, in part, on a status information field of the row; and

a decoder configured to recover a first source packet that has not been received and to update a status information field of a column and a diagonal associated with the recovered first source packet,

the processor being further configured to determine, for each column of the source packet matrix, whether at least one of the source packets has not been received and can be recovered based, in part, on a status information field of the column,

the decoder being further configured to recover a second source packet that has not been received and to update a status information field of a row and a diagonal associated with the recovered second source packet,

the processor being further configured to determine, for each diagonal of the source packet matrix, whether at least one of the source packets has not been received and can be recovered based, in part, on a status information field of the diagonal, and

the decoder being further configured to recover a third source packet that has not been received and to update a status information field of a row and a column associated with the recovered third source packet.

4. A method for reconstructing a source file, comprising the steps of:

receiving a plurality of packets, wherein each packet is at least one of a source packet or an FEC packet;

storing each source packet into a corresponding n-dimensional source packet cube, wherein the source packet cube has a plurality of directions, each direction including at least two of the source packets, each of the source packets being included in a plurality of non-parallel directions, and wherein n is an integer greater than or equal to 3;

storing each FEC packet;

determining, for each of the plurality of directions of the source packet cube, whether at least one of the source packets has not been received and can be recovered based, in part, on a status information field of the corresponding direction;

recovering a source packet that has not been received; and

updating a status information field of other directions of the source packet cube that include the recovered source packet.

5. A non-transitory computer-readable medium having stored thereon sequences of instructions, the sequences of instructions including instructions which, when executed by a computer system, cause the computer system to perform:

receiving a plurality of packets, wherein each packet is at least one of a source packet or an FEC packet;

storing each source packet into a corresponding n-dimensional source packet cube, wherein the source packet cube has a plurality of directions, each direction including at least two of the source packets, each of the source packets being included in a plurality of non-parallel directions, and wherein n is an integer greater than or equal to 3;

storing each FEC packet;

determining, for each of the plurality of directions of the source packet cube, whether at least one of the source packets has not been received and can be recovered based, in part, on a status information field of the corresponding direction;

recovering a source packet that has not been received; and

updating a status information field of other directions that include the recovered source packet.

6. An apparatus for reconstructing a source file, comprising:

a receiver configured to receive a plurality of packets, wherein each packet is at least one of a source packet or an FEC packet;

a memory configured to store each source packet into a corresponding n-dimensional source packet cube and to store each FEC packet, wherein the source packet cube has a plurality of directions, each direction including at least two of the source packets, each of the source packets being included in a plurality of non-parallel directions, and wherein n is an integer greater than or equal to 3;

a processor configured to determine, for each of the plurality of directions of the source packet cube, whether at least one of the source packets has not been received and can be recovered based, in part, on a status information field of the corresponding direction; and

a decoder configured to recover a source packet that has not been received and to update a status information field of other directions that include the recovered source packet.

Assignments (3)
RELEASE OF SECURITY INTEREST Recorded Aug 10, 2018
From: EDGEMONT CAPITAL LLC
To: KENCAST, INC.
Reel/Frame 046610/0551 →
PATENT SECURITY AGREEMENT Recorded Apr 15, 2016
From: KENCAST, INC.
To: ENHANCED CAPITAL CONNECTICUT FUND V, LLC
Reel/Frame 038439/0381 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 12, 2013
From: FANG, WEIMIN
To: KENCAST, INC.
Reel/Frame 029971/0138 →
Continuity (4)
Division 12365372 · Feb 4, 2009
Provisional Application 61027401 · Feb 8, 2008
Provisional Application 61055198 · May 22, 2008
Related Publication 20130185613A1 · Jul 18, 2013