ThinkMeta LogoDeutsch
English
LAME: MDCT

Die modifizierte, diskrete Cosinus-Transformation (MDCT) wird im Anschluss an das psy­cho­akustische Modell durchgeführt. Ihr Ergebnis wird im Quantisierer verwendet.

MDCT wird in zwei Stufen durchgeführt:

  1. Berechnung der Subband-Samples
  2. Ausführung der MDCT

Die erste Stufe hängt von den Eingabe-Samples ab. Die zweite Stufe benötigt die Sub­band-Samples der ersten Stufe und zusätzlich die Blocktypen des Frames.

Der Pseudocode in einer asynchronen Programmiersprache ist wie folgt:

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

Diese Aufteilung des Vorgangs wurde in der Fallstudie nicht implementiert.

Stattdessen wurde der Vorgang zur parallelen Ausführung der MDCT für den linken und rechten Kanal aufgeteilt, da zwischen beiden Kanälen keine Abhängigkeiten existieren.

Der Pseudocode ist wie folgt:

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

Und:

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

Als weitere Optimierung werden in der Klasse "MDCTTask" nach Ausführung der MDCT für ein Granule ihre Ergebnisse sofort für den Quantisierer freigegeben:

MDCT

Die obige Abbildung zeigt das Abhängigkeitsdiagramm für einen Kanal.