ThinkMeta LogoDeutsch
English
LAME: Analyse der Algorithmen

Nach Durchsicht des Source Codes und der Analyse der Algorithmen wurden drei Hie­rar­chie­ebenen gefunden, die asynchrone Programmierung ermöglichen:

1. Dateien:
Auf oberster Ebene werden mit LAME Dateien verarbeitet. Je Enkodiervorgang wird eine Datei zum Lesen der Eingabedaten und eine Datei zum Schreiben der Ausgabedaten ver­wen­det.

Auf dieser Ebene existieren zwischen zwei Enkodiervorgängen keine Abhängigkeiten, so­dass prinzipiell beliebig viele Dateien asynchron verarbeitet werden können.

2. Frames:
Auf der mittleren Ebene werden durch den LAME-Encoder Frames verarbeitet. Frames werden aus der eingelesenen Datei gewonnen und enthalten jeweils 1152 Audio-Samples.

Jedes Frame durchläuft im Encoder mehrere Stufen, die zur Erzeugung der komprimierten Ausgabedaten notwendig sind. Im Einzelnen sind dies:

  1. Konvertierung der Integer-Samples in Gleitkomma-Samples und Skalierung
  2. Berechnung des Replay-Gain
  3. Berechnung der psychoakustischen Eigenschaften
  4. Anwendung der modifizierten, diskreten Cosinus-Transformation (MDCT)
  5. Quantisierung
  6. Schreiben in den Bit-Stream

Durch die Verzögerung von einem Frame in den Algorithmen, ist die Verarbeitung eines Frames immer von den Ergebnissen seines Vorgängers abhängig.
Die Datenabhängigkeiten unterscheiden sich leicht in den jeweiligen Algorithmen, sind aber grundsätzlich sehr stark.

3. Sub-Frames (Granules)/Kanäle:
Auf der untersten Ebene werden in den einzelnen Stufen sog. Granules und Kanäle (links/rechts) verarbeitet.

Die Abhängigkeiten zwischen Granules, zwischen Kanälen oder zwischen Granules und Kanälen unterscheiden sich in den jeweiligen Algorithmen und Stufen.