H.264

H.-Standard zur Videokompression
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 10. Juni 2005 um 15:41 Uhr durch 217.10.50.85 (Diskussion) (Technische Details). Sie kann sich erheblich von der aktuellen Version unterscheiden.

H.264 ist ein Standard zur Videokompression. Der Codec ist im Ansatz vergleichbar mit MPEG. Er wurde zunächst von der ITU (Study Group 16, Videocoding Experts Group) unter dem Namen H.26L entwickelt. Im Jahre 2001 schloss sich die ITU-Gruppe mit MPEG-Visual zusammen, da MPEG durch subjektive Tests herausgefunden hatte, dass H.26L im Vergleich zu MPEG-4 etwa doppelt so effizient komprimierte. Im JVT (Joint Video Team) wurde der Codec gemeinsam zu Ende entwickelt. Dabei wurden speziell Erweiterungen für TV- und HD-Anwendungen mit hoher bis extrem hoher Qualität ergänzt. Im Jahr 2003 wurde der Codec endgültig verabschiedet. Die ITU-Bezeichnung lautet dabei H.264. Bei ISO-MPEG läuft der Codec unter der Bezeichnung MPEG-4/Part 10 oder MPEG-4/AVC (Advanced Video Coding).

MPEG-4/AVC unterscheidet sich deutlich von MPEG-4/ASP und seinen Derivaten DivX und XviD. H.264 erreicht typischerweise eine etwa dreimal so hohe Codiereffizienz wie MPEG-2 und ist für Auflösungen von bis zu 1.920x1.080 Pixel ausgelegt. Das heißt, vergleichbare Qualität ist etwa bei einem Drittel der MPEG-2-Datenmenge zu erreichen. Allerdings ist die Rechenkomplexität auch um den Faktor 2 bis 3 höher.

Einsatzgebiete

H.264 wurde nicht auf einen spezifischen Verwendungszweck zugeschnitten, sondern entfaltet seine Leistung in einem recht breiten Spektrum an Anwendungen. Daher sind die momentan aussichtsreichsten Einsatzgebiete auch von sehr verschiedener Gestalt:

  • HDTV: H.264 ist eines der obligatorischen Videokompressionsverfahren des HD-DVD und Blu-ray Disc-Standards und ist auch für die hochauflösende Fernsehübertragung (z.B. mittels DVB-S2) verpflichtend.
  • Portable Video: Sowohl der derzeit neu entwickelte DVB-H-Standard als auch der bereits erprobte und in Korea bereits flächendeckend betriebene DMB-Standard nutzen (unter anderem) H.264 für die Videoübertragung auf mobile Endgeräte, wie Mobiltelefone oder PDAs.
  • Multimedia: Apple liefert die neueste Version des Multimedia-Framework QuickTime 7 mit dem H.264-Codec aus. So sind beispielsweise in iChat AV erstmalig Mehrfach-Videokonferenzen möglich.

Verwandte Verfahren

Während der Entwicklung von H.264 spalteten sich zwei kommerzielle Entwicklungen ab, die mehr oder weniger direkt auf H.264 aufsetzen:

  • http://www.sorenson.com/ Sorenson Video 3, ein im Umfeld von QuickTime sehr verbreiteter Codec, weicht nur in Details von H.264 ab.
  • Microsoft Windows Media Video 9 ist ein proprietärer Videocodec der Firma Microsoft mit H.264 nachahmenden Eigenschaften, dieser reicht jedoch in seinen Fähigkeiten nicht an H.264 heran.

Die Variante VC-1 (oder VC-9 von WMV9) ist ebenfalls einer der obligatorischen Codecs für die HD-DVD / Blu-ray Disc.

Technische Details

H.264 baut weitestgehend auf seinen Vorgängern MPEG-1, MPEG-2, MPEG-4 und der H.261-Familie auf, weist jedoch deutliche Veränderungen und Erweiterungen auf:

  • Anstelle einer Diskreten Cosinustransformation (DCT) auf 8x8 Pixel großen Blöcken wird eine von der DCT abgeleitete Integertransformation auf 4x4-Pixel-Blöcken verwendet. Die Berechnung dieser Transformation kommt lediglich mit Additionen, Subtraktionen und binären Verschiebeoperationen aus, was eine Hardwareimplementation deutlich vereinfacht. Durch die geringere Blockgröße werden außerdem Ringing-Artefakte minimiert.
  • Die Entropiecodierung wurde an die veränderte Transformation angepasst. H.264 unterstützt dabei neben den herkömmlichen Huffman-artigen VLC-Codes (CAVLC, Context Adaptive Variable Length Coding) auch eine leistungsfähigere Arithmetische Kodierung (CABAC, Context Adaptive Binary Arithmetic Coding).
  • Macroblock Partitioning: Die Makroblöcke von der Größe 16x16 Pixel können in Unterblöcke bis hinunter zu einer Größe von 4x4 Pixeln unterteilt werden. Da für jeden Block ein eigener Bewegungsvektor gespeichert wird, können somit räumlich scharf abgegrenzte und vor allem komplexe Bewegungen besser kompensiert werden.
  • Die Bewegungskompensation ist immer auf 1/4 Pixel genau (bei MPEG-4 Advanced Simple Profile war dies eine Option). Dabei wird zur Generierung der Zwischenpixel nicht mehr eine einfache bilineare Filterung eingesetzt, sondern es wird ein FIR-Filter verwendet, der die Bildschärfe besser erhält.
  • Intra Prediction: Auch innerhalb von I-Frames kommt eine Form der Bildvorhersage (prediction) zum Einsatz. Dabei werden die Pixelwerte eines Blocks aus den umliegenden, bereits dekodierten Pixeln abgeschätzt und dann lediglich die Differenz zum tatsächlichen Bildinhalt kodiert. Bei kleineren Bildformaten ist diese Methode im allgemeinen effizienter als JPEG2000.
  • Long-Term Prediction: P-Frames und B-Frames können nicht nur Referenzen auf den jeweils letzten I- oder P-Frame enthalten, sondern auch zu theoretisch beliebig vielen vorhergehenden, um eine effizientere Kodierung von periodischen Bewegungen zu ermöglichen. In den "Profiles" und "Levels" ist die Anzahl von Referenzbildern allerdings auf maximal fünf begrenzt.
  • Weighted Prediction: Werden Bildinhalte aus mehreren Referenz-Frames gemischt, können die Quellen beliebig gewichtet in die Mischung eingehen. So lassen sich "Fades" und Überblendungen extrem effizient kodieren.
  • Deblocking-Filter: Während sich die bisherigen MPEG-Codecs ausschließlich auf optionales externes Postprocessing verlassen, ist ein Deblocking-Filter integraler Bestandteil von H.264 (wie auch schon bei H.263). Referenzen auf bereits dekodierte Frames beziehen sich ebenfalls auf die bereits gefilterten Bilder. Damit entsteht eine sehr hohe wahrgenommene Bildqualität. Besonders im Zusammenwirken mit der verkleinerten Transformationsgröße von 4x4 ergeben sich große subjektive (und in geringerem Maße auch objektive) Verbesserungen.
  • Switching Slices ermöglichen den nahtlosen Übergang zwischen verschiedenen Videoströmen, ohne dabei "teure", weil große, I-Frames einsetzen zu müssen.
  • Flexible Macroblock Ordering: Die Makroblöcke innerhalb eines Frames bzw. Slices können in relativ freier Reihenfolge angegeben werden. Dies läßt sich z.B. zur Fehlerverdeckung bei Kanalverlusten (Mobil-Video) einsetzen.
  • siehe auch prädiktive Kodierung