Compartir a través de


Códigos FOURCC

[La característica asociada a esta página, DirectShow, es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEnginey captura de audio y vídeo en Media Foundation. Esas características se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use MediaPlayer, IMFMediaEngine y captura de audio y vídeo en Media Foundation en lugar de DirectShow, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.

Muchos formatos multimedia digitales tienen códigos FOURCC asignados. Un código FOURCC es un entero de 32 bits sin signo que se crea mediante la concatenación de cuatro caracteres ASCII. Por ejemplo, el código FOURCC para el vídeo YUY2 es "YUY2". Para los formatos de vídeo comprimidos y los formatos de vídeo no RGB (como YUV), el biCompression miembro del BITMAPINFOHEADER estructura debe establecerse en el código FOURCC.

Hay varias macros de C/C++ que facilitan la declaración de valores FOURCC en el código fuente. Por ejemplo, la macro MAKEFOURCC se declara en Mmsystem.h y la macro FCC se declara en Aviriff.h. Úselas de la siguiente manera:

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

También puede declarar un código FOURCC directamente como un literal de cadena simplemente invirtiendo el orden de los caracteres. Por ejemplo:

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

Revertir el orden es necesario porque el sistema operativo Microsoft Windows usa una arquitectura little-endian. 'Y' = 0x59, 'U' = 0x55 y '2' = 0x32, por lo que '2YUY' es 0x32595559.

Conversión de códigos FOURCC en GUID de subtipo

Se reserva un intervalo de 2*32 GUID para representar CUATROCC. Estos GUID son todos de la forma XXXXXXXX-0000-0010-8000-00AA00389B71 donde XXXXXXXX es el código FOURCC. Por lo tanto, el GUID de subtipo para YUY2 es 32595559-0000-0010-8000-00AA00389B71.

Muchos de estos GUID ya están definidos en el archivo de encabezado Uuids.h. Por ejemplo, el subtipo YUY2 se define como MEDIASUBTYPE_YUY2. La biblioteca de clases base DirectShow también proporciona una clase auxiliar, FOURCCMap, que se puede usar para convertir códigos FOURCC en valores GUID. El constructor FOURCCMap toma un código FOURCC como parámetro de entrada. A continuación, puede convertir el objeto FOURCCMap al GUID correspondiente:

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

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

subtipos de audio

subtipos de vídeo de

trabajar con códecs