LAME: MDCT
Die modifizierte, diskrete Cosinus-Transformation (MDCT) wird im Anschluss an das psychoakustische Modell durchgeführt.
Ihr Ergebnis wird im Quantisierer verwendet.
MDCT wird in zwei Stufen durchgeführt:
- Berechnung der Subband-Samples
- Ausführung der MDCT
Die erste Stufe hängt von den Eingabe-Samples ab. Die zweite Stufe benötigt die Subband-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:
Die obige Abbildung zeigt das Abhängigkeitsdiagramm für einen Kanal.
|