IAMStreamConfig::SetFormat
SetFormat メソッドは、ピン上で出力フォーマットを設定する。
構文
HRESULT SetFormat(
AM_MEDIA_TYPE *pmt
);
パラメータ
pmt
[in] 新しいフォーマットを指定する AM_MEDIA_TYPE 構造体へのポインタ。
戻り値
HRESULT 値を返す。可能な値は次のとおりである。
戻りコード | 説明 |
S_OK | 成功。 |
E_OUTOFMEMORY | メモリ不足。 |
E_POINTER | NULL ポインタ値。 |
VFW_E_INVALIDMEDIATYPE | メディア タイプが無効である。 |
VFW_E_NOT_CONNECTED | 入力ピンが接続されていない。 |
VFW_E_NOT_STOPPED | タイプを設定できない。フィルタは停止されていない。 |
VFW_E_WRONG_STATE | タイプを設定できない。フィルタは停止されていない。 |
注意
このメソッドは出力ピン用のフォーマットを指定する。ピンが接続されていない場合は、次の接続にこのフォーマットを使う。ピンが既に接続されている場合は、このフォーマットに再接続を試みる。もう 1 つのピンが新しいタイプを拒否すると、メソッドは失敗することがある。
このメソッドが成功した場合は、IPin::EnumMediaTypes メソッドへの以後の呼び出しは新しいタイプを返し、他のものは返さない。
ほとんどのフィルタで、フィルタがポーズか実行中なら、このメソッドは失敗する。いくつかの圧縮フィルタでは、フィルタの入力ピンが接続されていない場合、このメソッドは失敗する。
いくつかのフィルタでは、値 NULL を使ってこのメソッドを呼び出し、ピンを既定のフォーマットにリセットできる。
フィルタ開発者への注意点 : 以下に、このメソッドの実装方法の注意点を述べる。
出力ピンが接続されてなく、指定されたメディア タイプをピンがサポートしている場合は、S_OK を返す。メディア タイプを格納し、CBasePin::GetMediaType メソッド内でフォーマット番号ゼロとして提供する。他のフォーマットを提供せず、CBasePin::CheckMediaType メソッド内の他のフォーマットは拒否する。
ピンが既に接続されていて、指定されたメディア タイプをピンがサポートしている場合は、ピンをそのタイプに再接続する。他のピンが新しいタイプを拒否した場合は、VFW_E_INVALIDMEDIATYPE を返し、元の接続を復元する。
参照