Microsoft DirectX 8.0

AM_MEDIA_TYPE 構造体

構造体

メディア サンプルのフォーマットを記述。

AM_MEDIA_TYPE 構造体との共同動作については、「メディア タイプ関数」を参照すること。

構文

typedef struct  _MediaType
{
    GUID      majortype;
    GUID      subtype;
    BOOL      bFixedSizeSamples;
    BOOL      bTemporalCompression;
    ULONG     lSampleSize;
    GUID      formattype;
    IUnknown  *pUnk;
    ULONG     cbFormat;
    /* [size_is] */ BYTE __RPC_FAR *pbFormat;
} AM_MEDIA_TYPE;

メンバ

majortype
メディア サンプルの メジャー タイプを指定するグローバル ユニーク識別子 (GUID)。
subtype
メディア サンプルのサブタイプを指定する GUID。詳細については、「メディア タイプ」を参照すること。
bFixedSizeSamples
TRUE の場合、サンプルのサイズは固定である。このフィールドは参照専用である。通常、オーディオでは TRUE に設定される。ビデオでは、通常、圧縮されていなければ TRUE、圧縮されていれば FALSE に設定される。
bTemporalCompression
TRUE の場合、サンプルは時系列 (フレーム間) 圧縮方式で圧縮されている。値 TRUE はフレームがすべてキー フレームとは限らないことを示す。このフィールドは参照専用である。
lSampleSize
サンプルのサイズ (バイト単位)。圧縮データでは 0 の場合がある。
formattype
フォーマット タイプを指定する GUID。pbFormat メンバは対応するフォーマット構造体を指す。フォーマット タイプには次のものがある :
フォーマット タイプフォーマット構造体
FORMAT_Noneフォーマット タイプなし
FORMAT_MPEGVideoMPEG1VIDEOINFO
FORMAT_MPEG2Video MPEG2VIDEOINFO
FORMAT_VideoInfoVIDEOINFOHEADER
FORMAT_VideoInfo2 VIDEOINFOHEADER2
FORMAT_WaveFormatExWAVEFORMATEX
pUnk
未使用。
cbFormat
メディア タイプのフォーマット ブロックのサイズ。
pbFormat
フォーマット構造体へのポインタ。構造体の種類は formattype メンバで指定される。formattype が GUID_NULL または FORMAT_None でない限り、フォーマット構造体が存在しなければならない。

注意

フィルタが接続したとき、通常フィルタはメディア タイプをネゴシエーションする。メディア タイプはフィルタが交換するデータのフォーマットを記述する。フィルタがメディア タイプを受け入れないなら、接続はできない。Microsoft® DirectShow® は AM_MEDIA_TYPE 構造体でメディア タイプを記述する。

メディア タイプの最初のパートにはデータ ストリームの一般属性が入っている。たとえば、bFixedSizeSamples メンバはデータが固定サイズのバッファで渡されるかどうかを宣言する。2 つ目のパートはフォーマット ブロックと呼ばれるフォーマット固有のヘッダーが入る可変長ブロックのデータである。pbFormat メンバはこのブロックへのポインタである。フォーマット ブロックのレイアウトはストリーム内のデータ タイプに依存する。たとえば、データ ストリームにビデオ フレームが入っているなら、そのフォーマット ブロックは VIDEOINFOHEADER 構造体である。

ストリーム タイプは メジャー タイプと サブタイプと呼ばれる 2 つの GUID によって指定される。メジャー タイプはビデオ、オーディオ、あるいはバイト ストリームの様な一般的なカテゴリを定義する。サブタイプはメジャー タイプ内部のより細かいカテゴリを定義する。たとえば、8-bit、16-bit、24-bit、そして 32-bit RGB を含むビデオ サブタイプ。

ある場合には、サブタイプは (ビット深度のように) フォーマットで指定された情報をコピーする。しかしフォーマット タイプに GUID_NULL を指定すると役に立つ場合もある。完全なフォーマットを与えることなく、サブタイプによってあるフォーマット情報を指定することができる。たとえば、ビデオフレームの個々の幅や高さを与えることなく、24ビット RGB を指定することができる。