FOURCC-Codes
[Das dieser Seite zugeordnete Feature DirectShow-ist ein Legacyfeature. Es wurde von MediaPlayer, IMFMediaEngineund Audio/Video Capture in Media Foundationersetzt. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code MediaPlayer-, IMFMediaEngine und Audio-/Videoaufnahme in Media Foundation anstelle von DirectShow-verwendet, wenn möglich. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, um die neuen APIs zu verwenden, falls möglich umgeschrieben werden.]
Vielen digitalen Medienformaten sind FOURCC-Codes zugewiesen. Ein FOURCC-Code ist eine 32-Bit-ganzzahl ohne Vorzeichen, die durch Verketten von vier ASCII-Zeichen erstellt wird. Beispielsweise lautet der FOURCC-Code für YUY2-Video "YUY2". Bei komprimierten Videoformaten und nicht-RGB-Videoformaten (z. B. YUV) sollte das biCompression- Mitglied der BITMAPINFOHEADER- Struktur auf den FOURCC-Code festgelegt werden.
Es gibt verschiedene C/C++-Makros, die das Deklarieren von FOURCC-Werten im Quellcode vereinfachen. Beispielsweise wird das MAKEFOURCC Makro in Mmsystem.h deklariert, und das FCC Makro wird in Aviriff.h deklariert. Verwenden Sie sie wie folgt:
DWORD fccYUY2 = MAKEFOURCC('Y','U','Y','2');
DWORD fccYUY2 = FCC('YUY2');
Sie können einen FOURCC-Code auch direkt als Zeichenfolgenliteral deklarieren, indem Sie die Reihenfolge der Zeichen umkehren. Zum Beispiel:
DWORD fccYUY2 = '2YUY'; // Declares the FOURCC 'YUY2'.
Das Umkehren der Reihenfolge ist erforderlich, da das Microsoft Windows-Betriebssystem eine kleine endische Architektur verwendet. 'Y' = 0x59, 'U' = 0x55 und '2' = 0x32, sodass "2YUY" 0x32595559 ist.
Konvertieren von FOURCC-Codes in Untertyp-GUIDs
Ein Bereich von 2*32 GUIDs ist für die Darstellung von FOURCCs reserviert. Diese GUIDs sind alle FormularXXXXXXXX-0000-0010-8000-00AA00389B71
wobei XXXXXXXX
der FOURCC-Code ist. Daher ist die Untertyp-GUID für YUY2 32595559-0000-0010-8000-00AA00389B71
.
Viele dieser GUIDs sind bereits in der Headerdatei "Uuids.h" definiert. Der Untertyp YUY2 wird beispielsweise als MEDIASUBTYPE_YUY2 definiert. Die DirectShow-Basisklassenbibliothek stellt außerdem eine Hilfsklasse FOURCCMapbereit, die zum Konvertieren von FOURCC-Codes in GUID-Werte verwendet werden kann. Der FOURCCMap--Konstruktor verwendet einen FOURCC-Code als Eingabeparameter. Anschließend können Sie das FOURCCMap--Objekt in die entsprechende GUID umwandeln:
FOURCCMap fccMap(FCC('YUY2'));
GUID g1 = (GUID)fccMap;
// Equivalent:
GUID g2 = (GUID)FOURCCMap(FCC('YUY2'));
Verwandte Themen