Nutzt x264 einen eigenen QP pro Macroblock?

  • Hi Leute,

    ich hab da mal ne Frage, die nach langer Google-, Doom9- und Gleitz-Suche ich mir nicht eindeutig beantworten kann.

    Anstatt das ganze Frame mit einem einzigen QP zu belegen, ist doch wohl ein variabler QP auf Macroblockbasis deutlich besser und würde sowohl der Kompression als auch der Qualität zu gute kommen - hab ich mir gedacht.

    Laut diesem Thread http://forum.gleitz.info/showthread.php?t=38608 sollte das x264 auch tun wenn VAQ aktiviert is (was standardmäßig der Fall ist).

    Allerdings sagt dieses Dokument, verlinkt aus dem MEWiki, dass das nur der Fall im VBV-Modus ist. Das Doc ist zwar von 2006 .. aber ein aktuelleres hab ich auch im git-repo von x264 nicht gefunden.

    Weiß da jemand was definitives drüber?

  • Das Dokument ist einfach nicht mehr aktuell und wurde nicht angepasst, da es in dem Dokument vor allem um die RateControl geht,..
    Wenn man ffdshow zum Decodieren nimmt, kann man sich in der Decoder Konfiguration mit Visualizations->Quantizers auch den Quantizer pro Block anzeigen lassen.

    Cu Selur

  • Von XviD weiß ich noch, dass dort nicht ein Quantisierungsfaktor pro (Makro-) Block verwendet wurde, sondern (im AQ-Modus) einer pro Slice ("Streifen", Bildabschnitt), und davon leichte Abweichungen pro Block (ich glaube, -2 oder +2). Je ein kompletter QF pro Block wäre doch zu verschwenderisch, zu viele zusätzliche Bits.

    Da bei x264 die Änderung lokaler QF stärker ausfallen muss, um vergleichbare Wirkung zu erzielen (das Verhältnis der Quantisierungsfaktoren war doch etwa 1:6, aber nicht linear), wird das dort sicher etwas komplizierter sein. Aber nicht umsonst wurde wohl die Entwicklung der MBTree-Unterstützung so gefeiert, und erst die sorgt ja richtig für bedarfsgerecht angepasste QF auch in kleineren Bildabschnitten.

  • Hehe, ja. Der MB-Tree hat hier bei mir einiges durcheinander gebracht. Die finalen durchschnittlichen Bitraten weichen nun bis zu 50% von früher ab. Muss mir noch irgendwie überlegen wie ich nu meine Bitrate festlege.

    Ich hab grad 2 Test-Läuft mit VBV gemacht und da war die resultierende Bitrate ca. 10% höher. Warum ist das so?

  • Aso ja nee, ich mein wegen VBV. Mit VBV weicht die Bitrate ergo Dateigröße stark von der ohne VBV ab - bei sonst gleichen Einstellungen. Ich benutze quasi nur --preset slow und halt --tune film für Filme. Das sind mir die sinnigsten Einstellungen.

  • Wenn Du nur --preset slow und --tune film verwendest, verwendest Du auch crf was gerade nicht auf Dateigrößte sondern auf einen bestimmten Ratefactor abzielt. Aktiviert man vbv Beschränkungen wird die RateControl eingeschränkt, was wiederum zur einer Änderung der Datenrate führen kann.

  • Ja, das is ja das komische. Für ne DVD-Quelle reicht ja im High-Profil das Level 3.0. Also ergibt sich daraus ne vbv-maxrate von 12,5 Mbit. Erhöht möglicherweise die vbv-bufsize die Bitrate? Hab nochmal durchlaufen lassen und mit --preset slow --tune film --crf 19 bekomm ich 10,5% weniger Bitrate raus wie mit --preset slow --tune film --crf 19 --vbv-maxrate 12500 --vbv-bufsize 6250 (wert einfach mal ins blaue geraten).

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!