Microsoft DirectX 8.0 |
圧縮フィルタは、特殊なタイプの変換フィルタである。圧縮フィルタ (コンプレッサ) は、データを受け取り、圧縮スキームを使ってそのデータを変換し、圧縮データをダウンストリームに渡す。
Microsoft® DirectShow® には、Microsoft Video for Windows® のビデオまたはオーディオ CODEC を使用してデータを圧縮する AVI コンプレッサ フィルタと ACM ラッパー フィルタが含まれている。DirectShow によって提供されるデフォルト フィルタではサポートされないフォーマットでデータを圧縮する必要がある場合は、自分でコンプレッサ フィルタを書くことができる。
圧縮フィルタを書く場合は、1 つの入力ピンと 1 つの出力ピンを持つ変換フィルタを書く。変換フィルタの書き方については、次のトピックを参照すること。
変換フィルタを書き終えた後は、圧縮フィルタを作成する際に以下のポイントを確認する必要がある。
AMovieDllRegisterServer2 関数を使って圧縮フィルタを登録する。これにより、アプリケーションがシステム上のほかの圧縮フィルタとともに作成したフィルタを列挙することが可能になる。
すべての圧縮フィルタの出力ピンに IAMStreamConfig インターフェイスを実装し、ビデオ コンプレッサの出力ピンに IAMVideoCompression を実装して、アプリケーションがフィルタの圧縮機能にアクセスできるようにすることが強く推奨される。
IAMStreamConfig を使用すると、データの圧縮フォーマットについての情報をアプリケーションに通知して、特定のデータ型に圧縮するためにアプリケーションがコンプレッサを構成できるようになる。
IAMVideoCompression を使用すると、アプリケーションは、AM_MEDIA_TYPE 構造体には現れないビデオ固有の設定、たとえばキー フレームの頻度などを設定することができる。