Win32 API 日本語リファレンス
ホームMedia.MediaFoundation › _MFT_INPUT_STREAM_INFO_FLAGS

_MFT_INPUT_STREAM_INFO_FLAGS

列挙型
基底型i4

メンバー 8

名前10進16進説明
MFT_INPUT_STREAM_WHOLE_SAMPLES10x1

入力データの各メディア サンプル (IMFSample インターフェイス) には、完全で途切れのないデータ単位が含まれていなければなりません。データ単位の定義はメディア タイプによって異なります。非圧縮ビデオの場合はビデオ フレーム、圧縮データの場合は圧縮パケット、非圧縮オーディオの場合は 1 つのオーディオ フレームです。

非圧縮オーディオ形式では、このフラグは常に暗黙的に適用されます。(フラグを設定しても構いませんが、必須ではありません。) 非圧縮のオーディオ フレームが複数のメディア サンプルにまたがってはなりません。

MFT_INPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER20x2

クライアントが入力として提供する各メディア サンプルには、MFT_INPUT_STREAM_WHOLE_SAMPLES フラグで定義されているデータ単位がちょうど 1 つだけ含まれていなければなりません。

このフラグが存在する場合、MFT_INPUT_STREAM_WHOLE_SAMPLES フラグも存在しなければなりません。

非圧縮オーディオを処理する MFT は、このフラグを設定すべきではありません。効率のため、MFT は複数のオーディオ フレームを含むバッファーを受け入れるべきです。

MFT_INPUT_STREAM_FIXED_SAMPLE_SIZE40x4すべての入力サンプルは同じサイズでなければなりません。 サイズは MFT_INPUT_STREAM_INFO 構造体の cbSize メンバーで指定されます。MFT はこの値を提供しなければなりません。処理中、MFT は入力サンプルのサイズを検証すべきであり、サイズが正しくないサンプルは破棄しても構いません。
MFT_INPUT_STREAM_HOLDS_BUFFERS80x8MFT は IMFTransform::ProcessOutput の呼び出し後も、1 つ以上の入力サンプルを保持する場合があります。このフラグが存在する場合、MFT_INPUT_STREAM_INFO 構造体の hnsMaxLatency メンバーが最大待ち時間を示し、cbMaxLookahead メンバーが先読みの最大バイト数を示します。
MFT_INPUT_STREAM_DOES_NOT_ADDREF2560x100

MFT は IMFTransform::ProcessInput メソッドから戻った後に入力サンプルを保持しません。ProcessInput メソッドが戻る前にサンプルを解放します。

このフラグが存在しない場合、MFT は ProcessInput メソッドに渡されたサンプルの参照カウントを保持している可能性があります。クライアントは、MFT がサンプルの IMFSample ポインターを解放するまで、バッファー メモリを再利用したり解放したりしてはなりません。

このフラグが存在しないことは、MFT が入力サンプルの参照カウントを保持していることを保証するものではありません。MFT がこのフラグを設定していない場合でも、ProcessInput 内で入力サンプルを解放することは有効です。ただし、このフラグを設定することで、クライアントがバッファーの再利用方法を最適化できる場合があります。

ProcessInput から戻った後に入力サンプルを保持することがある MFT は、このフラグを設定すべきではありません。

MFT_INPUT_STREAM_REMOVABLE5120x200この入力ストリームは、IMFTransform::DeleteInputStream を呼び出すことで削除できます。
MFT_INPUT_STREAM_OPTIONAL10240x400この入力ストリームは省略可能です。トランスフォームは、このストリームから入力を受け取らなくても出力を生成できます。呼び出し元は、メディア タイプを設定しないか、NULL のメディア タイプを設定することで、このストリームの選択を解除できます。トランスフォーム上のすべての入力ストリームが省略可能である場合もあり得ますが、出力を生成するには少なくとも 1 つの入力が選択されている必要があります。
MFT_INPUT_STREAM_PROCESSES_IN_PLACE20480x800

MFT はインプレース処理を実行できます。このモードでは、MFT は入力バッファーを直接変更します。クライアントが ProcessOutput を呼び出すと、このストリームに渡されたのと同じサンプルが、一致するストリーム識別子を持つ出力ストリームで返されます。このフラグは MFT が入力バッファーを保持することを意味するため、MFT_INPUT_STREAM_DOES_NOT_ADDREF フラグと組み合わせることはできません。

