Delen via


FOURCC-codes

[De functie die is gekoppeld aan deze pagina, DirectShow, is een verouderde functie. Het is vervangen door MediaPlayer, IMFMediaEngineen Audio/Video Capture in Media Foundation. Deze functies zijn geoptimaliseerd voor Windows 10 en Windows 11. Microsoft raadt ten zeerste aan om nieuwe code te gebruiken MediaPlayer, IMFMediaEngine en Audio/Video Capture in Media Foundation in plaats van DirectShow, indien mogelijk. Microsoft stelt voor dat bestaande code die gebruikmaakt van de verouderde API's, indien mogelijk opnieuw worden geschreven om de nieuwe API's te gebruiken.]

Aan veel digitale media-indelingen zijn FOURCC-codes toegewezen. Een FOURCC-code is een 32-bits geheel getal zonder teken dat wordt gemaakt door vier ASCII-tekens samen te heffen. De FOURCC-code voor YUY2-video is bijvoorbeeld 'YUY2'. Voor gecomprimeerde video-indelingen en niet-RGB-video-indelingen (zoals YUV) moet de biCompression lid van de BITMAPINFOHEADER- structuur worden ingesteld op de FOURCC-code.

Er zijn verschillende C/C++-macro's waarmee u EENVOUDIGER FOURCC-waarden in broncode kunt declareren. De MAKEFOURCC- macro wordt bijvoorbeeld gedeclareerd in Mmsystem.h en de FCC-macro wordt gedeclareerd in Aviriff.h. Gebruik ze als volgt:

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

U kunt een FOURCC-code ook rechtstreeks declareren als een letterlijke tekenreeks door de volgorde van de tekens om te draaien. Bijvoorbeeld:

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

Het omkeren van de volgorde is nodig omdat het Microsoft Windows-besturingssysteem gebruikmaakt van een little-endian-architectuur. 'Y' = 0x59, 'U' = 0x55 en '2' = 0x32, dus '2YUY' is 0x32595559.

FOURCC-codes converteren naar subtype-GUID's

Een bereik van 2*32 GUID's is gereserveerd voor het vertegenwoordigen van FOURCCs. Deze GUID's zijn allemaal XXXXXXXX-0000-0010-8000-00AA00389B71 waarbij XXXXXXXX de FOURCC-code is. Het subtype-GUID voor YUY2 is dus 32595559-0000-0010-8000-00AA00389B71.

Veel van deze GUID's zijn al gedefinieerd in het headerbestand Uuids.h. Het YUY2-subtype wordt bijvoorbeeld gedefinieerd als MEDIASUBTYPE_YUY2. De DirectShow-basisklassebibliotheek biedt ook een helperklasse, FOURCCMap, die kan worden gebruikt om FOURCC-codes te converteren naar GUID-waarden. De FOURCCMap constructor gebruikt een FOURCC-code als invoerparameter. Vervolgens kunt u het FOURCCMap--object casten naar de bijbehorende GUID:

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

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

audiosubtypen

Subtypen video

werken met codecs