次の方法で共有


フィルター基底クラスの概要

[このページに関連付けられている機能である DirectShow はレガシ機能です。 これは、 MediaPlayerIMFMediaEngineメディア ファンデーションの Audio/Video Captureに置き換えられました。 これらの機能は、Windows 10 および Windows 11 用に最適化されています。 Microsoftは、新しいコードでは、可能な限り DirectShowではなく、Media Foundation MediaPlayerIMFMediaEngine、および Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存コードを、新しい API を使用するように可能であれば書き直すことを提案しています。]

この記事では、Microsoft DirectShow 基本クラス ライブラリについて説明します。 このライブラリはフィルター開発者向けですが、アプリケーション ライターはヘルパー クラスとデバッグ ユーティリティの一部が役立つ場合があります。 ただし、DirectShow プログラミングには基底クラス ライブラリは必要ありません。

次のセクションでは、ライブラリ内の最も重要な基底クラスの概要を示します。

COM オブジェクト クラス

次のクラスは、COM オブジェクトの作成をサポートしています。

クラス 説明
CBaseObject 基本オブジェクト クラス。
CUnknown IUnknown インターフェイスを実装します。

 

DirectShow クラスのほとんどは 、CBaseObject から派生します。 このクラスは、実行時に DLL 内のすべてのアクティブ オブジェクトの数を保持することでデバッグ支援を提供します。 デバッグ ビルドでは、オブジェクト数が 0 より大きい間に DLL がアンロードされるとアサートされます。 これにより、参照カウントの問題によって発生するリークを簡単に追跡できます。

COM インターフェイスをサポートするすべての基底クラスは、CBaseObject を継承する CUnknown から派生します。 CUnknown クラスは、参照カウント、QueryInterface、および集計をサポートします。 詳細については、「 IUnknown を実装する方法」を参照してください。

クラスのフィルターとピン留め

次のクラスは、DirectShow フィルターとピン 留めオブジェクトの作成をサポートしています。

クラス 説明
CBaseFilter フィルターの基本クラス。 IBaseFilter インターフェイスを実装します。
CBasePin ピンの基本クラス。 IPin インターフェイスと IQualityControl インターフェイスを実装します。
CBaseInputPin ローカル メモリ トランスポートを使用する入力ピンの基本クラス。 IMemInputPin インターフェイスを実装します。 このクラスは CBasePin から派生します。
CBaseOutputPin IMemInputPin 接続を使用する出力ピンの基本クラス。 このクラスは CBasePin から派生します。

 

次のクラスは、より特殊な種類のフィルターを作成するのに役立ちます。

クラス 説明
CSource ソース フィルターの基本クラス。 このクラスは、プッシュ ソースを作成するために設計されています。 ファイル リーダーなどのプル ソースには適していません。 このクラスの出力ピンを作成するには、 CSourceStream クラスを使用します。
CTransformFilter 変換フィルターの基本クラス。 このクラスは、データに対してコピーを実行します。 このクラスのピンは CTransformInputPinCTransformOutputPin です
CTransInPlaceFilter データをコピーしない変換フィルターの基本クラス。 このクラスは、ダウンストリームに渡す前に、入力データに対して直接データ処理を実行します。 このクラスのピンは 、CTransInPlaceInputPinCTransInPlaceOutputPin です
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構造体を操作するためのヘルパー オブジェクト。