ThinkMeta LogoDeutsch
English
LAME: Berechnung der psychoakustischen Eigenschaften

Dies ist der erste Vorgang, der ein Frame bearbeitet. Er gliedert sich in zwei Un­ter­vor­gänge:

  1. Ermittlung des Blocktyps (long/short)
  2. Berechnung der Energie, Entropie, usw.

Da die Ermittlung des Blocktyps nur von den Eingabedaten abhängig ist, lässt sich der Vorgang in einer asynchronen Programmiersprache wie folgt beschreiben:

PsychoAcoustics(frames)
{
  AttackDetection(frames);
  RestOfPsychoAcoustics(frames);
}

1. Ermittlung des Blocktyps (AttackDetection)
Wie oben erwähnt, hängt die Ermittlung des Blocktyps nur von den konvertierten Samples ab. Der Blocktyp wird für jedes Sub-Frame (Granule) und jeden Kanal ermittelt. Er wird so­wohl im MDCT-Vorgang als auch im Quantisierer benötigt.

2. Berechnung der psychoakustischen Eigenschaften
Dieser Vorgang hängt direkt von der Ermittlung des Blocktyps ab. Nur beim Enkodieren in konstanter Bitrate (CBR) existiert zusätzlich eine Abhängigkeit zum Quantisierer. Die be­rech­ne­ten Werte werden vom Quantisierer benötigt.

Für den gesamten Vorgang wurden mehrere Klassen implementiert, deren Dateien im Pro­jekt­mappenordner "PSY" abgelegt wurden.

Optimierungen:
Neben der Aufteilung des Vorgangs in zwei kleinere Vorgänge war es auch möglich, Teile mit SSE2-Befehlen zu beschleunigen.

Nach der Ermittlung der Blocktypen der beiden Kanäle des ersten Granules, werden diese als Optimierung sofort für die weiteren Vorgänge freigeben, während die Ermittlung der Block­typen des zweiten Granules noch aussteht.

Die wichtigste Änderung war jedoch die Auflösung einer Abhängigkeit zum Quantisierer: In der Originalversion wird dort der Wert "maskingLower" berechnet, der für die Be­rech­nung der psychoakustischen Eigenschaften verwendet wird. Da "maskingLower" relativ einfach zu berechnen ist, wird er zusätzlich auch in diesem Vorgang lokal berechnet, ohne auf den Quantisierer warten zu müssen.

Somit erhält man folgendes Abhängigkeitsdiagramm:

Psychoakustik

Weitere Optimierungsmöglichkeiten wurden in der Fallstudie nicht untersucht.