Transform coding architecture

Once any motion compensation has been performed, motion -compensated residuals are treated almost identically to Intra frame data. In both cases we have up to three (luminance and two chrominance) components in the form of two-dimensional arrays of data values. The frame component data is coded in three stages. First the data arrays are wavelet- transformed using separable wavelet filters and divided into subbands. Then they are quantised using RDO quantisers. Finally, the quantised data is entropy coded.

The architecture of coefficient coding is shown here:

Figure: coefficient coding architecture

As can be seen, each wavelet subband is coded in turn. Both the quantisation and the entropy coding of each band can depend on the coding of previously coded bands. This does limit parallelisation, but the dependences are limited to parent-child relationships so some parallelisation/multi-threading is still possible.

The only difference, in the current version, between Intra frame coefficient coding and Inter frame residual coefficient coding lies in the use of prediction within the DC wavelet subband of Intra frame components.

At the decoder side, the three stages of the coding process are reversed. The entropy coding is decoded to produce the quantised coefficients, which are then reconstructed to produce the real values. Then, after undoing any prediction, the inverse transform produces the decoded frame component. The Dirac encoder has to maintain a local decoder within it, in part so that the result of the compression picture can be viewed at the time of compression, but mainly because compressed pictures must be used as reference frames for subsequent motion compensation else the encoder and the decoder will not remain in sync.

Thus, thoroughout the encoding process, uncompressed frame data is gradually overwritten with compressed and locally decoded frame data and these locally-decoded frames must be identical to those that the real decoder would produce. In order to ensure this, Dirac uses common libraries for all the operations that need to be identical in the encoder and the decoder.

Next: Wavelet Transform

Table of contents Back to Transform Coding