FOURCC-Codes

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. Der FOURCC-Code für DAS YUY2-Video lautet beispielsweise "YUY2". Für komprimierte Videoformate und Nicht-RGB-Videoformate (z. B. YUV) sollte der biCompression-Member 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" und das FCC-Makro 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 "2REAY" 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 das XXXXXXXX-0000-0010-8000-00AA00389B71 Format, in dem 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. Beispielsweise wird der YUY2-Untertyp als MEDIASUBTYPE _ YUY2 definiert. Die DirectShow-Basisklassenbibliothek stellt auch die Hilfsklasse FOURCCMapbereit, mit der FOURCC-Codes in GUID-Werte konvertiert werden können. Der FOURCCMap-Konstruktor verwendet einen FOURCC-Code als Eingabeparameter. Anschließend können Sie das FOURCCMap-Objekt in die entsprechende GUID umwandlungen:

FOURCCMap fccMap(FCC('YUY2'));
GUID g1 = (GUID)fccMap;

// Equivalent:
GUID g2 = (GUID)FOURCCMap(FCC('YUY2'));

Audiountertypen

Videountertypen

Arbeiten mit Codecs