|

Wer Internetradio hört, hört oft AAC: Der Deutschlandfunk und viele andere Sender liefern ihren Ton in AAC oder HE-AAC, dazu kommen Podcasts und die M4A-Dateien jeder Musiksammlung. Für den klassischen Amiga gibt es dafür jetzt die faad2.library – einen Port von FAAD2 2.11.4, dem freien AAC-Decoder, als gemeinsam nutzbare Bibliothek für AmigaOS 3.x. Sie dekodiert AAC-LC, HE-AAC mit SBR und HE-AACv2 mit Parametric Stereo, dazu LTP, LD und ER, aus ADTS-, ADIF- und MP4-Strömen. Die Schnittstelle ist die vollständige libfaad-API mit den gewohnten NeAACDec-Funktionen, vorhandener libfaad-Code läuft darum meist unverändert. Die Bibliothek ist reentrant, beliebig viele Tasks dürfen gleichzeitig dekodieren, und jeder Decoder arbeitet auf einem eigenen Stack von 128 KB – das aufrufende Programm braucht keinen großen Stack.
Beiliegen zwei Fassungen. fpu rechnet mit Fließkomma und ist für jeden 68k mit FPU gedacht: 68020 und 68030 mit 68881/68882, 68040, 68060 und den 68080 der Vampire V4. Die rechenintensiven Teile – Filterbänke, DCT, Parametric Stereo und die SBR-Hüllkurven – sind dafür von Hand in FPU-Assembler geschrieben. fixed rechnet in Festkomma und läuft auf 68020 bis 68060 ohne FPU. Sie enthält gleich zwei Decoder und wählt beim Laden den passenden: für 68020 bis 68040 und den 68080 einen mit der 64-Bit-Multiplikation des Prozessors und Assembler, für den 68060, dem diese Multiplikation in Hardware fehlt, einen in reinem C. Die Faustregel lautet: mit FPU die fpu-Fassung, sonst fixed. Version faad2.library FULL zeigt, welche installiert ist.
Auf einer Vampire V4 Standalone dekodiert die fpu-Fassung AAC-LC mit 128 kbit/s 3,3-mal schneller als Echtzeit, HE-AAC und HE-AACv2 mit 48 kHz rund 1,5-mal. Bei echten Sendern sind es 2,6-fach für AAC-LC mit 192 kbit/s, 1,6-fach für HE-AAC mit 64 kbit/s und 1,5-fach für HE-AACv2 mit 48 kbit/s. Im Musikabspieler LumiAMP läuft der HE-AACv2-Strom des Deutschlandfunks auf der V4SA ohne Aussetzer bei knapp 60 Prozent Prozessorlast. Für langsamere Rechner bringt der Port eine Erweiterung mit: Auf Wunsch lässt die Bibliothek SBR weg und dekodiert nur den AAC-Kern mit halber Abtastrate. Für 18 Sekunden Musik sinkt die Rechenzeit damit bei HE-AAC von 12 auf 3 Sekunden, bei HE-AACv2 auf eine Sekunde – dafür endet der Klang an der Bandbreite des Kerns, oft bei 8 kHz.
Mit FAAD2 2.11.4 klingt auch die Festkomma-Fassung so gut wie die mit FPU. Bis 2.11.3 übersprang der Festkomma-Decoder wegen eines zu kleinen Grenzwerts unbemerkt die meisten SBR-Hüllkurvenanpassungen; verglichen mit ffmpeg steigt der Rauschabstand jetzt bei HE-AAC von 33 auf 69 dB und bei HE-AACv2 von 15 auf 46 dB, für rund 10 Prozent mehr Rechenzeit. Ebenfalls neu: Mono bleibt mono. HE-AACv2-Radioströme beginnen deshalb einkanalig und schalten nach einigen Frames auf Stereo um – Programme müssen die Kanalzahl jedes dekodierten Frames auswerten. Ältere Programme laufen mit der neuen Bibliothek weiter.
Das Archiv bringt neben den beiden Bibliotheken den Kommandozeilen-Decoder faad mit, der AAC und MP4 in WAV oder Rohdaten wandelt. Für Programmierer liegt ein SDK bei: Header für GCC, VBCC und SAS/C samt FD und SFD, die statische libfaad.a beider Fassungen und ein vollständiges Beispielprogramm. FAAD2 steht unter der GNU GPL v2, das gilt auch für Programme, die die Bibliothek nutzen; für kommerzielle Nutzung von AAC können Patentlizenzen nötig sein. Den Port von AMIGAworld gibt es im Aminet unter util/libs/faad2 .
|