Microsoft DirectX 8.0 |
メディア サンプルのフォーマットを記述。
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_MPEGVideo MPEG1VIDEOINFO FORMAT_MPEG2Video MPEG2VIDEOINFO FORMAT_VideoInfo VIDEOINFOHEADER FORMAT_VideoInfo2 VIDEOINFOHEADER2 FORMAT_WaveFormatEx WAVEFORMATEX - 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 を指定することができる。