Manchmal würden wir uns deutlich leichter tun, könnten wir die Zielauflösung des Backups ohne Einschränkungen festlegen. Das gilt ganz besonders fürs anamorphe Encoding. Leider steht dem die allgemeine Regel entgegen, dass die Zielauflösung in beiden Dimensionen glatt durch 16 teilbar sein muss. Woher diese Einschränkung kommt und warum wir es wo immer möglich vermeiden sollten, davon abzuweichen, das betrachten wir in diesem Kapitel genauer.
Das Bild der DVD verwendet wie das fertige Encoding den Farbraum [H] YV12, der nur mit Auflösungen kompatibel ist, die horizontal glatt durch 4 und vertikal glatt durch 2 teilbar sind. Das wäre noch keine besonders erwähnenswerte Einschränkung, doch einen Schritt weiter im Backupprozess kommt der Encoder ins Spiel. Die Bewegungssuche und Bewegungskompensation aller MPEG-4-Encoder arbeitet nicht mit einzelnen Pixeln, um die Rechenzeit in einem erträglichen Rahmen zu halten. Stattdessen kommen Makroblocks [H] zum Einsatz, die eine Fläche von 16 × 16 Pixeln zu einer Einheit zusammenfassen. Für einen Encoder besteht das Bild also aus in Zeilen und Spalten angeordneten Makroblocks. Einzelne Pixel spielen nur eine untergeordnete Rolle.
Solange das Bild horizontal und vertikal durch 16 teilbar ist (Mod16-Kriterium), funktioniert das auch bestens. Schwierigkeiten tauchen erst bei Nicht-Mod16-Auflösungen auf, wie im Bild zu sehen.
Dargestellt ist schematisch und in Originalgröße ein Einzelbild mit einer Auflösung von 248 × 140 Pixeln. In der Breite passen so 15 vollständige Makroblocks nebeneinander. Außerdem bleiben am rechten Rand 8 überschüssige Pixel stehen, die keinen vollständigen Block mehr ergeben. In der Höhe sieht die Situation ähnlich aus mit 8 vollständigen Blocks und 12 überschüssigen Pixeln.
Für den weiß eingezeichnete Überschussbereich muss sich der Encoder etwas einfallen lassen, da er mit unvollständigen Makroblocks nicht arbeiten kann. Die Lösung besteht darin, die Auflösung intern auf den nächsten vollen Makroblock zu vergrößern und das neue Stück (grauer Bereich) mit Pseudo-Bildinformationen aufzufüllen. Beim Abspielen wird das erweiterte Stück Bild vom Decoder wieder abgeschnitten, so dass man beim Anschauen von der ganzen Sache nichts mitbekommt.
Damit dürfte klar sein, woher die Mod16-Regel stammt. Wir ersparen damit dem Encoder das Erweitern und Auffüllen des Bildes und verhindern so einen Qualitätsverlust. Schließlich muss bei Nicht-Mod16-Auflösungen intern ein größeres Bild encodiert werden, was unweigerlich einen kleinen Teil der verfügbaren Bitrate für die Codierung unnützer Informationen verbrät.
Übrigens: Die Bezeichnung »Mod16« stammt von der mathematischen Modulo-Funktion, die oft mit mod abgekürzt wird und mit der man auf die glatte Teilbarkeit einer Zahl testen kann.
Für ein klassisches Encoding mit quadratischen Pixeln stellt mod16 kein Problem dar. Mit Cropping und Resizing haben wir genug Spielraum, um die Bildverzerrung [H] wegen der eingeschränkten Auflösungswahl vernachlässigbar klein zu halten. Kritischer ist anamorphes MPEG-4 [H], wo das Resizing wegfällt. Oft bringt uns das in die Situation, beim Cropping entweder
Beides ist schlecht. Im gar nicht so seltenen ungünstigen Fall verlieren wir an jedem Rand zehn oder mehr Pixel, womit durchaus 5 % oder mehr an Bildfläche verloren gehen können. Auch wenn ganz am Bildrand selten wichtige Dinge passieren, ist das ein zu hoher Wert. Schwarze Balken stehen zu lassen, macht die Sache nicht besser. Zwar bleibt das Bild vollständig intakt, allerdings kostet die harte Kante zwischen Bild und Balken spürbar Encodingeffizienz – und das heißt sinkende Qualität (vgl. das Cropping-Kapitel).
Um uns aus dieser Zwickmühle zu befreien, schneiden wir doch ins Bild hinein, beschränken das verlorene Stück aber auf ein paar unkritische wenige Pixelreihen, indem wir das Mod16-Kriterium aufweichen. D.h. wir wählen eine Auflösung, die in einer oder beiden Dimensionen nicht mehr glatt durch 16 teilbar ist.
Zwar drückt eine Nicht-Mod16-Auflösung auf die Effizienz des Encoders, allerdings weniger, als würden wir ein Stück Balken stehen lassen. Der Encoder füllt das intern erweiterte Bild nämlich nicht mit schwarz auf, eben wegen des Problems des harten Übergangs zum eigentlichen Bild. Die Füllung besteht stattdessen aus Pseudo-Bild. Die einfachste und am wenigsten rechenintensive Methode ist, die letzte Pixelreihe des echten Bildes zu wiederholen. Damit hat der Encoder den harten Übergang vermieden und mit ein wenig Glück sogar Informationen generiert, die sich für eine effiziente Bewegungssuche gut eignen.
Um den Effizienzverlust möglichst gering zu halten, sollten wir eine Auflösung wählen, die so dicht wie möglich unter mod16 liegt. Mod16 minus 2 bzw. 4 Pixel (mod2– bzw. mod4–) ist dafür am besten geeignet. Mod8 liegt genau mittig zwischen zwei 16ern, und mod16 plus 2 bzw. 4 Pixel (mod2+ bzw. mod4+) bildet das Schlusslicht.
Alles in allem ist nicht-mod16 das geringere Übel als überstehende Balken. Wichtig ist dabei, dass wir ganz genau darauf achten, auch wirklich sämtliche Balken kompromisslos und komplett abzuschneiden, damit der Encoder beim internen Auffüllen den Balken nicht wieder herstellt. Außerdem reagieren ASP- und AVC-Encoder unterschiedlich auf nicht-mod16. Dank Makroblockpartitionen kann AVC die »krumme« Auflösung besser auffangen als ASP. Was das für die Praxis bedeutet, zeigt die folgende Tabelle.
MPEG-4 ASP (Xvid, DivX) | MPEG-4 AVC (x264) | |
---|---|---|
Mod16 | Bevorzugen, wo immer möglich. | Bevorzugen, aber nicht um jeden Preis. |
Mod2– und Mod4– | Geringer Effizienzverlust bei beiden Varianten. Gute Alternative zu mod16. |
Effizienzverlust gering. |
Mod8 | Akzeptabler Effizienzverlust, wenn auch höher als bei mod2–/mod4–. |
Effizienzverlust gering. |
Mod2+ und Mod4+ | Vermeiden. Effizienzverlust zu groß. Lieber die nächstkleinere mod16 wählen. |
Effizienzverlust gering. |
Das Verhalten mit Xvid ist ausführlich getestet. Auch ist davon auszugehen, dass sich DivX nicht wesentlich anders verhält. Für x264 ist zwar die Tendenz recht klar, dass die Blockpartitionen dem Effizienzverlust entgegenwirken. Allerdings stehen wirklich ausführliche Tests noch aus. Hoffentlich finde ich demnächst dazu Zeit und Lust.