Systems, methods, apparatus and computer program products for highly reliable file delivery using compound and braided fec encoding and decoding
AssigneeKencast, Inc.
InventorWeimin Fang
Life of this patent
Estimating the term…
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.
Claims22
-16. (canceled)
A method for encoding a source file to be transmitted to a receiver, comprising the steps of:
- dividing a source file into a plurality of source packets;
- dividing the plurality of source packets into a plurality of groups;
- generating a source packet matrix from the plurality of source packets in one of the plurality of groups;
- calculating a plurality of Forward Error Correction (FEC) packets for each column of the source packet matrix;
- calculating a plurality of FEC packets for each row of the source packet matrix;
- and
- transmitting the source packets in the source packet matrix and the plurality of FEC packets for each row and column of the source packet matrix.
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:
- dividing a source file into a plurality of source packets;
- dividing the plurality of source packets into a plurality of groups;
- generating a source packet matrix from the plurality of source packets in one of the plurality of groups;
- calculating a plurality of Forward Error Correction (FEC) packets for each column of the source packet matrix;
- calculating a plurality of FEC packets for each row of the source packet matrix;
- and
- transmitting the source packets in the source packet matrix and the plurality of FEC packets for each row and column of the source packet matrix.
An apparatus for encoding a source file to be transmitted to a receiver, comprising:
- a processor configured to divide a source file into a plurality of source packets and divide the plurality of source packets into a plurality of groups;
- a memory configured to store a source packet matrix including the plurality of source packets in one of the plurality of groups;
- an encoder configured to generate a plurality of Forward Error Correction (FEC) packets for each column of the source packet matrix and a plurality of FEC packets for each row of the source packet matrix;
- and
- a transmitter configured to transmit the source packets in the source packet matrix and the plurality of FEC packets for each row and column of the source packet matrix.
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 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;
- and
- updating a status information field of a row associated with the recovered second source packet.
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 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;
- and
- updating a status information field of a row associated with the recovered second source packet.
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, wherein the decoder updates a status information field of a column 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 associated with the recovered second source packet.
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.
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.
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.
A method for encoding a source file to be transmitted to a receiver, comprising the steps of:
- dividing a source file into a plurality of source packets;
- dividing the plurality of source packets into a plurality of groups;
- generating an n-dimensional source packet cube from the plurality of source packets in one of the plurality of groups, 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;
- grouping the plurality of directions into a plurality of sets, wherein directions within each set are parallel;
- calculating a plurality of Forward Error Correction (FEC) packets for each of the plurality of directions of the source packet cube;
- and
- transmitting the source packets in the source packet cube and the plurality of FEC packets.
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:
- dividing a source file into a plurality of source packets;
- dividing the plurality of source packets into a plurality of groups;
- generating an n-dimensional source packet cube from the plurality of source packets in one of the plurality of groups, 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;
- grouping the plurality of directions into a plurality of sets, wherein directions within each set are parallel;
- calculating a plurality of Forward Error Correction (FEC) packets for each of the plurality of directions of the source packet cube;
- and
- transmitting the source packets in the source packet cube and the plurality of FEC packets.
An apparatus for encoding a source file to be transmitted to a receiver, comprising:
- a processor configured to divide the source file into a plurality of source packets and divide the plurality of source packets into a plurality of groups;
- a memory configured to store an n-dimensional source packet cube including the plurality of source packets in one of the plurality of groups, 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, wherein the plurality of directions are grouped into a plurality of sets, wherein directions within each set are parallel, and wherein n is an integer greater than or equal to 3;
- an encoder configured to generate a plurality of Forward Error Correction (FEC) packets for each of the plurality of directions of the source packet cube;
- and
- a transmitter configured to transmit the source packets in the source packet cube and the plurality of FEC packets.
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.
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.
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.
Dependencies are inferred from the claim text.