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 を返し、元の接続を復元する。

参照