Partager via


FOURCC Codes

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngineet audio/vidéo capture dans Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise MediaPlayer, IMFMediaEngine et 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), la biCompression membre du bitmapINFOHEADER structure doit être définie sur le code FOURCC.

Il existe différentes macros C/C++ qui facilitent la déclaration de 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 simplement en inversant 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, donc '2YUY' est 0x32595559.

Conversion de codes FOURCC en GUID de sous-type

Une plage de 2*32 GUID est réservée pour représenter les QUATRECC. Ces GUID sont tous de la forme XXXXXXXX-0000-0010-8000-00AA00389B71XXXXXXXX est le code FOURCC. Ainsi, le GUID de sous-type pour YUY2 est 32595559-0000-0010-8000-00AA00389B71.

La plupart 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 en tant que paramètre d’entrée. Vous pouvez ensuite convertir 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 de vidéos

utilisation des codecs