AM_MEDIA_TYPE 結構 (strmif.h)

[與此頁面相關的功能 DirectShow是舊版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayerIMFMediaEngine音訊/視訊擷取 ,而不是 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成員會指向對應的格式結構。 格式類型包括下列專案:

格式類型 格式結構
FORMAT_DvInfo

DVINFO

FORMAT_MPEG2Video

MPEG2VIDEOINFO

FORMAT_MPEGStreams

AM_MPEGSYSTEMTYPE

FORMAT_MPEGVideo

MPEG1VIDEOINFO

FORMAT_None
無。
FORMAT_VideoInfo

VIDEOINFOHEADER

FORMAT_VideoInfo2

VIDEOINFOHEADER2

FORMAT_WaveFormatEx

波擷取

GUID_Null

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. */
    }
}
在某些情況下,您可以將格式區塊設定為 Null ,並將格式類型設定為 GUID_Null,導致 部分媒體類型。 這可讓您指定一系列可能的格式。 例如,您可以指定 24 位 RGB (MEDIASUBTYPE_RGB24) ,而不提供確切的寬度或高度。

若要取得指定媒體類型的詳細資訊以供偵錯之用,請使用 DisplayType 方法。

規格需求

   
標頭 strmif.h (包含 Dshow.h)

另請參閱

關於媒體類型

DirectShow 結構

媒體類型函式

媒體類型