
Videokomprimierung und -decodierung Codecs und Decoder

Bevor Sie ernsthafte Tests durchführen, müssen Sie einige einfache Dinge klären. Es ist wichtig, zwischen Codecs und Dateicontainern zu unterscheiden. Beispielsweise werden Blu-ray-Dateien häufig mit der Erweiterung .m2ts angezeigt. Das BDAV-Containerformat (Blu-ray Disc Audio / Video) fungiert jedoch im Allgemeinen als Speichercontainer. In diesem Fall können Sie drei Codecs verwenden: MPEG-2, H.264 und VC-1.

Was ist der Unterschied zwischen einem Codec und einem Container? Denken Sie an Ihren letzten Urlaub. Ihr Koffer ist in diesem Fall ein “Container”. Gepäck ist Inhalt (Video, Audio, Untertitel und andere Informationen), und ein Codec ist die Art und Weise, wie Sie alles (Daten) in Ihrem Koffer speichern, damit es passt. Sie können Dinge in einen Koffer packen, indem Sie sie vorsichtig falten (ein Codec) oder sie in Rollen drücken und sie mit Klebeband umwickeln, damit sie besser passen (ein anderer Codec). Dies gilt für alle Multimedia-Inhalte. Das Microsoft AVI-Format (Audio Video Interleave) ist beispielsweise ein Dateicontainer, das darin enthaltene Video kann jedoch mit verschiedenen Codecs von DivX bis MPEG-2 codiert werden.
Wenn Sie etwas auf einem Videoplayer wiedergeben, wird das codierte Video im Allgemeinen durch einen Decoder geleitet, in YUV-Daten (Color Space) konvertiert und an den Bildschirm gesendet. Der Decoder erkennt das Format und dekomprimiert die komprimierten Daten in nützliche Informationen, die verarbeitet und angezeigt werden können.
Es gibt zwei Arten von Decodern: Software und Hardware. Vor UVD, PureVideo und Intel GMA 4500MHD wurde Video mit Software-Decodern dekodiert, die auf der Leistung der Prozessoren beruhten. Daher haben viele Unternehmen versucht, Videos abzuspielen. Aber nur zwei von ihnen haben das wirklich gut geschafft: CyberLink und InterVideo (jetzt Corel), daher hat ATI später den PowerDVD-Decoder für ihren ATI-DVD-Decoder lizenziert. Software-Decoder verbrauchen natürlich viel Prozessorzeit, was zwar die Leistung moderner Prozessoren nicht beeinträchtigt, die Akkulaufzeit mobiler Geräte jedoch erheblich verkürzt.
Im Laufe der Zeit haben sich Grafikkartenhersteller mit diesem Problem befasst und mit der Entwicklung von Decodern mit fester Funktion begonnen, bei denen es sich um Logikschaltungen in der GPU für die Videoverarbeitung handelte. Heute werden sie Hardwarebeschleuniger genannt. Der Vorteil war, dass bei arbeitender GPU die Zeit des Hauptprozessors nicht verschwendet wurde.
Es gibt einige interessante Punkte. Da der Decoder Video verarbeitet, ist es ziemlich schwierig, Parameter für seine Leistung oder Effizienz einzustellen. Unabhängig davon, ob das Video die Hardware- oder Software-Konvertierungspipeline durchläuft, ändern sich die Daten lange bevor sie auf Ihrem Monitor angezeigt werden. Bei Verwendung von Software ist es nicht erforderlich, die beim Decodieren verwendeten Systeme zu vergleichen. Bei Verwendung desselben Systems können jedoch unterschiedliche Decoder unterschiedliche Bilder erzeugen oder die Bildqualität ändern. Die meisten Blu-ray-Discs, die auf nVidia- oder AMD-Grafikkarten abgespielt werden, sehen gleich aus, wenn Sie die Beschleunigung in PowerDVD deaktivieren. In beiden Fällen wird das Video mithilfe einer Software auf dem Prozessor verarbeitet, wodurch das gleiche Ergebnis erzielt wird.
Wenn dem Prozess Hardware-Dekodierung hinzugefügt wird, sehen die Dinge anders aus. Warum? Moderne GPUs verfügen über eine spezielle Einheit zum Decodieren und Verarbeiten von Videodaten. Dies ist genau die Logik mit einer festen Funktion, die zuvor besprochen wurde. Die hardwarebeschleunigte Dekodierung auf Sandy Bridge-Prozessoren ist anders konzipiert und programmiert als auf AMD- und nVidia-Grafikkarten.
Wir müssen klar verstehen: Es gibt keine Allzweck-GPU-Decoder. Es gibt keine Decoder, die vollständig mit DirectCompute, APP oder CUDA arbeiten können. Das Bestreben, eine solche Unterstützung umzusetzen, ist im Voraus zum Scheitern verurteilt. GPGPU wurde entwickelt, um Rohdaten mit einem hohen Maß an Parallelität zu verarbeiten. Aber wir sprechen von Video, nicht von Rohdaten. Um Bilder zu verarbeiten, müssen Sie viel und in einer sequentiellen Ausführung tun. Feste Funktionsdecoder dekodieren und verarbeiten Videos; sie machen sonst nichts. Das Portieren dieser Funktionalität auf allgemeinere Computerressourcen wäre ein Schritt zurück von der Verlagerung auf den Prozessor, da Sie in beiden Fällen mit der Software-Dekodierung arbeiten müssen.
Elemental Technologies (bekannt für seinen Badaboom) ist einzigartig in der Entwicklung eines CUDA-basierten MPEG-2-Decoders. Und es ist kein reiner GPGPU-Decoder. Teile Ihrer Pipeline, wie Entropiecodierung, Syntaxcodierung, Syntaxdecodierung und Entropiedecodierung, müssen nacheinander ausgeführt werden. Andere Teile des Prozesses können so gestaltet werden, dass sie parallel ablaufen, z. B. Bewegungsschätzung, Bewegungskompensation usw.
