There are many situations in which a data stream is transmitted from a transmitter to a receiver over a communication channel. A communication channel may exist in one (or more) of many different possible networks. For example, a communication channel may exist in the internet or in a wireless network such as a mobile telecommunications network. The data in a data stream may be divided into data packets for transmission over a communication channel. The protocol for dividing the data into data packets (e.g. the form of the headers of the data packets, and other such implementation details) may depend upon the nature of the communication channel on which the data is to be transmitted, e.g. the type of network through which the data packet is to be transmitted. The data may be encoded by an encoder prior to transmission from the transmitter and decoded by a decoder after reception at the receiver.
In an ideal system, the communication channel is lossless such that every data packet transmitted from the transmitter over the communication channel is received at the receiver. However, in real physical systems, the communication channel may be lossy, meaning that some of the transmitted data packets will be lost on the communication channel and as such will not be received at the receiver. This may be detrimental. Correction schemes can be used at the receiver to help recover at least some of the lost data packets.
As an example, forward error correction (FEC) is one correction scheme which can be used to combat packet loss in a communication channel.