Login
Newsletter
Werbung

Mo, 26. Juli 2010, 10:00

Software::Video

FFmpeg stellt schnellen VP8-Dekoder vor

FFmpeg-Entwickler haben in den letzten Wochen eine von Grund auf neue Implementierung des VP8-Video-Dekoders geschrieben, die das Original deutlich übertrifft.

Wie Jason Garrett-Glaser in seinem Blog schreibt, begann er mit zwei weiteren Entwicklern, im Rahmen des FFmpeg-Projektes einen neuen Dekoder für VP8 zu schreiben. Garrett-Glaser war einer der ersten, die nach der Freigabe von VP8 durch Google und der Vorstellung des WebM-Projektes den Code des originalen Dekoders (libvpx) einer Analyse unterzogen. Dabei merkte er an, dass dessen Geschwindigkeit noch einiges zu wünschen übrig lasse, was teilweise an ungeschickter Programmierung lag, die den Cache zu schlecht nutzte.

Das Resultat von mehreren Wochen Arbeit ist nun der neue Dekoder ffvp8. Gleichzeitig arbeitete Google an Verbesserungen am eigenen Dekoder, die nach Auskunft der FFmpeg-Entwickler allerdings so weit wie möglich in ffvp8 schon berücksichtigt wurden. Noch sind längst nicht alle möglichen Optimierungen in ffvp8 gemacht, ein Geschwindigkeitsvergleich der beiden Dekoder auf mehreren Rechnern zeigt jedoch deutliche Vorteile für ffvp8. Auf 32-Bit-Systemen ist der neue Dekoder über 20% schneller als der originale, auf 64-Bit-Systemen ist der Unterschied noch viel größer.

Das FFmpeg-Team begann zunächst damit, einen Dekoder zu schreiben, dessen Ausgabe Bit für Bit der Ausgabe des originalen Dekoders entsprach. Das war nicht so einfach, da die Dokumentation von VP8 nach Angaben der Entwickler unvollständig ist und teilweise nicht dem realen Verhalten des Dekoders entspricht. Das Team hat daher zusätzliche Konformitätstest entwickelt und hofft, dass Google diese in VP8 aufnimmt. Nachdem der Dekoder lief, wurden die kritischen Teile unter Ausnutzung der SIMD-Instruktionen in Assembler geschrieben. Das war allerdings nur ein Teil der Geschwindigkeitssteigerung. Ein anderer Teil kommt durch die bessere Cache-Nutzung zustande, da der neue Dekoder im Gegensatz zum Original nur einen Durchlauf durch die Daten benötigt.

Der Dekoder besteht nun aus 1700 Zeilen C-Code, 500 Zeilen DSP-Code und 3000 Zeilen Assembler-Code. Neben weiteren Optimierungen stehen auf dem Plan auch die Unterstützung von PowerPC- und ARM-Prozessoren. Die Entwickler hoffen, dass die Browser-Hersteller den neuen Dekoder verwenden. Insbesondere Google selbst könnte den Dekoder in den Chrome-Browser einbinden, da dieser ohnehin schon die FFmpeg-Bibliothek libavcodec verwendet. Denn selbst wenn der Geschwindigkeitsunterschied nur 20% beträgt, kann dies den Unterschied zwischen einem abspielbaren und einem nicht abspielbaren Video ausmachen.

Werbung
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung