FOURCC 程式代碼
[與此頁面相關聯的功能,DirectShow是舊版功能。 它已被 MediaPlayer、imfMediaEngine 取代,並在媒體基金會 音訊/視訊擷取。 這些功能已針對 Windows 10 和 Windows 11 進行優化。 Microsoft強烈建議新程式代碼盡可能在媒體 基礎中使用 MediaPlayer、IMFMediaEngine 和 音訊/視訊擷取,而不是 DirectShow。 Microsoft建議使用舊版 API 的現有程式代碼,盡可能改寫成使用新的 API。]
許多數位媒體格式已指派FOURCC碼給它們。 FOURCC 程式代碼是串連四個 ASCII 字元所建立的 32 位無符號整數。 例如,YUY2 視訊的FOURCC程式碼是 'YUY2'。 針對壓縮的視訊格式和非 RGB 視訊格式(例如 YUV),biCompressionBITMAPINFOHEADER 結構的成員應設定為 FOURCC 程式代碼。
有各種 C/C++巨集,可讓您更輕鬆地在原始程式碼中宣告 FOURCC 值。 例如,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'.
因為 windows作系統Microsoft使用小到小的架構,因此需要反轉順序。 'Y' = 0x59、'U' = 0x55,而 '2' = 0x32,因此 '2YUY' 0x32595559。
將FOURCC程式代碼轉換為子類型 GUID
2*32 GUID 的範圍保留給代表FOURC。 這些 GUID 都是表單 XXXXXXXX-0000-0010-8000-00AA00389B71
,其中 XXXXXXXX
是 FOURCC 程式代碼。 因此,YUY2 的子類型 GUID 32595559-0000-0010-8000-00AA00389B71
。
其中許多 GUID 已定義在頭檔 Uuids.h 中。 例如,YUY2 子類型定義為 MEDIASUBTYPE_YUY2。 DirectShow 基類庫也提供協助程式類別,FOURCCMap,可用來將 FOURCC 程式代碼轉換成 GUID 值。 FOURCCMap 建構函式會採用 FOURCC 程式代碼作為輸入參數。 然後,您可以將 FOURCCMap 物件轉換成對應的 GUID:
FOURCCMap fccMap(FCC('YUY2'));
GUID g1 = (GUID)fccMap;
// Equivalent:
GUID g2 = (GUID)FOURCCMap(FCC('YUY2'));
相關主題