Share via


FOURCC Codes

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement au nouveau code d’utiliser MediaPlayer, IMFMediaEngine et La capture audio/vidéo dans Media Foundation au lieu de DirectShow, lorsque cela est possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]

De nombreux formats multimédias numériques ont des codes FOURCC qui leur sont attribués. Un code FOURCC est un entier non signé 32 bits créé en concaténant quatre caractères ASCII. Par exemple, le code FOURCC pour la vidéo YUY2 est « YUY2 ». Pour les formats vidéo compressés et les formats vidéo non RVB (tels que YUV), le membre biCompression de la structure BITMAPINFOHEADER doit être défini sur le code FOURCC.

Il existe différentes macros C/C++ qui facilitent la déclaration des valeurs FOURCC dans le code source. Par exemple, la macro MAKEFOURCC est déclarée dans Mmsystem.h et la macro FCC est déclarée dans Aviriff.h. Utilisez-les comme suit :

DWORD fccYUY2 = MAKEFOURCC('Y','U','Y','2');
DWORD fccYUY2 = FCC('YUY2');

Vous pouvez également déclarer un code FOURCC directement en tant que littéral de chaîne en inversant simplement l’ordre des caractères. Par exemple :

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

Inverser l’ordre est nécessaire, car le système d’exploitation Microsoft Windows utilise une architecture peu endienne. 'Y' = 0x59, 'U' = 0x55 et '2' = 0x32, '2YUY' est donc 0x32595559.

Conversion de codes FOURCC en GUID de sous-type

Une plage de 2*32 GUID est réservée à la représentation des QUATREC. Ces GUID sont tous sous la forme XXXXXXXX-0000-0010-8000-00AA00389B71XXXXXXXX est le code FOURCC. Par conséquent, le GUID de sous-type pour YUY2 est 32595559-0000-0010-8000-00AA00389B71.

Bon nombre de ces GUID sont déjà définis dans le fichier d’en-tête Uuids.h. Par exemple, le sous-type YUY2 est défini comme MEDIASUBTYPE_YUY2. La bibliothèque de classes de base DirectShow fournit également une classe d’assistance, FOURCCMap, qui peut être utilisée pour convertir des codes FOURCC en valeurs GUID. Le constructeur FOURCCMap prend un code FOURCC comme paramètre d’entrée. Vous pouvez ensuite caster l’objet FOURCCMap dans le GUID correspondant :

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

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

Sous-types audio

Sous-types vidéo

Utilisation des codecs