Forward Error Correction
The transfer of high-quality signal through defective channels may require additional coding in the form of error protection. Such an additional error protection means consequently always the need for additional bandwidth, i.e. bit rate. If we only want to detect errors the necessary additional redundancy is small in comparison to a protection that is able to recontruct defective signal components. Then the required bit rate for error protection might be equal to or even bigger than the actually used signal itself.
The Internet can cause various error situations:
- routers discarding damaged packages (e.g. invalid checksum)
- an overload situation that causes a router to discard packages
- different packages of the same stream are routed differently – which may cause high latency and subsequently package loss
Forward Error Correction (FEC) provides the possibility of error detection and/or correction by adding redundant data streams. Thereby retransmission or corruption of data can often be avoided at the cost of higher bandwidth needs and increased delay.
The FEC algorithm used by MAYAH is described in the “Pro-MPEG Code of Practice #3 release (www.pro-mpeg.org) based on RFC 2733 (www.ietf.org/rfc/rfc2733.txt).
![]() |
| Lost Packets at an RTP transmission using FEC (4,4) matrix Recreation of lost packets in a FEC (4,4) Matrix |
FEC generates additional packets using matrixes. Every FEC matrix has got L columns and D rows to create additional packets, but with the following restrictions:
L x D <= 100 1 <= L <= 20 4 <= D <= 20
FEC packets are generated from RTP packets by a XOR (exclusive or) operation. Each FEC packet corresponds to one row or column.
![]() |
| FEC Parameter |
L,D
Number of columns (L) and rows (D)
Mode
C: column FEC only CR: column and row FEC
Overhead
Overhead introduced by FEC Example: L=4, D=2 -> matrix size = 8 packets -> 4 column FEC packets generated and transmitted per matrix equals 50%
Buffer size
In order to perform the FEC operation L x D packets have to be retained in a buffer. The above table presumes that one media packet has a size of 1316 bytes. A FEC packet has the size of a media packet plus a special FEC header of 16 bytes: 1316bytes + 16 bytes = 1332 bytes. A matrix size of 4 x 2 = 8 corresponds thus to a buffer of 8 x 1332 = 10656 bytes.
Latency
This shows what a given buffer size corresponds to at a certain line speed (3Mbps, 10Mbps, 100Mbps). (10656bytes x 8 = 85248 bits / 3 Mbps = 0,02842s = 28,42ms)
Recovery
The maximum number of IP-Packets that can be recovered. In CR mode this value is determined by the pattern of which packets are lost.




