Kode FOURCC

[Fitur yang terkait dengan halaman ini, DirectShow, adalah fitur warisan. Ini telah digantikan oleh MediaPlayer, IMFMediaEngine, dan Pengambilan Audio/Video di Media Foundation. Fitur-fitur tersebut telah dioptimalkan untuk Windows 10 dan Windows 11. Microsoft sangat menyarankan agar kode baru menggunakan MediaPlayer, IMFMediaEngine , dan Pengambilan Audio/Video di Media Foundation alih-alih DirectShow, jika memungkinkan. Microsoft menyarankan agar kode yang ada yang menggunakan API warisan ditulis ulang untuk menggunakan API baru jika memungkinkan.]

Banyak format media digital memiliki kode FOURCC yang ditetapkan untuk mereka. Kode FOURCC adalah bilangan bulat tidak bertanda 32-bit yang dibuat dengan menggabungkan empat karakter ASCII. Misalnya, kode FOURCC untuk video YUY2 adalah 'YUY2'. Untuk format video terkompresi dan format video non-RGB (seperti YUV), anggota biCompression dari struktur BITMAPINFOHEADER harus diatur ke kode FOURCC.

Ada berbagai makro C/C++ yang memudahkan untuk mendeklarasikan nilai FOURCC dalam kode sumber. Misalnya, makro MAKEFOURCC dideklarasikan dalam Mmsystem.h, dan makro FCC dideklarasikan dalam Aviriff.h. Gunakan sebagai berikut:

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

Anda juga dapat mendeklarasikan kode FOURCC secara langsung sebagai string harfiah hanya dengan mengembalikan urutan karakter. Contohnya:

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

Membalikkan urutan diperlukan karena sistem operasi Microsoft Windows menggunakan arsitektur little-endian. 'Y' = 0x59, 'U' = 0x55, dan '2' = 0x32, jadi '2YUY' 0x32595559.

Mengonversi Kode FOURCC ke GUID Subjenis

Rentang 2 * 32 GUID dicadangkan untuk mewakili FOURCC. GUID ini adalah semua bentuk XXXXXXXX-0000-0010-8000-00AA00389B71 di mana XXXXXXXX adalah kode FOURCC. Dengan demikian, GUID subjenis untuk YUY2 adalah 32595559-0000-0010-8000-00AA00389B71.

Banyak GUID ini didefinisikan sudah dalam file header Uuids.h. Misalnya, subjenis YUY2 didefinisikan sebagai MEDIASUBTYPE_YUY2. Pustaka kelas dasar DirectShow juga menyediakan kelas pembantu, FOURCCMap, yang dapat digunakan untuk mengonversi kode FOURCC menjadi nilai GUID. Konstruktor FOURCCMap mengambil kode FOURCC sebagai parameter input. Anda kemudian dapat melemparkan objek FOURCCMap ke GUID yang sesuai:

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

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

Subjenis Audio

Subjenis Video

Bekerja dengan Codec