IMFTransform::GetInputAvailableType メソッド (mftransform.h)
この Media Foundation 変換 (MFT) の入力ストリームで使用できるメディアの種類を取得します。
構文
HRESULT GetInputAvailableType(
[in] DWORD dwInputStreamID,
[in] DWORD dwTypeIndex,
[out] IMFMediaType **ppType
);
パラメーター
[in] dwInputStreamID
入力ストリーム識別子。 ストリーム識別子の一覧を取得するには、 IMFTransform::GetStreamIDs を呼び出します。
[in] dwTypeIndex
取得するメディアの種類のインデックス。 メディアの種類は、0 からインデックスが作成され、好みのおおよその順序で返されます。
[out] ppType
IMFMediaType インターフェイスへのポインターを受け取ります。
戻り値
このメソッドは HRESULT を返します。 有効な値を次の表に示しますが、これ以外にもあります。
リターン コード | 説明 |
---|---|
|
メソッドが成功しました。 |
|
MFT には、使用可能な入力の種類の一覧がありません。 |
|
ストリーム識別子が無効です。 |
|
dwTypeIndex パラメーターが範囲外です。 |
|
入力の種類を設定する前に、出力の種類を設定する必要があります。 |
注釈
MFT は、入力ストリームごとに使用可能なメディアの種類の一覧を定義し、優先順に並べ替えます。 このメソッドは、入力ストリームで使用可能なメディアの種類を列挙します。 使用可能な型を列挙するには、メソッドがMF_E_NO_MORE_TYPESを返すまで dwTypeIndex をインクリメントします。
あるストリームでメディアの種類を設定すると、別のストリームで使用可能な種類が変更されたり、優先順位が変更されたりする可能性があります。 ただし、使用可能な型の一覧を動的に更新するために MFT は必要ありません。 特定の入力型を設定できるかどうかをテストする唯一の方法は、 IMFTransform::SetInputType を呼び出す方法です。
場合によっては、1 つ以上の出力型が設定されるまで、MFT は入力型のリストを返すことができません。 その場合、メソッドは MF_E_TRANSFORM_TYPE_NOT_SETを返します。
このメソッドを実装するために MFT は必要ありません。 ただし、サポートされている型が単純であり、 MFTGetInfo 関数を使用して検出できる場合を除き、ほとんどの MFT ではこのメソッドを実装する必要があります。
mftransform.h を含む前に MFT_UNIQUE_METHOD_NAMES が定義されている場合、このメソッドの名前は MFTGetInputAvailableType に変更されます。 「ハイブリッド DMO/MFT オブジェクトの作成」を参照してください。
エンコーダーの場合、出力の種類が設定された後、 GetInputAvailableType は現在の出力型と互換性のある入力型の一覧を返す必要があります。 つまり、出力の種類が設定された後に GetInputAvailableType によって返されるすべての型は 、SetInputType の有効な型である必要があります。
エンコーダーは、入力メディアの種類と出力メディアの種類の属性が一致しない場合 (MF_MT_FRAME_SIZEの解像度設定、 MF_MT_VIDEO_NOMINAL_RANGEの標準範囲 設定、MF_MT_FRAME_SIZEを使用したフレーム レート設定など)、入力の種類を拒否する必要があります。
実装に関する注意事項
MFT がメディアの種類を内部的に格納する場合、MFT は元の型へのポインターではなく、メディアの種類の複製を返す必要があります。 それ以外の場合、呼び出し元は型を変更し、MFT の内部状態を変更する可能性があります。要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | mftransform.h |
Library | Mfuuid.lib |