Dirac Home
Navigation item arrowHome
Navigation item arrowDocumentation
Navigation item arrowDirac Algorithm
Navigation item arrowContents
Navigation item arrowIntroduction
Navigation item arrowArchitecture
Navigation item arrowRDO
Navigation item arrowTransform coding
Navigation item arrowMotion estimation
Navigation item arrowMacroblocks
Navigation item arrowMotion vector coding
Overall architecture

Previous: Introduction
Next: Rate Distortion Optimisation

Overall, the codec is a classic motion-compensated hybrid codec. The coder has the architecture shown below, whilst the decoder performs the inverse operations.

Downloading a GIF rendering as your browser doesn't support SVG. Please ignore the "install additional plugins" message if you see it. More details Sorry, your browser can't connect to the server to download a GIF substitute.
         Either install an SVG-enabled browser or connect to the internet to download the diagram.

Figure: Overall hybrid encoder architecture

There are four main elements or modules to the coder:

  • Transform and scaling involves taking frame data and applying a transform (in this case the wavelet transform) and scaling the coefficients to perform quantisation;
  • Entropy coding is applied to quantised transform coefficients and to motion vector (MV) data and performs lossless compression on them;
  • Motion estimation (ME) involves finding matches for frame data from previously coded frames, trading off accuracy with motion vector bit rate;
  • Motion compensation (MC) involves using the motion vectors to predict the current frame, in such a way as to minimise the cost of encoding the residual data.

The following sections describe these modules in more detail, after first describing the rate-distortion framework used throughout the encoder.

Currently the encoder does not support interlaced coding. This just means that there are no special tools for motion estimation and motion compensation which take into account the different temporal locations of the two fields within a frame. We hope to develop these tools in the next few months, but interlaced video can be coded using the standard tools, although it won't perform as well.

The codec can support any frame dimensions and common chroma formats (luma only, 444, 422, 420, 411) by means of frame padding. The padding ensures that the wavelet transform can be applied properly. Frame padding also allows for any size blocks to be used for motion estimation, even if they do not evenly fit into the picture dimensions. NB: frame padding may be required because the (normally subsampled) chroma components have need padding even if the luma does not; in this case all components are padded.

Previous: Introduction
Next: Rate Distortion Optimisation