Method and apparatus for forward error correction in a content distribution system
View Patent ↗Method, apparatus, and computer readable medium for forward error correction (FEC) in a content distribution system is described. One aspect of the invention relates to encoding frames of content. In one example, each frame is set partitioned into un-coded bits and bits to be encoded. For each frame, parity bits are computed for the bits to be encoded using low density parity check (LDPC) coding to generate a codeword having information bits and the parity bits. Groups of interleaved bits from the information bits in the codeword are generated. Symbols formed from the bit groups and the un-coded bits are pseudorandomly interleaved. The symbols are then mapped to points in a quadrature amplitude modulation (QAM) constellation.
1. A method of encoding frames of content, comprising:
set partitioning each frame into un-coded bits and bits to be encoded; and
for each frame:
applying a low density parity check (LDPC) code to the bits to be encoded to generate a codeword having information bits and parity bits;
generating groups of interleaved bits from bits in the codeword;
pseudorandomly interleaving symbols formed from the groups of interleaved bits and the un-coded bits; and
mapping the symbols to points in a quadrature amplitude modulation (QAM) constellation.
2. The method of claim 1 , wherein the applying step comprises, for each bit of the bits to be encoded:
accumulating the bit at accumulators associated with parity check equations, where an index of each of the accumulators with respect to the parity check equations is defined in accordance with:
[ x +( j )mod( N c ) Q ]mod( N−K ),
where x is a seed value selected from a table of seed values, j is an index of the bit with respect to the bits to be encoded, N c is equal to 600, Q is equal to 18, N is equal to 64,800, K is equal to 54,000, and mod denotes a modulus operation.
3. The method of claim 2 , wherein a parity check matrix for the codeword has 9600 columns of weight 12 , 44,000 columns of weight 3 , 10,799 columns of weight of weight 2 , and one column of weight 1 .
4. The method of claim 1 , wherein the information bits comprise four bits for each of the symbols, and wherein the un-coded bits comprise log 2 (M)−4 bits for each of the symbols, where M is a number of the points in the QAM constellation.
5. The method of claim 4 , where M is greater than or equal to 64.
6. The method of claim 1 , wherein each of the groups of interleaved bits comprises four bits.
7. The method of claim 1 , wherein the points in the QAM constellation are Gray-coded and set partitioned.
8. The method of claim 1 , where the frames of content comprise transport stream packets, and wherein the method further comprises:
computing parity bits for each of the transport stream packets using one of block coding or erasure coding.
9. Apparatus for encoding frames of content, comprising:
a data parser for set partitioning each frame into un-coded bits and bits to be encoded;
an encoder for applying a low density parity check (LDPC) code to the bits to be encoded for each frame to generate a codeword for each frame, the codeword having information bits and parity bits;
a bit interleaver/grouper for generating groups of interleaved bits from the information bits in the codeword for each frame; and
an interleaver/quadrature amplitude modulation (QAM) mapper for pseudorandomly interleaving symbols formed from the groups of interleaved bits and the un-coded bits in each frame and mapping the symbols to points in a QAM constellation for each frame.
10. The apparatus of claim 9 , wherein the encoder is configured to, for each bit of the bits to be encoded in each frame:
accumulate the bit at accumulators associated with parity check equations, where an index of each of the accumulators with respect to the parity check equations is defined in accordance with:
[ x +( j )mod( N c ) Q ]mod( N−K ),
where x is a seed value selected from a table of seed values, j is an index of the bit with respect to the bits to be encoded, N c is equal to 600, Q is equal to 18, N is equal to 64,800, K is equal to 54,000, and mod denotes a modulus operation.
11. The apparatus of claim 10 , wherein a parity check matrix for the codeword in each frame has 9600 columns of weight 12 , 44,000 columns of weight 3 , 10,799 columns of weight of weight 2 , and one column of weight 1 .
12. The apparatus of claim 9 , wherein the information bits comprise four bits for each of the symbols in each frame, and wherein the un-coded bits comprise log 2 (M)−4 bits for each of the symbols in each frame, where M is a number of the points in the QAM constellation.
13. The apparatus of claim 12 , where M is greater than or equal to 64.
14. The apparatus of claim 9 , wherein each of the groups of interleaved bits comprises four bits.
15. The apparatus of claim 9 , wherein the points in the QAM constellation are Gray-coded and set partitioned.
16. The apparatus of claim 9 , where the frames of content comprise transport stream packets, and wherein the apparatus further comprises:
an outer code module for computing parity bits for each of the transport stream packets using one of block coding or erasure coding.