Microsoft DirectX 8.0

IAMStreamConfig インターフェイス

IAMStreamConfig インターフェイスは、オーディオ キャプチャ フィルタ、ビデオ キャプチャ フィルタ、および圧縮フィルタの出力ピンに実装される。これには、VFW キャプチャ フィルタMJPEG コンプレッサACM ラッパーオーディオ キャプチャ フィルタ、および AVI コンプレッサ が含まれる。フィルタ開発者は、オーディオ データまたはビデオ データを処理する任意の出力ピンに、このインターフェイスを実装できる。

このインターフェイスによって、アプリケーションは、出力ピンでフィルタがサポートしているフォーマット タイプについて問い合わせることができる。また、そのピンが、ダウンストリームに接続されているピンに提案するフォーマットを設定できる。これによって、アプリケーションはピンで IGraphBuilder::Render を呼び出すことができ、グラフ ビルダは目的のフォーマットに対して適切なグラフを作成する。

注 :  アプリケーションが SetFormat を呼び出した後に、IPin::EnumMediaTypes を使ってピンでサポートされるメディア タイプを列挙しようとすると、1 つのメディア タイプだけが返る。

IAMStreamConfig::GetStreamCaps メソッドは、そのストリームに関連した AM_MEDIA_TYPE 構造体を取得するとともに、ストリームの特性を詳細に記述する VIDEO_STREAM_CONFIG_CAPS 構造体または AUDIO_STREAM_CONFIG_CAPS 構造体も取得する。ビデオに関して取得される特性には、クロッピング、ストレッチング、アラインメント、細分度、データ レートなどがある。GetStreamCaps の詳細については、「キャプチャ フォーマットと圧縮フォーマットの公開」を参照すること。

フィルタ開発者へ : ビデオ キャプチャ フィルタあるいはビデオ圧縮フィルタを書く際は、このインターフェイスをビデオ出力ピンに実装する。詳細については、axextend.idl のコメントを参照すること。

vtable 順のメソッド

IUnknown メソッド説明
QueryInterface サポートされているインターフェイスへのポインタを取得する。
AddRef 参照カウントをインクリメントする。
Release 参照カウントをデクリメントする。
IAMStreamConfig メソッド説明
SetFormat オーディオ ストリームまたはビデオ ストリームのフォーマットを設定する。
GetFormat オーディオ ストリームまたはビデオ ストリームのフォーマットを取得する。
GetNumberOfCapabilities コンプレッサのストリーム機能を示す構造体の個数を取得する。
GetStreamCaps pSCC パラメータで指定される構造体のタイプに応じて、ストリームのオーディオ機能またはビデオ機能を取得する。

IAMStreamConfig::GetFormat

IAMStreamConfig インターフェイス

オーディオ ストリームまたはビデオ ストリームのフォーマットを取得する。

構文

HRESULT GetFormat(
  AM_MEDIA_TYPE **pmt
  );

パラメータ

pmt
[out] AM_MEDIA_TYPE 構造体へのポインタのアドレス。

戻り値

インターフェイスの実装に応じた HRESULT 値を返す。

注意

メディア タイプ構造体の使用が終了したら、DeleteMediaType 関数を呼び出し、構造体を解放する。

IAMStreamConfig::GetNumberOfCapabilities

IAMStreamConfig インターフェイス

コンプレッサのストリーム機能を示す構造体の個数を取得する。

構文

HRESULT GetNumberOfCapabilities(
  int *piCount,
  int *piSize
  );

パラメータ

piCount
[out] サポートされる VIDEO_STREAM_CONFIG_CAPS 構造体または AUDIO_STREAM_CONFIG_CAPS 構造体の個数へのポインタ。
piSize
[out] 構成の構造体 (AUDIO_STREAM_CONFIG_CAPS または VIDEO_STREAM_CONFIG_CAPS) のサイズへのポインタ。

戻り値

インターフェイスの実装に応じた HRESULT 値を返す。

IAMStreamConfig::GetStreamCaps

IAMStreamConfig インターフェイス