このフラグが存在する場合、MFT はこの入力ストリームに対応する出力ストリームに対して、MFT_OUTPUT_STREAM_PROVIDES_SAMPLES または MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES フラグを設定しなければなりません。(IMFTransform::GetOutputStreamInfo を参照してください。)

公式ドキュメント

Media Foundation トランスフォーム (MFT) の入力ストリームを記述します。

解説(Remarks)

クライアントがトランスフォームにメディア タイプを設定する前に正確であることが保証されるフラグは、MFT_INPUT_STREAM_REMOVABLEMFT_INPUT_STREAM_OPTIONAL の各フラグだけです。その他のフラグについては、クライアントはまず省略不可能なすべてのストリームにメディア タイプを設定すべきです。

既定の処理モデルでは、MFT は ProcessInput で受け取ったサンプルの参照カウントを保持します。ProcessInput の内部でサンプルを直ちに処理することはありません。ProcessOutput が呼び出されると、MFT は出力データを生成し、その後入力サンプルを破棄します。このモデルには次のバリエーションが定義されています。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

列挙メンバーの定義。HSP タブは #define global(値は16進)。

typedef enum _MFT_INPUT_STREAM_INFO_FLAGS : int {
    MFT_INPUT_STREAM_WHOLE_SAMPLES = 1,
    MFT_INPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER = 2,
    MFT_INPUT_STREAM_FIXED_SAMPLE_SIZE = 4,
    MFT_INPUT_STREAM_HOLDS_BUFFERS = 8,
    MFT_INPUT_STREAM_DOES_NOT_ADDREF = 256,
    MFT_INPUT_STREAM_REMOVABLE = 512,
    MFT_INPUT_STREAM_OPTIONAL = 1024,
    MFT_INPUT_STREAM_PROCESSES_IN_PLACE = 2048
} _MFT_INPUT_STREAM_INFO_FLAGS;
public enum _MFT_INPUT_STREAM_INFO_FLAGS : int
{
    MFT_INPUT_STREAM_WHOLE_SAMPLES = 1,
    MFT_INPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER = 2,
    MFT_INPUT_STREAM_FIXED_SAMPLE_SIZE = 4,
    MFT_INPUT_STREAM_HOLDS_BUFFERS = 8,
    MFT_INPUT_STREAM_DOES_NOT_ADDREF = 256,
    MFT_INPUT_STREAM_REMOVABLE = 512,
    MFT_INPUT_STREAM_OPTIONAL = 1024,
    MFT_INPUT_STREAM_PROCESSES_IN_PLACE = 2048,
}
Public Enum _MFT_INPUT_STREAM_INFO_FLAGS As Integer
    MFT_INPUT_STREAM_WHOLE_SAMPLES = 1
    MFT_INPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER = 2
    MFT_INPUT_STREAM_FIXED_SAMPLE_SIZE = 4
    MFT_INPUT_STREAM_HOLDS_BUFFERS = 8
    MFT_INPUT_STREAM_DOES_NOT_ADDREF = 256
    MFT_INPUT_STREAM_REMOVABLE = 512
    MFT_INPUT_STREAM_OPTIONAL = 1024
    MFT_INPUT_STREAM_PROCESSES_IN_PLACE = 2048
End Enum
import enum

class _MFT_INPUT_STREAM_INFO_FLAGS(enum.IntEnum):
    MFT_INPUT_STREAM_WHOLE_SAMPLES = 1
    MFT_INPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER = 2
    MFT_INPUT_STREAM_FIXED_SAMPLE_SIZE = 4
    MFT_INPUT_STREAM_HOLDS_BUFFERS = 8
    MFT_INPUT_STREAM_DOES_NOT_ADDREF = 256
    MFT_INPUT_STREAM_REMOVABLE = 512
    MFT_INPUT_STREAM_OPTIONAL = 1024
    MFT_INPUT_STREAM_PROCESSES_IN_PLACE = 2048
