AC3 Decoder

The decoder uses also a block-oriented process. A complete code block is loaded into an input buffer before processing the data. After the separation into code blocks the signal is checked for transmission errors. The error correction data in the data stream is used to correct erroneous information.

AC3 DecoderIf a fatal error occurs, which cannot be corrected, the last correct block is replayed until the next correct block is transmitted. The signal reconstruction based on an overlap/add algorithm avails the loop of the last correct block for a certain time frame without any loss of quality. Long term errors then force the system to mute the audio channel or, if existing, to use a separate analogue audio track. These additional tracks are included e.g. in movie soundtracks.

The data unpacking is done in a few stages. First all static data are unpacked. This includes the still coded mantissa, the exponents, coupling coefficients and the mode flags. With this information it is possible to recover the bit allocation data. Finally the variable data is decoded which includes the mantissa of the TDAC filterbank coefficients.

The decoders bit allocation process is almost identical to the process used by the encoder. Based on the bit stream included control data an inverse bit allocation process is performed. This information is important to decode the variable mantissa. The separately coded envelope and carrier information are re-combined using the coupling coefficients. A floating point to fixed point conversation re-combines mantissa and exponents. Finally the inverse TDAC filterbank performs a re-transformation of the data to the time domain. This is done using windowing and overlap/add techniques and recovers the digital output audio signal.