Multicore-MP3-Encoder: Erster Meilenstein erreicht

In Fiber Pool 1.0.0.9 ist nun die erste Fassung des sog. Multicore-MP3-Encoders namens “fpMP3Enc”.

Wie zuvor beschrieben wurden das Lesen der WAV-Datei, der Encoder und das Schreiben der MP3-Datei als separate Tasks implementiert.
Die Kommunikation erfolgt jeweils über Queues, wie in folgender Abbildung dargestellt:

fpMP3Enc - Erster Meilenstein

Zu einer ersten Performancemessung wurde wie bisher ein Intel Q9450 QuadCore unter Vista x64 verwendet. Es wurden 61 WAV-Dateien mit etwas mehr als fünf Stunden Spielzeit (ca. 2,99 GiB) nach MP3 enkodiert.

Das Ergebnis für “fpMP3Enc x64″ war 22,8x schneller als Echtzeit (zum Vergleich: LAME 3.98.2 erreichte 25,6x).

Für den zweiten Meilenstein ist neben dem Aufräumen des LAME-Codes die Neuimplementierung des Codes zwischen lame_encode_buffer_interleaved und lame_encode_mp3_frame in einer neuen Task. Mit etwas Glück könnte das zu einer kleinen Performancesteigerung führen.

Notiz am Rande:
Während der Entwicklung von “fpMP3Enc” ist mir ein Fehler im I/O Scheduler aufgefallen, den ich leider noch nicht lösen konnte. Daher wird er im Projekt noch nicht verwendet.

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>