pSCC パラメータで指定される構造体のタイプに応じて、ストリームのオーディオ、ビデオ、またはその他の機能を取得する。

構文

HRESULT GetStreamCaps(
  int iIndex,
  AM_MEDIA_TYPE **pmt,
  BYTE *pSCC
  );

パラメータ

iIndex
[in] 目的のメディア タイプと機能のペアに対するインデックス。このペアの総数を取得するには、GetNumberOfCapabilities メソッドを使用する。指定できるインデックス値は、0 から (ペアの総数 - 1) の範囲である。
pmt
[out] AM_MEDIA_TYPE 構造体へのポインタのアドレス。
pSCC
[out] ストリーム構成構造体へのポインタ。

戻り値

インターフェイスの実装に応じた HRESULT 値を返す。

注意

このメソッドによって、ピンのメディア タイプを列挙するという従来の方法よりも、有効なメディア タイプに関して詳細な情報を取得できる。このため、通常は、ピンを列挙する方法ではなくこのメソッドを使用する。可能なビデオ キャプチャ レート、メディア タイプ、およびサイズなどの情報は、VIDEO_STREAM_CONFIG_CAPS 構造体で返される。入力数、サンプリング レート、およびビット レートの細分度をはじめとする、フィルタの出力ピンのオーディオ機能については、AUDIO_STREAM_CONFIG_CAPS 構造体で返される。

DeleteMediaType を呼び出すと、pmt メディア タイプを解放できる。

GetStreamCaps の詳細については、「キャプチャ フォーマットと圧縮フォーマットの公開」を参照すること。

IAMStreamConfig::SetFormat

IAMStreamConfig インターフェイス

オーディオ ストリームまたはビデオ ストリームのフォーマットを設定する。

構文

HRESULT SetFormat(
  AM_MEDIA_TYPE *pmt
  );

パラメータ

pmt
[in] AM_MEDIA_TYPE 構造体へのポインタ。

戻り値

インターフェイスの実装に応じた HRESULT 値を返す。

注意

ピンがストリーム中の場合は、このメソッドを呼び出しても失敗する。

出力ピンが未接続で、これにこのメディア タイプを接続できる場合は、このメソッドから S_OK が返され、指定のメディア タイプの列挙が開始される。具体的には、このフォーマットを、CTransformOutputPin::GetMediaType 関数の iPosition パラメータで、フォーマット番号が 0 として指定する。このタイプだけを設定および許可することによって、ピンにおいて接続が発生するときにこのフォーマットを使用するようにできる。

出力ピンが接続済みで、このタイプを提供できる場合は、ピンを再接続する。ただし、ほかのピンがメディア タイプを許可できない場合、この呼び出しは失敗し、それまでの接続がそのまま残される。

パラメータ値として NULL を渡すと、フィルタによってはデフォルト フォーマットが設定され、このメソッドで指定した以前のフォーマットが無効になる。

フィルタがデータを生成するフレーム レートは、出力ピンが接続しているメディア タイプの、VIDEOINFOHEADERAvgTimePerFrame フィールドで決まる。任意のフレーム レートでキャプチャできず、一定のレートでのみキャプチャできる可能性もある。ピンに接続しているメディア タイプが、対応できないフレーム レートを要求する場合は、実現できる次に最も低いフレームを提供しなければならない。たとえば、メディア タイプが AvgTimePerFrame=333333 (1 秒の約 1/30 で、1 秒あたり 30 フレームに相当する) で、ピンでは 1 秒あたり 29.97 または 35 フレームのみキャプチャできる場合は、1 秒あたり 29.97 フレームの割合でフレームを提供する必要がある。これは、この値が、提供できる中で 30 に最も近く、かつ 30 を超えない値のためである。提供するフレーム レートによって作成されるフレームの時間幅が、要求される長さよりも 1 マイクロ秒以上短くなることがない場合は、AvgTimePerFrame が単に丸め誤差を持つ場合もあるので、要求されるフレーム レートよりも高いレートを提供できる。AvgTimePerFrame フィールドが 0 の場合は、任意のデフォルトのフレーム レートでフレームを提供できる。