ThinkMeta LogoDeutsch
English
LAME: Konvertierung der Samples

Für den Enkodiervorgang in LAME müssen die Samples im Gleitkomma-Format und ge­trennt in Kanälen vorliegen. Da in WAV-Dateien die Samples im 16-Bit-Integer-Format und die Kanäle "interleaved" gespeichert sind, müssen sie zunächst konvertiert werden.

Dieser Vorgang ist in der Klasse "SamplePreprocessor" implementiert, die auch die op­tio­nale Skalierung der Samples durchführt.

Folgende Abhängigkeiten existieren für diesen Vorgang:

  1. Eingabedaten: Die Samples werden aus der Datei in 64K-Blöcken in den Haupt­spei­cher gelesen. Der Vorgang blockiert, wenn keine Samples verfügbar sind.
  2. Ausgabedaten: Die konvertierten Samples müssen ebenfalls in den Hauptspeicher geschrieben werden. Der Vorgang kann blockieren, wenn gemäß der Spei­cher­ver­wal­tungs­strategie kein Speicher zur Verfügung gestellt werden kann.

Um nachfolgende Vorgänge möglichst schnell fortsetzen zu können, wird alle 1152 Samp­les Speicher zur weiteren Bearbeitung freigegeben:

Konvertierung der Samples

Da in diesem Vorgang keine Frame-Abhängigkeiten existieren, kann die Konvertierung unabhängig vom restlichen Enkodiervorgang ausgeführt werden.

Der Konverter verwendet SSE4-Befehle und kann 4 Samples parallel verarbeiten. Dies lässt sich prinzipiell weiter beschleunigen, indem die Eingabedaten auf mehrere Konverter aufgeteilt werden. Angesichts der Tatsache, dass die weitere Bearbeitung eines Frames jedoch wesentlich langsamer als die Konvertierung ist, werden dadurch Per­for­mance­stei­ge­run­gen kaum feststellbar sein.