次の方法で共有


CBaseFilter クラス

CBaseFilter クラスの階層

CBaseFilter クラスは、フィルタを実装する抽象クラスである。このクラスを使ってフィルタを実装するには、最低限次のステップを実行しなければならない。

  • CBaseFilter から新しいクラスを派生させる。
  • フィルタのピンを定義するメンバ変数をインクルードする。このピンは CBasePin クラスから与えられなければならない。
  • フィルタのピンを取得する純粋仮想メソッド CBaseFilter::GetPin をオーバーライドする。
  • ピンの数を取得する純粋仮想メソッド CBaseFilter::GetPinCount をオーバーライドする。
  • メディア サンプルの生成、処理、またはレンダリング メソッドを提供する。

CSourceCBaseRendererCTransformFilter などのいくつかの基底クラスが CBaseFilter から派生する。通常、CBaseFilter を直接使用するよりも、これらのクラスの 1 つを指定してフィルタを実装する方が簡単である。

要件

ヘッダー: Amfilter.h で宣言し、Streams.h をインクルードする。

ライブラリ: Strmbase.lib (リテール ビルド) または Strmbasd.lib (デバッグ ビルド)。

プロテクト メンバ変数  
m_State フィルタの現在の状態。
m_pClock フィルタの基準クロックへのポインタ。
m_tStart ストリーム タイム 0 に対応する基準タイム。
m_clsid フィルタのクラス識別子 (CLSID)。
m_pLock 状態変更を継続するために使うクリティカル セクションへのポインタ。
m_pName フィルタ名。
m_pGraph フィルタ グラフ マネージャへのポインタ。
m_pSink フィルタ グラフ マネージャの IMediaEventSink インターフェイスへのポインタ。
m_PinVersion このフィルタの一連のピンの現在のバージョン。
パブリック メソッド  
CBaseFilter コンストラクタ メソッド。
~CBaseFilter デストラクタ メソッド。
StreamTime 現在のストリーム タイムを取得する。仮想。
IsActive フィルタが現在アクティブ (実行中またはポーズ) かどうかを調べる。
IsStopped フィルタが現在停止しているかどうかを調べる。
NotifyEvent イベント通知をフィルタ グラフ マネージャに送る。
GetFilterGraph フィルタ グラフ マネージャへのポインタを取得する。
ReconnectPin 既存のピン接続を解除し、指定したメディア ピンを使って、同じピンにそれを再接続する。
GetPinVersion このフィルタの一連のピンのバージョン番号を取得する。仮想。
IncrementPinVersion 一連のピンのバージョン数をインクリメントする。
GetSetupData フィルタの登録データを取得する。仮想。
純粋仮想メソッド  
GetPinCount ピンの数を取得する。
GetPin ピンを取得する。
IPersist メソッド  
GetClassID クラス識別子を取得する。
IMediaFilter メソッド  
GetState フィルタの状態 (実行中、停止、ポーズ) を取得する。
SetSyncSource フィルタの基準クロックを設定する。
GetSyncSource フィルタが使っている基準クロックを取得する。
Stop フィルタを停止する。
Pause フィルタをポーズする。
Run フィルタを実行する。
IBaseFilter メソッド  
EnumPins フィルタのピンを列挙する。
FindPin 指定した識別子でピンを取得する。
QueryFilterInfo フィルタについての情報を取得する。
JoinFilterGraph フィルタ グラフに参加したこと、またはフィルタ グラフから離れたことをフィルタに通知する。
QueryVendorInfo ベンダー情報を含む文字列を取得する。
IAMovieSetup メソッド  
Register レジストリにフィルタを追加する。
Unregister レジストリからフィルタを削除する。