フィルタ基底クラスの概要
ここでは、Microsoft DirectShow 基底クラス ライブラリについて説明する。このライブラリはフィルタ開発者用であるが、一部のヘルパー クラスおよびデバッグ ユーティリティはアプリケーション作成者にとっても便利である。ただし、この基底クラス ライブラリは DirectShow プログラミングに必須ではない。
以下のセクションではライブラリの最も重要な基底クラスについて概要を説明する。
COM オブジェクト クラス
以下のクラスは COM オブジェクトの作成をサポートする。
クラス | 説明 |
CBaseObject | ベース オブジェクト クラス。 |
CUnknown | IUnknown インターフェイスを実装する。 |
DirectShow クラスの大部分は CBaseObject から派生する。このクラスは、実行時に DLL 内のすべてのアクティブなオブジェクトの数を保持してデバッグを支援する。デバッグ ビルドでは、DLL はオブジェクト カウントがゼロより大きいときにアンロードされる場合にアサートする。これにより、参照カウントの問題が原因で起きるリークの追跡が容易になる。
COM インターフェイスをサポートするすべての基底クラスは、CBaseObject を継承する CUnknown から派生する。CUnknown クラスは参照カウント、QueryInterface、および集成をサポートする。詳細については、「IUnknown の実装方法」を参照すること。
フィルタ クラスとピン クラス
以下のクラスは DirectShow フィルタ オブジェクトおよびピン オブジェクトの作成をサポートする。
クラス | 説明 |
CBaseFilter | フィルタの基底クラス。IBaseFilter インターフェイスを実装する。 |
CBasePin | ピンの基底クラス。IPin および IQualityControl インターフェイスを実装する。 |
CBaseInputPin | ローカル メモリ転送を使う入力ピンの基底クラス。IMemInputPin インターフェイスを実装する。このクラスは CBasePin から派生する。 |
CBaseOutputPin | IMemInputPin 接続を使う出力ピンの基底クラス。このクラスは CBasePin から派生する。 |
以下のクラスは、より特殊なタイプのフィルタを作成する場合に便利である。
クラス | 説明 |
CSource | ソース フィルタの基底クラス。このクラスはプッシュ ソースの作成用に設計されている。ファイル リーダーなどのプル ソースには適していない。このクラスの出力ピンを作成するには、CSourceStream クラスを使うこと。 |
CTransformFilter | 変換フィルタの基底クラス。このクラスはデータに対してコピーを実行する。このクラスのピンは CTransformInputPin および CTransformOutputPin である。 |
CTransInPlaceFilter | データをコピーしない変換フィルタの基底クラス。このクラスは、入力データをダウンストリームに渡す前に、入力データに対して直接データ処理を実行する。このクラスのピンは CTransInPlaceInputPin および CTransInPlaceOutputPin である。 |
CVideoTransformFilter | ビデオ変換フィルタの基底クラス。このクラスは CTransformFilter から派生し、品質コントロールに対するサポートを追加する。 |
CBaseRenderer | レンダラ フィルタの基底クラス。このクラスの入力ピンは CRendererInputPin である。 |
CBaseVideoRenderer | ビデオ レンダラの基底クラス。このクラスは CBaseRenderer から派生する。 |
これらのクラスを使うには、独自のクラスを派生させ、独自のフィルタ固有の機能をサポートするコードを書く必要がある。基底クラスが特殊であるほど、派生させたクラスで書くコードの量は少なくて済む。
ヘルパー オブジェクト
以下のクラスはフィルタおよびピンが使うヘルパー オブジェクトを実装する。これらのクラスの大部分は新しいクラスを派生させることなく使用できる。
クラス | 説明 |
CPullPin | パーサー フィルタに対する入力ピンのヘルパー オブジェクト。プル ソースとの IAsyncReader 接続をサポートする。 |
COutputQueue | ワーカー スレッドで送信待ちサンプルをキューに入れる出力ピンのヘルパー オブジェクト。 |
CSourceSeeking | 1 つの出力ピンのみを持つソース フィルタで、シークを実装するヘルパー オブジェクト。このクラスはパーサーなどの複数のピンを持つフィルタ用には設計されていない。 |
CEnumPins | フィルタ上のピンを列挙する列挙子オブジェクト。IEnumPins インターフェイスを実装する。 |
CEnumMediaTypes | ピン上の優先メディア タイプを列挙する列挙子オブジェクト。IEnumMediaTypes インターフェイスを実装する。 |
CMemAllocator | メモリ アロケータ オブジェクト。IMemAllocator インターフェイスを実装する。 |
CMediaSample | メディア サンプル オブジェクト。IMediaSample2 インターフェイスを実装する。 |
CBaseReferenceClock | 基準クロックの基底クラス。IReferenceClock インターフェイスを実装する。 |
CMediaType | AM_MEDIA_TYPE 構造体を操作するヘルパー オブジェクト。 |