MPEG1 Video mit verrückten Seitenverhältnissen im MPC-HC via ffdshow

  • Ab und zu kommt es mal vor, wenn ich so durch ältere *.mpg-Videos schaue, dass ich ein völlig verzerrtes Bild habe, wenn ich ffdshow zum Decodieren für MPC-HC verwende. Mit dem MPC-internen MPEG1-Videodecoder oder im VLC passiert das nicht.

    Eine Analyse mit MediaInfo zeigte mir etwas merkwürdige Werte für die Seitenverhältnisse. Also habe ich mir mal Zeit genommen, ein MPEG1-Video zu erzeugen, seine Seitenverhältnis-Bitfelder in mehreren Kopien zu patchen, und mir das Ergebnis mal genauer anzuschauen.

    Nun ja ... das Ergebnis lässt mich an so einigem zweifeln. Unter anderem, ob MediaInfo da wirklich korrekte Werte angibt. Aber auch, was eigentlich zwischen ffdshow und MPC-HC passiert, dass im Ergebnis das Video so extrem und vor allem unsinnig verzerrt wird.

    In der MPEG1-Video Spezifikation (ISO/IEC 11172-2) findet man je nach Quelle und Version unter anderem die folgende "Tabelle":

    Zitat

    The pel aspect ratio does not give the shape directly, but is an index to the following look up table:


    Table 2-D.2 Pixel Aspect Ratio

    ¹ = 29.12.2004 23:25 2-11172 DISx
    ² = ohne Datum im Header; PDF: /CreationDate (D:20001221154217)

    Ich bitte zu beachten: Es wird grundsätzlich von Pixel Aspect Ratio gesprochen; verglichen mit der MPEG2-Video-Spezifikation (ISO/IEC 13818-2) und zur Vermeidung von Unklarheiten würde man das heute bevorzugt als Sampel Aspect Ratio (SAR) bezeichnen. Es geht also grundsätzlich um Stauchungs- bzw. Entzerrungs-Faktoren.

    Die Unterschiede zwischen den zwei Spezifikationen sind jetzt nicht das, was ich meine. Es geht um viel erheblichere Unterschiede. Hier nur mal zwei Screenshots zur Demonstration:

    [Blockierte Grafik: http://www.ligh.de/pics/MPEG1/PAL4MPEG1_SAR07615.window.png]
    [Blockierte Grafik: http://www.ligh.de/pics/MPEG1/PAL4MPEG1_SAR08437.window.png]

    Es ist mir schleierhaft, welche Seitenverhältnisse ffdshow da zur Darstellung an den Renderer sendet. Offensichtlich wird die Skalierung aber dem Renderer überlassen, denn alle internen Screenshots des MPC-HC sind unabhängig vom angezeigten Seitenverhältnis im Grunde identisch, müssen also vom Decoder stammen, bevor der Renderer den Inhalt falsch skaliert. Und das passiert bei jedem Renderer außer DIB so, von Overlay über VMR 7 und 9 sowie EVR bis zu madVR.

    So etwas fällt mir übrigens schon seit Jahren auf. Ich komme nur jetzt erst dazu, mal ordentliche Vergleiche anzustellen, weil ich dafür erst mal brauchbares Vergleichsmaterial erstellen musste.

    Wer ein wenig Zeit hat, möge doch mal bitte kurz testen, ob sein Lieblings-DirectShow-Videoplayer mit ffdshow als Decoder ebenso reagiert. Wenn ich ein paar Bestätigungen bekomme, werde ich das dann ins englische Forum übertragen.

    7zip-Archiv mit Testdateien und Ergebnissen (≈3 MB); siehe auch Tabelle im enthaltenen PDF

  • Haali Media Splitter 1.9.42.1 ... aber warum sollte schon der Splitter für das AR-Signaling verantwortlich sein, wenn er im Fall von MPEG-PS doch noch gar nichts über den Videoinhalt weiß? — Mit dem internen MPEG-Splitter von MPC-HC 1.5.2.3107 passiert das gleiche.

    ffdshow ist hier rev3853 (2011-05-13).
    __

    Oh, xvidvideo.ru ist wieder aktiv; also mal updaten. Und siehe, mit ffdshow rev4019 sieht es plötzlich ordentlich aus.

Jetzt mitmachen!

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