Brother Johns Encodingwissen

Zum Inhalt springen
Wechseln zu: Inhaltsverzeichnis, Abkürzungsverzeichnis

x264 rev517 VfW-Konfiguration

x264 ist längst den Kinderschuhen entwachsen und schwer dabei, Xvid den Rang als beliebtester Open-Source-Codec abzulaufen. Und es ist tatsächlich abzusehen, dass für DVD-Backups die Tage der ASP-Codecs gezählt sind. Außerdem treibt x264 durch die starke Konzentration auf seinen Kommandozeilenencoder die Bewegung weg von VfW voran, was man nur uneingeschränkt gutheißen kann. Aus Gründen, die wenig mit dem Codec an sich zu tun haben, verwende ich trotzdem weiterhin fast ausschließlich Xvid. Deswegen stütze ich mich für die x264-Einstellungen in diesem Kapitel weitgehend auf Selurs Empfehlungen aus seinem »Wissenswerten rund um x264«.

Aktuelle Versionen enthalten nur noch den Kommandozeilen-Encoder. Wer mit dem VfW-Interface arbeiten will, muss x264 Revision 580 oder älter verwenden.

Einstellungen für den 1st Pass

Wie bei den anderen Codecs auch, interessieren uns die Single-Pass-Einstellungen nicht. Im Bitrate-Register wählen wir also Multipass - First Pass (fast). Der Fast-Modus beschleunigt ähnlich wie bei Xvid den ersten Durchgang, ohne spürbar negativ auf die Qualität zu wirken. Deswegen taugt der langsame First Pass eher für paranoide Qualitätsfanatiker als für den täglichen Gebrauch.

Weiter unten muss Update Statsfile angehakt sein. Die Bitrate trägt das Encoding-Frontend automatisch ein. Entsprechen können wir gleich zum Register Rate Control wechseln.

B-frames reduction steuert die Qualität der B-Frames und ist deshalb natürlich nur wichtig, wenn wir überhaupt B-Frames verwenden. Der Wert gibt an, wie viel Prozent relative Bitrate ein B-Frame weniger bekommt als das vorangehende P-Frame. Je höher also der Wert, desto stärker werden B-Frames komprimiert. Gerade bei sehr niedrigen oder sehr hohen Datenraten bietet sich diese Option als Spielzeug an, um die B-Frames ein wenig kleiner oder ein wenig größer werden zu lassen. Wichtig ist dabei, nicht zu übertreiben, weil zu hohe Werte schnell Artefakte erzeugen und zu niedrige den Nutzen der B-Frames stark schmälern. Wenn wir uns eine sehr schwache Reduktion leisten können, sollten wir überlegen, ob wir die B-Frames nicht gleich ganz abschalten.

Bitrate variability gibt an, wie stark die Bitrate über den ganzen Film hinweg schwanken darf. 0 würde zu einem CBR-Encoding führen, 100 steht für den Constant-Quality-Modus. Vorsicht bei Änderungen, denn wie genau x264 die gewünschte Dateigröße treffen kann, hängt nicht zuletzt von dieser Einstellung ab.

Die anderen Werte können wir bedenkenlos auf dem Standard belassen und zum MBs & Frames-Register wechseln.

x264 erlaubt es, einen 16 × 16 Pixel großen Makroblock in kleinere Einheiten (Partitionen) zu zerlegen, um so die Bewegungssuche zu verfeinern. Mit den gezeigten Schaltern können wir einstellen, welche Zerlegungen für I-, P- und B-Frames erlaubt sind. Die Partitionierung senkt zwar die Encoding-Geschwindigkeit deutlich, steigert aber gleichzeitig die Kompression genauso deutlich. Deshalb sollten wir dem Codec nur mit gutem Grund nicht alle Partitionsmöglichkeiten erlauben.

Eine Ausnahme stellt 8x8 Transform dar, da dieses Feature zum AVC High Profile gehört, dass nicht jeder Decoder beherrscht. Diese Option sollten wir also nur dann anhaken, wenn wir uns den Fähigkeiten des Decoders sicher sind. z.B. beherrscht ffdshow das High Profile, kann also auch mit 8x8 Transform umgehen. Ist die Funktion deaktiviert, können wir gleichzeitig auch 8x8 Intra search nicht verwenden.

