FOURCC-Codes

[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde durch MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation ersetzt. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet. Microsoft schlägt vor, vorhandenen Code, der die Legacy-APIs verwendet, um nach Möglichkeit die neuen APIs zu verwenden.]

Vielen digitalen Medienformaten sind IHNEN FOURCC-Codes zugewiesen. Ein FOURCC-Code ist eine 32-Bit-Ganzzahl ohne Vorzeichen, die durch Verkettung von vier ASCII-Zeichen erstellt wird. Der FOURCC-Code für YUY2-Video lautet beispielsweise "YUY2". Für komprimierte Videoformate und Nicht-RGB-Videoformate (z. B. YUV) sollte das biCompression-Element der BITMAPINFOHEADER-Struktur auf den FOURCC-Code festgelegt werden.

Es gibt verschiedene C/C++-Makros, die das Deklarieren von FOURCC-Werten im Quellcode erleichtern. 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 einfach die Reihenfolge der Zeichen umkehren. Beispiel:

DWORD fccYUY2 = '2YUY';  // Declares the FOURCC 'YUY2'.

Das Umkehren der Reihenfolge ist erforderlich, da das Microsoft Windows-Betriebssystem eine little-endian-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 in der Form XXXXXXXX-0000-0010-8000-00AA00389B71 , in der XXXXXXXX der FOURCC-Code ist. Daher ist 32595559-0000-0010-8000-00AA00389B71der Untertyp GUID für YUY2 .

Viele dieser GUIDs sind bereits in der Headerdatei Uuids.h definiert. Der Untertyp YUY2 ist beispielsweise als MEDIASUBTYPE_YUY2 definiert. Die DirectShow-Basisklassenbibliothek bietet auch die Hilfsklasse FOURCCMap, 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'));

Audiountertypen

Videountertypen

Arbeiten mit Codecs