There are two modes of Forward Error Correction (FEC) available in the codec:
1.In-band FEC: Transmits a secondary stream of audio data packets over a single in-band connection. This is relevant for Tieline Music and MusicPLUS encoding as well as Opus. Note: Opus encoding bit-rates are variable and therefore FEC percentages will vary slightly compared to those outlined in the following table.
2.RFC 2733 compliant FEC (Sessionless connections only): Transmits audio packets over a separate connection.
FEC is designed to increase the stability of UDP/IP connections in the event that data packets are lost. FEC works by sending a secondary stream of audio packets over a connection so that if your primary audio stream packets are lost or corrupted, then packets from the secondary stream can be substituted to replace them. The amount of FEC required depends on the number of data packets lost over the IP connection.
Both the local and remote codec FEC settings can be configured in the codec before dialing. FEC should only be used if link quality displayed on the codec is below S:99 R:99, as it is of no benefit otherwise. Tieline and RFC2733 compliant FEC settings are outlined in the following table with their bit rate ratios.
FEC Setting |
Bit rate Ratios |
Connection Use |
In-band FEC |
RFC 2733 FEC |
100% (Lowest delay) |
A simultaneous dual-redundant stream (1:1 ratio) is sent from the codec. Twice the connection bit rate is required to operate the codec using the 100% setting. E.g. if your connection is 14,400Kbps, you will require an additional 14,400 Kbps of bandwidth to allow for the FEC data stream. |
Recommended to be used over wireless and international connections. |
Yes |
Yes |
50% |
Additional data is sent by FEC in a ratio of 2:1. |
Recommended for international & national connections |
Yes |
Yes |
33% |
Additional data is sent by FEC in a ratio of 3:1. |
Recommended for national and local connections. |
Yes |
Yes |
25% |
Additional data is sent by FEC in a ratio of 4:1. |
Recommended for national and local connections. |
No |
Yes |
20% |
Additional data is sent by FEC in a ratio of 5:1. |
Recommended for local and LAN connections. |
Yes |
Yes |
10%(Highest delay) |
Additional data is sent by FEC in a ratio of 10:1. |
Recommended for local and LAN connections. |
No |
Yes |
Off |
FEC is off in the codec and the connection bandwidth is equal to the connection bit rate setting in the codec. |
Recommended for wired LAN connections & managed T1 & E1 connections for STLs with connections that aren’t shared & have quality of service (QoS). |
Yes |
Yes |
Important Notes: •The FEC Delay configured should take into account the packet arrival (jitter buffer) strategy at the remote codec. For example, if the maximum jitter buffer at the remote codec is 1000 ms, the FEC Delay setting should be lower, to ensure there is enough time for FEC packets to arrive and replace lost packets prior to audio playout. •By default, the codec will use the audio stream IP address as the remote FEC IP address as well. This can be adjusted in the Program Manager panel in the HTML5 Toolbox web-GUI. •The default local and remote UDP audio FEC ports are 9002. •Any of the available algorithms can be selected when configuring RFC 2733 FEC in the codec. |
If you enter a FEC setting of 20% and you are losing one packet in every five sent, the lost packet will be replaced by FEC to maintain the quality of the connection. If you are losing more packets than this, say one in three, it will be necessary to increase the FEC setting to 33% to compensate.
Note: There is an inverse relationship between FEC settings and the jitter-buffer millisecond setting that you use for IP connections.
So why not use 100% FEC every time? The answer is because you need twice the bit rate to achieve full redundancy and depending on the link conditions, this could potentially cause more dropouts because of network congestion than it fixes. Here is a simple rule to remember: Your maximum uplink speed is the maximum bandwidth you have to play with. As a rule of thumb, try not to exceed more than 80% of your maximum bandwidth. If your link is shared, be even more conservative.
You should also consider the maximum upload speed at the remote end too. Is the connection shared at either end? Your bit rates, FEC settings and buffer rates must be pre-configured at both ends before you connect, so it's always better to set your connection speed and balance your FEC according to the available uplink bandwidth at each end for best performance.
As an example, if you want 15 kHz mono (using the Tieline Music Algorithm) you will need at least a 24kbps connection for audio. Adding 100% FEC will add another 24kbps making your bit rate 48kbps plus some overhead of around 10kbps is required. If you're on a 64kbps uplink, you should consider reducing your FEC to minimize the likelihood of exceeding your bandwidth capacity.
Here is another example, if you want 15 kHz stereo, you need at least 56kbps for the audio. 100% FEC requires at least 112kbps and 50% FEC requires at least 84kbps. If your uplink speed is 256kbps and you're on a shared connection, then choosing a lower FEC setting of 20%-33% may give you better results.
There is a trade-off between the quality and the reliability of an IP connection – particularly when FEC is activated on your codecs. However, it is possible in certain situations to configure different FEC settings on each codec to match connection bandwidth capabilities at either end of the link, conserve bandwidth and create more stable IP connections.
For example, if your broadcast is a one-way broadcast from a remote site, i.e. you are not using the return path from the studio, or only using it for communications purposes, it is possible to reduce or turn off FEC at the studio codec. This effectively reduces the bandwidth required over the return link and increases the overall bandwidth available for the incoming broadcast signal from the remote site.