Weiter unten im Register kümmern wir uns um die B-Frames. Max consecutive legt die maximale Anzahl aufeinander folgender B-Frames fest. Eine 3 heißt, dass nicht mehr als drei B-Frames direkt hintereinander vorkommen dürfen. Ob diese Zahl auch erreicht wird, bestimmt x264 automatisch je nach Bedarf. 0 schaltet die B-Frames ganz ab.

Ein Haken bei Adaptive verteilt proportional mehr B-Frames an langsame Szenen. Da sich diese gerade für den B-Frame-Einsatz anbieten, hat das auch Sinn. Bias geht in eine ähnliche Richtung, beeinflusst aber insgesamt, wie gerne der Codec B-Frames setzt. Die Funktion ist also mit Xvids BVOP sensitivity vergleichbar. Werte über 0 drängen x264 häufiger zum B-Frame-Einsatz – ohne allerdings das unter Max consecutive definierte Maximum zu überschreiten –, Werte unter 0 halten den Codec eher vom B-Frame ab. Genau wie bei Xvid können wir ruhigen Gewissens die 0 stehen lassen.

Use as reference erlaubt es x264, ein B-Frame als Referenzframe zu verwenden. Das erhöht zwar die Anforderungen beim Decoding, sollte aber im Sinn der Qualität aktiviert werden, wenn es der verwendete Decoder unterstützt. Bei ffdshow z. B. ist das der Fall.

Bidirectional ME verwendet eine erweiterte Bewegungssuche, die die Effizienz der B-Frames steigert. Weighted biprediction gewichtet Informationen aus den gefundenen Referenzen, was besonders Aus- und Überblendungen zugute kommt. Beide Optionen sollten wir normalerweise aktivieren.

Direct Mode schließlich gibt an, nach welchem Verfahren B-Frames komprimiert werden. Temporal verwendet zur Komprimierung die zeitlichen Änderungen zwischen den Bildern, Spatial die räumlichen innerhalb des Frames. In der Regel sollten wir Temporal wählen, da es die höhere subjektive Qualität bietet.

Damit bleiben die Einstellungen im More-Register übrig. Partition decision steuert die die Genauigkeit der Bewegungssuche innerhalb der Partitionen. Interessant zu wissen ist, dass unabhängig von der Einstellung der letzte Suchdurchlauf immer mit einem Viertel Pixel Genauigkeit geschieht. d.h. in altgewohnter ASP-Terminologie, QPel ist immer aktiv. Da uns ja die Qualität am Herzen liegt, sollten wir 5 (Max Quality) unverändert lassen oder höchstens auf 4 senken. 6b (RDO on B-frames) entspricht Xvids VHQ für B-Frames. Allerdings bedeutet diese Einstellung deutliche Leistungseinbußen, die die bessere Qualität oft nicht wert sind.

Method bestimmt den Algorithmus, der zur Bewegungssuche verwendet wird. Von oben nach unten werden die Methoden immer genauer, aber auch immer langsamer. Der Standard Hexagonal Search ist ein sinnvoller Kompromiss zwischen Geschwindigkeit und Qualität und sollte immer beibehalten werden. Ungenauere Modi bieten sich wegen der niedrigeren Qualität nicht an, genauere Modi treiben den Rechenaufwand im Vergleich zum Qualitätsgewinn einfach zu weit in die Höhe. Deswegen ist auch Range kaum interessant, wo der Suchradius für den Modus Uneven Multi-Hexagon definiert werden kann.

Chroma ME entspricht Xvids Chroma motion, d.h. ein gesetzter Haken veranlasst x264, neben den Helligkeitsinformationen (Luminanz) auch die Farbinformationen (Chrominanz) zu Bewegungssuche zu verwenden. Meistens reichen zwar die Luminanzinfos aus, da aber die Option die Geschwindigkeit nicht zu sehr beeinträchtigt, sollte der Haken gesetzt bleiben.

Damit kommen wir zu Max ref Frames. In Xvid und DivX sind P-Frames auf genau ein Referenzbild beschränkt, und zwar auf das vorangehende Bild. x264 erlaubt auch mehrere Referenzframes. Wie viele, stellen wir mit Max ref Frames ein. Maximal dürfen es 16 sein. Allerdings steigert mehr als etwa 5 nur noch die Codierzeit, nicht mehr die Qualität. Die Einstellung wirkt sich übrigens auch auf B-Frames aus.

