Nach der Fertigstellung von ‘fpMP3Enc’ arbeite ich zur Zeit an einer generellen Streaming-Lösung namens ‘fpStream’. Ein Release dazu ist in den nächsten Wochen zwar noch nicht zu erwarten, weil ich noch den (Original-)Theora-Encoder integrieren möchte, dafür aber aktuell keine Zeit habe, weil ich noch an einem Artikel über asynchrone Programmierung brüte…
Ich kann aber schon soviel sagen, dass ‘fpStream’ ähnlich modular und erweiterbar wie DirectShow ist, nur dass Prozessor-, Datei- und Speichermanagement zentral von “Fiber Pool” verwaltet wird.
Bereits implementiert sind folgende Module:
- File Reader
- File Writer
- Console Writer
- MD5 sum
- WAV File Reader
- MP3 File Writer
- fpMP3Enc MP3 Encoder
- Original Vorbis Encoder
- Y4M File Reader
- Original Theora Encoder (in Arbeit)
Wie bei DirectShow kann man einen Graph aus den einzelnen Modulen bauen, und zwar (etwas umständlich) über die Kommandozeile, z.B.:
FPSTREAM readwavfile wav -f file.wav
+ fpmp3enc mp3enc_1 -s wav --vbr-new
+ fpmp3enc mp3enc_2 -s wav --cbr
+ writemp3file mp3_1 -s mp3enc_1 -f vbrfile.mp3
+ writemp3file mp3_2 -s mp3enc_2 -f cbrfile.mp3
Jedes Modul erhält einen Bezeichner (z.B. “wav”), der von anderen Modulen zum Verbinden über die Option “-s” verwendet wird. Das obige Beispiel erzeugt in einem Durchgang aus einer WAV-Datei zwei MP3-Dateien mit unterschiedlicher Kompression.
Wie gesagt, sobald Original-Theora integriert ist, gibt’s ein erstes Release dazu. Danach werde ich versuchen, eine multicore-fähige Version des Theora-Encoders zu implementieren.