// _MFT_INPUT_STREAM_INFO_FLAGS
pub const MFT_INPUT_STREAM_WHOLE_SAMPLES: i32 = 1;
pub const MFT_INPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER: i32 = 2;
pub const MFT_INPUT_STREAM_FIXED_SAMPLE_SIZE: i32 = 4;
pub const MFT_INPUT_STREAM_HOLDS_BUFFERS: i32 = 8;
pub const MFT_INPUT_STREAM_DOES_NOT_ADDREF: i32 = 256;
pub const MFT_INPUT_STREAM_REMOVABLE: i32 = 512;
pub const MFT_INPUT_STREAM_OPTIONAL: i32 = 1024;
pub const MFT_INPUT_STREAM_PROCESSES_IN_PLACE: i32 = 2048;
// _MFT_INPUT_STREAM_INFO_FLAGS
const (
	MFT_INPUT_STREAM_WHOLE_SAMPLES int32 = 1
	MFT_INPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER int32 = 2
	MFT_INPUT_STREAM_FIXED_SAMPLE_SIZE int32 = 4
	MFT_INPUT_STREAM_HOLDS_BUFFERS int32 = 8
	MFT_INPUT_STREAM_DOES_NOT_ADDREF int32 = 256
	MFT_INPUT_STREAM_REMOVABLE int32 = 512
	MFT_INPUT_STREAM_OPTIONAL int32 = 1024
	MFT_INPUT_STREAM_PROCESSES_IN_PLACE int32 = 2048
)
const
  MFT_INPUT_STREAM_WHOLE_SAMPLES = 1;
  MFT_INPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER = 2;
  MFT_INPUT_STREAM_FIXED_SAMPLE_SIZE = 4;
  MFT_INPUT_STREAM_HOLDS_BUFFERS = 8;
  MFT_INPUT_STREAM_DOES_NOT_ADDREF = 256;
  MFT_INPUT_STREAM_REMOVABLE = 512;
  MFT_INPUT_STREAM_OPTIONAL = 1024;
  MFT_INPUT_STREAM_PROCESSES_IN_PLACE = 2048;
// _MFT_INPUT_STREAM_INFO_FLAGS
pub const MFT_INPUT_STREAM_WHOLE_SAMPLES: i32 = 1;
pub const MFT_INPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER: i32 = 2;
pub const MFT_INPUT_STREAM_FIXED_SAMPLE_SIZE: i32 = 4;
pub const MFT_INPUT_STREAM_HOLDS_BUFFERS: i32 = 8;
pub const MFT_INPUT_STREAM_DOES_NOT_ADDREF: i32 = 256;
pub const MFT_INPUT_STREAM_REMOVABLE: i32 = 512;
pub const MFT_INPUT_STREAM_OPTIONAL: i32 = 1024;
pub const MFT_INPUT_STREAM_PROCESSES_IN_PLACE: i32 = 2048;
const
  MFT_INPUT_STREAM_WHOLE_SAMPLES* = 1
  MFT_INPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER* = 2
  MFT_INPUT_STREAM_FIXED_SAMPLE_SIZE* = 4
  MFT_INPUT_STREAM_HOLDS_BUFFERS* = 8
  MFT_INPUT_STREAM_DOES_NOT_ADDREF* = 256
  MFT_INPUT_STREAM_REMOVABLE* = 512
  MFT_INPUT_STREAM_OPTIONAL* = 1024
  MFT_INPUT_STREAM_PROCESSES_IN_PLACE* = 2048
enum _MFT_INPUT_STREAM_INFO_FLAGS : int {
    MFT_INPUT_STREAM_WHOLE_SAMPLES = 1,
    MFT_INPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER = 2,
    MFT_INPUT_STREAM_FIXED_SAMPLE_SIZE = 4,
    MFT_INPUT_STREAM_HOLDS_BUFFERS = 8,
    MFT_INPUT_STREAM_DOES_NOT_ADDREF = 256,
    MFT_INPUT_STREAM_REMOVABLE = 512,
    MFT_INPUT_STREAM_OPTIONAL = 1024,
    MFT_INPUT_STREAM_PROCESSES_IN_PLACE = 2048,
}
#define global MFT_INPUT_STREAM_WHOLE_SAMPLES            0x1
#define global MFT_INPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER 0x2
#define global MFT_INPUT_STREAM_FIXED_SAMPLE_SIZE        0x4
#define global MFT_INPUT_STREAM_HOLDS_BUFFERS            0x8
#define global MFT_INPUT_STREAM_DOES_NOT_ADDREF          0x100
#define global MFT_INPUT_STREAM_REMOVABLE                0x200
#define global MFT_INPUT_STREAM_OPTIONAL                 0x400
#define global MFT_INPUT_STREAM_PROCESSES_IN_PLACE       0x800