A channel is an abstract model describing how the received (or retrieved) data is associated with the transmitted (or stored) data. Channel coding starts with Claude Shannon's mathematical theory of communication.
Error detection/correction coding
Channel coding can be either error detection coding or error correction coding. When only error detection coding is employed, the receiver can request a transmission repeat, and this technique is known as automatic repeat request (ARQ). This requires two-way communications. An ARQ system requires a code with good error-detecting capability so that the probability of an undetected error is very small.
Forward error correction (FEC) coding allows errors to be corrected based on the received information, and it is more important for achieving highly reliable communications at rates approaching channel capacity. For example, by turbo coding, an uncoded BER of 10−3 corresponds to a coded BER of 10−6 after turbo decoding. For applications that use simplex (one-way) channels, FEC coding must be supported since the receiver must detect and correct errors, and no reverse channel is available for retransmission requests.
Another method using error detection coding is error concealment. This method processes data in such a way that the effect of errors is minimized. Error concealment is especially useful for applications that carry data for subjective appreciation, such as speech, music, image, and video. Loss of a part of the data is acceptable, since there is still some inherent redundancy in the data.