ThinkMeta LogoDeutsch
English
LAME: MDCT

The modified, discrete cosine transformation (MDCT) is applied right after the psychoacoustic model. The result is used by the quantizer.

MDCT is processed in two stages:

  1. Computation of the subband samples
  2. Execution of MDCT

The first stage depends on the input samples. The second stage requires the subband samples of the first stage and also the frame's block types.

The pseudo code in an asynchronous programming language is as follows:

MDCT(frames)
{
  CalculateSubbandSamples(frames);
  RawMDCT(frames);
}

This split of the MDCT task was not implemented in this case study.

Instead of this the task was split to execute MDCT in parallel for the left and right channel, since no dependencies exist between both channels.

The pseudo code is as follows:

MDCT(frames)
{
  MDCTChannel(frames, left);
  MDCTChannel(frames, right);
}

And:

MDCTChannel(frames, channel)
{
  CalculateSubbandSamples(frames, channel);
  RawMDCT(frames, channel);
}

As further optimization the results are passed to the quantizer immediately after MDCT has been executed for one granule.

MDCT

The above picture shows the dependency diagram for one channel.