_MFT_OUTPUT_STREAM_INFO_FLAGS列挙 (mftransform.h)
Media Foundation 変換 (MFT) の出力ストリームについて説明します。
構文
typedef enum _MFT_OUTPUT_STREAM_INFO_FLAGS {
MFT_OUTPUT_STREAM_WHOLE_SAMPLES = 0x1,
MFT_OUTPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER = 0x2,
MFT_OUTPUT_STREAM_FIXED_SAMPLE_SIZE = 0x4,
MFT_OUTPUT_STREAM_DISCARDABLE = 0x8,
MFT_OUTPUT_STREAM_OPTIONAL = 0x10,
MFT_OUTPUT_STREAM_PROVIDES_SAMPLES = 0x100,
MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES = 0x200,
MFT_OUTPUT_STREAM_LAZY_READ = 0x400,
MFT_OUTPUT_STREAM_REMOVABLE = 0x800
} ;
定数
MFT_OUTPUT_STREAM_WHOLE_SAMPLES 値: 0x1 MFT からの出力データの各メディア サンプル (IMFSample インターフェイス) には、完全なデータ単位が含まれています。 データの単位の定義は、メディアの種類によって異なります: 圧縮されていないビデオの場合は、ビデオ フレーム。圧縮データの場合は、圧縮パケット。非圧縮オーディオの場合は、1 つのオーディオ フレーム。 非圧縮オーディオ形式の場合、このフラグは常に暗黙的に指定されます。 (フラグを設定することは有効ですが、必須ではありません)。圧縮されていないオーディオ フレームは、複数のメディア サンプルにまたがってはいけません。 |
MFT_OUTPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER 値: 0x2 各出力サンプルには、MFT_OUTPUT_STREAM_WHOLE_SAMPLES フラグに定義されているデータの単位が 1 つだけ含まれています。 このフラグが存在する場合は、MFT_OUTPUT_STREAM_WHOLE_SAMPLES フラグも存在する必要があります。 非圧縮オーディオを出力する MFT では、このフラグを設定しないでください。 効率を高める目的で、一度に複数のオーディオ フレームを出力する必要があります。 |
MFT_OUTPUT_STREAM_FIXED_SAMPLE_SIZE 値: 0x4 出力サンプルはすべて同じサイズです。 |
MFT_OUTPUT_STREAM_DISCARDABLE 値: 0x8 MFT は、クライアントから要求された場合、この出力ストリームからの出力データを破棄できます。 出力を破棄するには、 IMFTransform::P rocessOutput メソッドで MFT_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER フラグを設定します。 |
MFT_OUTPUT_STREAM_OPTIONAL 値: 0x10 この出力ストリームは省略可能です。 クライアントは、メディアの種類を設定しないか 、NULL メディアの種類を設定することで、ストリームの選択を解除できます。 オプションのストリームの選択を解除しても、出力データは生成されません。 |
MFT_OUTPUT_STREAM_PROVIDES_SAMPLES 値: 0x100 MFT は、内部的に割り当てるか、入力サンプルで直接操作することによって、このストリームの出力サンプルを提供します。 MFT では、このストリームに対してクライアントによって提供される出力サンプルを使用できません。 このフラグが設定されていない場合、クライアントが正しいバッファー サイズを割り当てることができるように、MFT は cbSize を MFT_OUTPUT_STREAM_INFO 構造体の 0 以外の値に設定する必要があります。 詳細については、「 IMFTransform::GetOutputStreamInfo」を参照してください。 このフラグを MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES フラグと組み合わせることはできません。 |
MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES 値: 0x200 MFT は、このストリームの出力サンプルを提供することも、クライアントが割り当てるサンプルを使用することもできます。 このフラグをMFT_OUTPUT_STREAM_PROVIDES_SAMPLESフラグと組み合わせることはできません。 MFT でこのフラグまたはMFT_OUTPUT_STREAM_PROVIDES_SAMPLES フラグが設定されていない場合、クライアントはこの出力ストリームのサンプルを割り当てる必要があります。 MFT は独自のサンプルを提供しません。 |
MFT_OUTPUT_STREAM_LAZY_READ 値: 0x400 MFT では、クライアントがこのストリームの出力を処理する必要はありません。 クライアントがこのストリームから出力を取得せずに入力データを送信し続ける場合、MFT は単に前の入力を破棄します。 |
MFT_OUTPUT_STREAM_REMOVABLE 値: 0x800 MFT では、ストリーミング中にこの出力ストリームが削除される場合があります。 通常、このフラグはデマルチプレクサーに適用されます。入力データには、ストリーミング中に開始および停止できる複数のストリームが含まれています。 詳細については、「 IMFTransform::P rocessOutput」を参照してください。 |
解説
クライアントが MFT でメディアの種類を設定する前に、正確であることが保証される唯一のフラグは、MFT_OUTPUT_STREAM_OPTIONAL フラグです。 その他のすべてのフラグの場合、クライアントは最初に、オプション以外のすべてのストリームにメディアの種類を設定する必要があります。
MFT_OUTPUT_STREAM_DISCARDABLEフラグとMFT_OUTPUT_STREAM_LAZY_READ フラグは、MFT が出力データを破棄する方法に関して異なる動作を定義します。
- MFT_OUTPUT_STREAM_DISCARDABLE: MFT は、クライアントが MFT_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER フラグを使用して ProcessOutput を呼び出す場合にのみ、出力データを破棄します。 クライアントが ProcessInput を呼び出すとき、MFT はデータを破棄しません。
- MFT_OUTPUT_STREAM_LAZY_READ: クライアントがこのストリームから出力を収集せずに ProcessInput を呼び出し続ける場合、MFT は最終的に出力を破棄します。 すべての出力ストリームに MFT_OUTPUT_STREAM_LAZY_READ フラグがある場合、MFT はより多くの入力データを拒否することはありません。
要件
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリ | UWP アプリ] |
Header | mftransform.h |