Mixed Refs ist eine neue Funktion, die es dem Codec erlaubt, Referenzbilder nicht nur für jeden Makroblock, sondern für jede Blockpartition einzeln auszuwählen. Tests zeigen, dass Mixed Refs zwar die Encodiergeschwindigkeit senkt, aber auch zu einem spürbaren Qualitätsanstieg führen kann. Deswegen sollten wir die Option wenn möglich aktivieren.

Wenden wir uns dem unteren Bereich des Fensters zu. Sample AR ist für anamorphe Zieldateien interessant. Hier tragen wir den passenden PAR aus der Tabelle ein. Für klassische Encodings mit quadratischen Pixeln bleibt die Standardeinstellung 1:1 unverändert.

Unter Threads können wir die Multiprozessor-Unterstützung einschalten. Einige Berechnungen werden dann auf den verschiedenen (virtuellen) Prozessoren parallel abgearbeitet, was die Geschwindigkeit erhöht. Wer einen Pentium 4 mit Hyperthreading sein Eigen nennt, darf hier 2 eintragen. Wer gar ein echtes Multiprozessorsystem besitzt, tippt seine Anzahl an Prozessoren ein, allerdings maximal 4. Alle anderen können die Funktion nicht nutzen und müssen bei 1 bleiben.

Log level sollte auf None bleiben, da die Funktion hauptsächlich für die interne Fehlersuche wichtig ist. Ein normales Encoding bremst sie höchstens aus. Genauso können wir den FourCC unverändert lassen. Auch für Noise Reduction ist 0 der beste Wert, denn ums Bildrauschen kümmern wir uns – wenn nötig – besser mit einem AviSynth-Filter.

Eine AVC-Neuheit heißt CABAC (Context-Adaptive Binary Arithmetic Coding). Das ist eine Kompressionsmethode, die gerade bei hohen Datenraten die nötige Bitrate deutlich senken kann. Da CABAC verlustfrei arbeitet, leidet die Qualität nicht darunter. Allerdings sinkt die Geschwindigkeit. Wenn wir nicht gerade mit einem uralten Rechner ausgerüstet sind, sollte die Funktion aktiviert bleiben.

Trellis kennen wir von Xvid, und genau wie dort bringt die Option ein wenig Qualität ohne zu stark auf die Geschwindigkeit zu drücken. Deshalb sollten wir den Haken setzen.

Deblocking filter kennen wir von Decodern, die damit Blockartefakte im Bild zu übertünchen versuchen. x264 setzt einen solchen Filter schon beim Encodieren ein, und zwar nachdem ein Bild codiert wurde, aber bevor es als Referenz für das nächste Bild dient. Dadurch kann Bild 2 mit einer Referenz arbeiten, die weniger Artefakte enthält. Das tut der Qualität gut. Der Nachteil ist die sinkende Geschwindigkeit, um zwar sowohl beim Encoding als auch beim Decoding. Denn damit Bild 2 korrekt decodiert werden kann, muss das vorangehende Bild in gefilterter Form vorliegen. Das ähnelt einem Xvid-Encoding bei dem wir gezwungen sind, beim Anschauen den Deblocking-Filter zu aktivieren.

Strength und Threshold steuern die Stärke des Filters. Beide Werte sollten wir aber als Einheit betrachten und auch gemeinsam verändern. Die Normaleinstellung 0 ist ein brauchbarer Standard. Negative Werte führen zu schwächerem Deblocking, positive zu stärkerem. Für hohe Datenraten bietet es sich an, das Deblocking etwas zu verringern (etwa auf -2), während für die niedrigen Raten von 1-CD-Encodings etwas höhere Werte angebracht sein können.

Die Einstellungen für den 1st Pass sind damit abgeschlossen. Bleibt noch kurz der zweite Durchgang zu konfigurieren.

Einstellungen für den Nth Pass

Wir stellen im Bitrate-Register um auf Multipass - Nth pass und aktivieren Update stats file. x264 unterstützt genau wie DivX mehr als zwei Durchgänge. Ob das tatsächlich eine Qualitätssteigerung ergibt, die den Mehraufwand rechtfertigt, müssen wir ausprobieren. Ähnlich wie bei DivX dürften mehr als drei Passes kaum Sinn haben. Ich selbst bin von Xvid verwöhnt und einfach zu faul für mehr als zwei Durchgänge. :-)

Um die Einstellung der Bitrate kümmert sich das Encoding-Frontend auch diesmal automatisch. Deshalb überprüfen wir noch, ob alle anderen Einstellungen mit dem 1st Pass übereinstimmen und sind auch schon fertig.