FOURCC コード

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/Video Capture を使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]

多くのデジタル メディア形式には、FOURCC コードが割り当てられます。 FOURCC コードは、4 つの ASCII 文字を連結して作成される 32 ビット符号なし整数です。 たとえば、YUY2 ビデオの FOURCC コードは "YUY2" です。 圧縮されたビデオ形式と非 RGB ビデオ形式 (YUV など) の場合、BITMAPINFOHEADER 構造体の biCompression メンバーを FOURCC コードに設定する必要があります。

ソース コードで FOURCC 値を簡単に宣言できるようにするさまざまな C/C++ マクロがあります。 たとえば、 MAKEFOURCC マクロは Mmsystem.h で宣言され、 FCC マクロは Aviriff.h で宣言されます。 次のように使用します。

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

また、文字の順序を逆にするだけで、FOURCC コードを文字列リテラルとして直接宣言することもできます。 次に例を示します。

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

Microsoft Windows オペレーティング システムはリトル エンディアン アーキテクチャを使用するため、順序を逆にすることが必要です。 'Y' = 0x59、'U' = 0x55、および '2' = 0x32であるため、'2YUY' は0x32595559。

FOURCC コードをサブタイプ GUID に変換する

FOURCC を表す 2*32 GUID の範囲が予約されています。 これらの GUID はすべて、 が FOURCC コードの形式XXXXXXXX-0000-0010-8000-00AA00389B71XXXXXXXXです。 したがって、YUY2 のサブタイプ GUID は です 32595559-0000-0010-8000-00AA00389B71

これらの GUID の多くは、ヘッダー ファイル Uuids.h に既に定義されています。 たとえば、YUY2 サブタイプはMEDIASUBTYPE_YUY2として定義されます。 DirectShow 基本クラス ライブラリには、 FOURCC コードを GUID 値に変換するために使用できるヘルパー クラス FOURCCMap も用意されています。 FOURCCMap コンストラクターは、入力パラメーターとして FOURCC コードを受け取ります。 その後、 FOURCCMap オブジェクトを対応する GUID にキャストできます。

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

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

オーディオ サブタイプ

ビデオ サブタイプ

コーデックの操作