AR-Flag-Unterstützung in DirectShow
Der folgende Test untersucht, wie MPEG-4-Encodings mit anamorpher Auflösung unter DirectShow unterstützt werden. Von zentraler Bedeutung dafür ist das AR-Flag, das das korrekte Wiedergabe-Seitenverhältnis angibt. Dieses Flag kann entweder im MPEG-4-Videostrom selbst oder im Container (falls unterstützt) stehen, oder auch in beiden. Untersucht habe ich, wie die AR-Flags mit unterschiedlichen Splittern und Decodern gehandhabt werden.
Setup
Software
- FFDShow tryouts revision 684, 2006-12-11 (msvc 2003, x86, unicode)
- Xvid-Decoder 1.1.2
- DivX-Decoder 6.4
- Haali Media Splitter 2006-12-28
- Gabest matroskasplitter 1.0.2.9 2006-03-10
- Gabest mp4splitter 1.0.0.3 2006-03-10
- Gabest avisplitter 1.0.0.7 2006-03-10
- MKVMerge 2.0.0 fürs Matroska-Muxing.
- MP4Box 2006-12-30 (GPAC version 0.4.3-DEV) fürs MP4-Muxing.
- AVI-Mux GUI 1.17.7 fürs AVI-Muxing.
- Graphedit zum Testen der Clips.
Testmaterial
- Kurzer Clip aus eine 16:9-PAL-DVD.
- Cropping der schwarzen Balken auf 704×432, kein Resizing.
- Encoding nach Xvid 1.1.2.
- Gemuxt mit komplett unterschiedlichen Werten in den AR-Flags, damit deutlich zu sehen war, welches gerade vom Splitter/Decoder verwendet wurde.
Ergebnisse
Die folgenden Tabellen geben einen Überblick, mit welchen Einstellungen welches AR-Flag berücksichtigt wird.
Ein paar Bemerkungen:
- Tabellenspalten: MPEG-4-Flag bezeichnet das direkt im Videostream gespeicherte Flag, Container-Flag steht für das im Container gespeicherte Flag. Die Spalte Priorität gibt an, welches Flag sich durchsetzt, wenn beide vorhanden sind.
- FFDShow: In der Videokonfiguration muss unter Output immer Use overlay mixer angehakt sein, damit überhaupt irgendwelche AR-Flags erkannt werden (in neueren FFDShow-Versionen Set pixel aspect ratio... genannt). Die Option darunter Allow output format changes during playback hat unterschiedliche Auswirkungen, wie in den Tabellen gezeigt.
- Xvid-Decoder: In der Konfiguration kann die Priorität für die Flags eingestellt werden, und zwar über Auto (mpeg-4 first) und Auto (external first). Wie gut das funktioniert: siehe Tabellen.
- DivX-Decoder: In der Decoder-Konfiguration muss Use advanced hardware overlay aktiviert sein und darunter Aspect Ratio auf Original stehen, damit überhaupt AR-Flags erkannt werden.
- Matroska: Videostreams können entweder als native MPEG-4-Streams oder im AVI/VfW-Kompatibilitätsmodus gespeichert sein. Das wirkt sich auch auf die Flag-Unterstützung aus.
- MP4 kennt nur native MPEG-4-Videostreams.
- AVI: Container-AR-Flag wird nicht unterstützt. Der MS-AVI-Splitter von Windows XP verhält sich genauso wie Gabests avisplitter.
Um schnell zu einer bestimmten Tabellen zu springen, ein paar Links:
Haali, FFDShow
Gabest, FFDShow
Haali, Xvid-Decoder
Gabest, Xvid-Decoder
Haali, DivX-Decoder
Gabest, DivX-Decoder
Haali, FFDShow
| |
MPEG-4-Flag |
Container-Flag |
Priorität |
| »Allow format changes« ein |
| Matroska (nativ) |
Ja |
Ja |
Container |
| Matroska (VfW) |
Nein |
Ja |
Container |
| MP4 |
Ja |
Ja |
Container |
| AVI |
Ja |
– |
– |
| »Allow format changes« aus |
| Matroska (nativ) |
Ja |
Ja |
Container |
| Matroska (VfW) |
Nein |
Ja |
Container |
| MP4 |
Ja |
Ja |
Container |
| AVI |
Nein |
– |
– |
Gabest, FFDShow
| |
MPEG-4-Flag |
Container-Flag |
Priorität |
| »Allow format changes« ein |
| Matroska (nativ) |
Ja |
Nein |
MPEG-4 |
| Matroska (VfW) |
Ja |
Nein |
MPEG-4 |
| MP4 |
Ja |
Ja |
Container |
| AVI |
Ja |
– |
– |
| »Allow format changes« aus |
| Matroska (nativ) |
Ja |
Nein |
MPEG-4 |
| Matroska (VfW) |
Nein |
Ja |
Container |
| MP4 |
Ja |
Ja |
Container |
| AVI |
Nein |
– |
– |
Haali, Xvid
| |
MPEG-4-Flag |
Container-Flag |
Priorität |
| MPEG-4 First |
| Matroska (nativ) |
Ja |
Ja |
Container |
| Matroska (VfW) |
Nein |
Ja |
Container |
| MP4 |
Ja |
Ja |
Container |
| AVI |
Ja |
– |
– |
| External First |
| Matroska (nativ) |
Ja |
Ja |
Container |
| Matroska (VfW) |
Nein |
Ja |
Container |
| MP4 |
Ja |
Ja |
Container |
| AVI |
Ja |
– |
– |
Gabest, Xvid
| |
MPEG-4-Flag |
Container-Flag |
Priorität |
| MPEG-4 First |
| Matroska (nativ) |
Ja |
Ja |
Container |
| Matroska (VfW) |
Ja |
Ja |
MPEG-4 |
| MP4 |
Nein |
Nein |
– |
| AVI |
Ja |
– |
– |
| External First |
| Matroska (nativ) |
Ja |
Ja |
Container |
| Matroska (VfW) |
Nein |
Ja |
Container |
| MP4 |
Nein |
Nein |
– |
| AVI |
Ja |
– |
– |
Haali, DivX
| |
MPEG-4-Flag |
Container-Flag |
Priorität |
| Matroska (nativ) |
DivX unterstützt keine nativen Streams. |
| Matroska (VfW) |
Nein |
Ja |
Container |
| MP4 |
DivX unterstützt keine nativen Streams. |
| AVI |
Haali wird ignoriert, stattdessen der MS-Splitter verwendet. |
Gabest, DivX
| |
MPEG-4-Flag |
Container-Flag |
Priorität |
| Matroska (nativ) |
DivX unterstützt keine nativen Streams. |
| Matroska (VfW) |
Ja |
Nein |
MPEG-4 |
| MP4 |
DivX unterstützt keine nativen Streams. |
| AVI |
Ja |
– |
– |