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:

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.