Microsoft DirectX 8.0 |
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 パラメータで指定される構造体のタイプに応じて、ストリームのオーディオ機能またはビデオ機能を取得する。
オーディオ ストリームまたはビデオ ストリームのフォーマットを取得する。
構文
HRESULT GetFormat(
AM_MEDIA_TYPE **pmt
);
パラメータ
- pmt
- [out] AM_MEDIA_TYPE 構造体へのポインタのアドレス。
戻り値
インターフェイスの実装に応じた HRESULT 値を返す。
注意
メディア タイプ構造体の使用が終了したら、DeleteMediaType 関数を呼び出し、構造体を解放する。
コンプレッサのストリーム機能を示す構造体の個数を取得する。
構文
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 値を返す。
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 の詳細については、「キャプチャ フォーマットと圧縮フォーマットの公開」を参照すること。
オーディオ ストリームまたはビデオ ストリームのフォーマットを設定する。
構文
HRESULT SetFormat(
AM_MEDIA_TYPE *pmt
);
パラメータ
- pmt
- [in] AM_MEDIA_TYPE 構造体へのポインタ。
戻り値
インターフェイスの実装に応じた HRESULT 値を返す。
注意
ピンがストリーム中の場合は、このメソッドを呼び出しても失敗する。
出力ピンが未接続で、これにこのメディア タイプを接続できる場合は、このメソッドから S_OK が返され、指定のメディア タイプの列挙が開始される。具体的には、このフォーマットを、CTransformOutputPin::GetMediaType 関数の iPosition パラメータで、フォーマット番号が 0 として指定する。このタイプだけを設定および許可することによって、ピンにおいて接続が発生するときにこのフォーマットを使用するようにできる。
出力ピンが接続済みで、このタイプを提供できる場合は、ピンを再接続する。ただし、ほかのピンがメディア タイプを許可できない場合、この呼び出しは失敗し、それまでの接続がそのまま残される。
パラメータ値として NULL を渡すと、フィルタによってはデフォルト フォーマットが設定され、このメソッドで指定した以前のフォーマットが無効になる。
フィルタがデータを生成するフレーム レートは、出力ピンが接続しているメディア タイプの、VIDEOINFOHEADER の AvgTimePerFrame フィールドで決まる。任意のフレーム レートでキャプチャできず、一定のレートでのみキャプチャできる可能性もある。ピンに接続しているメディア タイプが、対応できないフレーム レートを要求する場合は、実現できる次に最も低いフレームを提供しなければならない。たとえば、メディア タイプが AvgTimePerFrame=333333 (1 秒の約 1/30 で、1 秒あたり 30 フレームに相当する) で、ピンでは 1 秒あたり 29.97 または 35 フレームのみキャプチャできる場合は、1 秒あたり 29.97 フレームの割合でフレームを提供する必要がある。これは、この値が、提供できる中で 30 に最も近く、かつ 30 を超えない値のためである。提供するフレーム レートによって作成されるフレームの時間幅が、要求される長さよりも 1 マイクロ秒以上短くなることがない場合は、AvgTimePerFrame が単に丸め誤差を持つ場合もあるので、要求されるフレーム レートよりも高いレートを提供できる。AvgTimePerFrame フィールドが 0 の場合は、任意のデフォルトのフレーム レートでフレームを提供できる。