Avivo HD und PureVideo HD im Vergleich: Wer liefert die bessere Bildqualität beim Encodieren?
2/13GPU-Beschleunigung
ATi Avivo HD
„Avivo HD“ ist die Bezeichnung von ATi für die Videosektion auf der Grafikkarte, wobei sich das Kürzel „HD“ vor allem auf die neu eingeführte Radeon-HD-2000-Serie bezieht. Nichtsdestotrotz ist auch die ältere „Radeon X1000“ in der Lage, mit HD-Videomaterial etwas anzufangen. Bevor wir auf die möglichen Beschleunigungsstufen der HD-Videos eingehen, müssen wir zunächst einmal kurz auf die drei verwendeten Codecs zurückkommen und die „Beschleunigungsphasen“ kurz erläutern. Diese sind abhängig davon, welcher Codec genutzt wird. MPEG-2 lassen wir dabei absichtlich außen vor, da der altgediente Codec von jeder Grafikkarte ausreichend bearbeitet werden kann und zudem viele Prozessoren schnell genug dafür sind, ohne an ihre Leistungsgrenze zu stoßen.
Fangen wir zuerst mit dem aufwendigsten Codec an: H.264. Es gibt vier verschiedene Beschleunigungsstufen, die auf die Namen „CAVLC/CABAC Entropy Decode“, „Frequency Transform“, „Pixel Prediction“ und „Inloop Deblocking“ hören. Bei der ersten Phase muss die GPU Binärdaten dekomprimieren, da diese nur in komprimierter Form, um den wertvollen Speicherplatz auf der Blu-ray oder HD DVD zu schonen, auf dem Datenträger vorliegen. Dazu gibt es drei Methoden, wobei bei dem H.264-Videoformat zwei verschiedene angewendet werden. Bei CAVLC (Context Adaptive Variable Lenght Coding) werden verschiedene Codearten genutzt, wobei die Ver- und Entschlüsselung mit demselben Code durchgeführt werden. Die Methoden werden abhängig von der Art der Daten sowie deren Häufigkeit ausgesucht und mit einer unterschiedlich langen Bitfolge verschlüsselt. CAVLC ist genau wie CABAC (Context-adaptive Binary Arithmetic Coding) eine verlustfreie Komprimierung. CABAC ist jedoch komplexer aufgebaut.
So werden bei CABAC keine ganzzahligen Bitfolgen mehr genutzt, sondern Floating-Point-Bits, sprich Gleitkommazahlen. Darüber hinaus achtet CABAC mehr auf die Art der Daten und passt die Bitreihenfolge genauer an den Code an. Die Kompressionsrate ist bei CABAC besser als bei CAVLC. Bei Frequency Transform wird ein Frame in mehrere Blöcke geteilt, die wiederum transformiert werden. Dabei wird das so genannte Discrete Cosine Transform (DCT) genutzt, wobei jeder der vorher erstellten Blöcke einen neuen Block mit einem Koeffizienten produziert, der die unterschiedlichen horizontalen und vertikalen Frequenzen speichert. Der Encoder teilt jeden Koeffizienten mit einer Konstanten und rundet das Ergebnis, um die Menge der Daten zu minimieren. Dies verbessert die Kompressionsrate, wobei aber minimale Einbußen bei der Bildqualität entstehen. Beim Decodieren wird schließlich iDCT (Inverse DCT, invertiert) angewendet, um die Originaldaten wiederherzustellen. Obwohl zumindest theoretisch mit iDCT die Originaldaten komplett wiederhergestellt werden können, ist dies aufgrund der vorher durchgeführten Rundung eher unwahrscheinlich.
Beim Encodieren eines Ursprungsvideos in ein komprimiertes Format bleiben nicht alle Frames erhalten. Dabei kann es sogar sein, dass aufgrund des Versuches die Komprimierungsrate zu maximieren, Informationen von Frames in andere Frames überspringen. Nun kommt die Pixel Prediction zum Einsatz. Der Encoder komprimiert einen gesamten Frame (Reference Frame) und untersucht daraufhin die entstandene Bewegung zwischen diesem Frame und dem nächsten (Intermediate Frame). Anschließend werden die Parameter der entstandenen Änderung encodiert, die dann „Motion Vectors“ genannt werden. Nach einer gewissen Anzahl an Intermediate Frames wird ein weiterer Reference Frame komprimiert. Die Pixelblöcke werden durch die Kombination des Reference Frames sowie des Motion Vectors vorausgesagt.
Die letzte „Beschleunigungsstufe“ nennt sich Inloop Deblocking. Bei jeder Beschleunigungsstufe wird nicht mit einem ganzen Frame, sondern nur mit einzelnen Pixelblöcken gerechnet. Beim Deblocking wird ein Filter benutzt, um sichtbare Artefakte zwischen den zusammengesetzten Pixelblöcken zu verhindern. Das Deblocking wird sowohl vom H.264- als auch vom VC-1-Codec genutzt. Bei MPEG-2 gibt es dagegen kein Deblocking. VC-1 ist von den Beschleunigungsstufen, abgesehen vom ersten Schritt, identisch mit dem H.264-Verfahren. Allerdings wird beim Entropy Decoding weder CAVLC noch CABAC verwendet, sondern VLC (Variable Lenght Coding). Dies gehört ebenfalls zu den verlustfreien Komprimierungsarten. Häufig auftauchende Datenelemente werden bei VLC mit einer kleineren Bitfolge verschlüsselt, während seltene Datenelemente mit längeren Codes bearbeitet werden.
Kommen wir nun auf ATis Avivo HD zurück. Die Radeon-X1000-Serie ist in der Lage, die letzten drei Beschleunigungsschritte in den Shader-ALUs durchzuführen. Das Entropy Decode wird aber weiterhin dem Prozessor überlassen. Die R5x0-GPU unterstützt nicht die Beschleunigung des VC-1-Codecs. Ähnlich sieht es bei der Radeon HD 2900 XT aus. Gesonderte Chipteile für die Videobeschleunigung gibt es nicht. Die 5D-ALUs übernehmen die Arbeit, da diese laut ATi rechenstark genug für diese Aufgaben sind. Das Entropy Decode wird ebensowenig von der GPU berechnet wie auf einer Radeon X1000. Es kann jedoch VC-1-Material beschleunigt werden, wobei dies mit aktuellen Treiber noch nicht möglich ist. Laut Aussagen von ATi soll ein zukünftiger Treiber Besserung verschaffen.
Die Radeon HD 2600 (RV630) sowie Radeon HD 2400 (RV610) haben diesbezüglich einen Vorteil. In der GPU sind extra Chipteile für die Videobeschleunigung integriert, deren Funktionen ATi auf den Namen „Unified Video Decoder“ (UVD) getauft hat. Diese übernehmen alle vier Beschleunigungsstufen unabhängig davon, ob H.264- oder VC-1-Material abgespielt wird. Der Prozessor wird also größtenteils entlastet. Die Post-Processing-Effekte zur Verbesserung der Bildqualität sind jedoch in allen GPUs enthalten und funktionieren unabhängig vom eingesetzten Codec. Diese unterscheiden sich zwischen der Radeon-X1000- und der Radeon HD-2000-Generation, wobei letztere logischerweise einige Vorteile hat. Nichtsdestotrotz gibt es auch innerhalb einer GPU-Generation einzelne Unterschiede, weswegen die Bildqualität nicht identisch ist. Später dazu mehr.
Abseits der Videobeschleunigung bieten alle Radeon-HD-2000-Karten dem Käufer noch ein besonderes Schmankerl. So ist es mit den neuen ATi-Grafikkarten möglich, mittels eines speziell entwickelten DVI-zu-HDMI-Adapters einen HDMI-Fernseher oder ein anderes HDMI-Empfangsgerät wie beispielsweise einen Mehrkanalreceiver anzuschließen und die Audiodaten auszugeben. Der Adapter entspricht dem HDMI-1.2a-Standard, weswegen die neuen HD-Audioformate leider außen vor bleiben. Dolby-Digital und DTS sind allerdings problemlos zu verwenden. So erkannte ein von uns angeschlossener Mehrkanalreceiver auf Anhieb den Bitstream der Grafikkarte und decodierte anschließend den Ton. Die Qualität von dessen ist, solange kein anderes Format verwendet wird, nicht von dem eines Standalone-Gerätes zu unterscheiden.
Um den Ton über die DVI-Schnittstelle abzufangen, ist unter Windows Vista kein gesonderter Treiber notwendig. Man muss einzig in der Systemsteuerung die primäre Audioausgabe auf den HDMI-Anschluss umstellen, und schon erklingt der Ton über die hochwertige Digitalverbindung.