AM_MEDIA_TYPE 結構 (strmif.h)
[與此頁面相關的功能 DirectShow是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議使用舊版 API 的現有程式碼盡可能重寫為使用新的 API。
AM_MEDIA_TYPE結構描述媒體範例的格式。
語法
typedef struct _AMMediaType {
GUID majortype;
GUID subtype;
BOOL bFixedSizeSamples;
BOOL bTemporalCompression;
ULONG lSampleSize;
GUID formattype;
IUnknown *pUnk;
ULONG cbFormat;
BYTE *pbFormat;
} AM_MEDIA_TYPE;
成員
majortype
指定媒體範例主要類型的全域唯一識別碼 (GUID) 。 如需可能的主要類型清單,請參閱 媒體類型。
subtype
指定媒體範例子類型的 GUID。 如需可能的子類型清單,請參閱 媒體類型。 對於某些格式,值可能會MEDIASUBTYPE_None,這表示格式不需要子類型。
bFixedSizeSamples
如果 為 TRUE,則樣本大小為固定大小。 此欄位僅供參考。 對於音訊,它通常會設定為 TRUE。 對於影片,壓縮視訊通常是 TRUE ,壓縮視訊則為 FALSE 。
bTemporalCompression
如果 為 TRUE,則會使用時態 (框架間壓縮來壓縮樣本) 。 TRUE值表示並非所有畫面都是主要畫面格。 此欄位僅供參考。
lSampleSize
以位元組為單位的樣本大小。 對於壓縮的資料,此值可以是零。
formattype
GUID,指定用於格式區塊的結構。 pbFormat成員會指向對應的格式結構。 格式類型包括下列專案:
格式類型 | 格式結構 |
---|---|
|
|
|
|
|
|
|
|
|
無。 |
|
|
|
|
|
|
|
無 |
pUnk
未使用。 設定為 Null。
cbFormat
格式區塊的大小,以位元組為單位。
pbFormat
格式區塊的指標。 結構類型是由 formattype 成員所指定。 除非 formattype 是GUID_Null或FORMAT_None,否則格式結構必須存在。
pbFormat緩衝區必須藉由呼叫CoTaskMemAlloc來配置。 若要釋放格式區塊,請呼叫 FreeMediaType。
備註
當兩個針腳連接時,它們會交涉媒體類型,該類型是由 AM_MEDIA_TYPE 結構所定義。 媒體類型描述篩選將交換的資料格式。 如果篩選準則不同意媒體類型,它們就無法連線。
資料流程類型是由兩個GUID指定,稱為主要類型和子類型。 主要類型會定義一般類別,例如視訊、音訊或位元組資料流程。 子類型會在主要類型內定義較窄的類別。 例如,影片子類型包括 8 位、16 位、24 位和 32 位 RGB。
AM_MEDIA_TYPE結構後面接著包含格式特定資訊的可變長度資料區塊。 pbFormat成員指向此區塊,稱為格式區塊。 格式區塊的配置取決於資料流程中的資料類型,並由 formattype 成員指定。 格式區塊可能是 Null。 檢查 cbFormat 成員以判斷大小。 轉換 pbFormat 成員以存取格式區塊。 例如:
C++ |
---|
if (pmt->formattype == FORMAT_VideoInfo) { // Check the buffer size. if (pmt->cbFormat >= sizeof(VIDEOINFOHEADER)) { VIDEOINFOHEADER *pVih = reinterpret_cast<VIDEOINFOHEADER*>(pmt->pbFormat); /* Access VIDEOINFOHEADER members through pVih. */ } } |
若要取得指定媒體類型的詳細資訊以供偵錯之用,請使用 DisplayType 方法。
規格需求
標頭 | strmif.h (包含 Dshow.h) |