Share via


CTransformFilter クラス

CTransformFilter クラスの階層

CTransformFilter クラスは、変換フィルタを実装する基底クラスである。このクラスは 1 つの入力ピンと 1 つの出力ピンを持つ変換フィルタを実装するために設計されている。入力ピンと出力ピンに別のアロケータを使う。インプレイスでデータを処理するフィルタを作成するには、CTransInPlaceFilter クラスを使うこと。

このフィルタは入力ピンに CTransformInputPin クラスを使い、出力ピンに CTransformOutputPin クラスを使う。通常、これらのピン クラスをオーバーライドする必要はない。大部分のピン メソッドは CTransformFilter クラスで対応するメソッドを呼び出すので、必要に応じてそのフィルタ メソッドをオーバーライドできる。フィルタはCTransformFilter::GetPin メソッド内で両方のピンを作成する。ピン クラスをオーバーライドする場合、GetPin をオーバーライドしてカスタム ピンを作成しなければならない。

このクラスを使うには、新しいクラスを CTransformFilter から派生し、以下のメソッドを実装する。

フィルタの要求によって、他のメソッドを同様にオーバーライドする必要がある場合もある。

メディア タイプ

このフィルタの入力ピンは、どのメディア タイプも提示しない。接続のメディア タイプの提示をアップストリーム フィルタに依存する。このように設計されている理由は、ほとんどの場合アップストリーム フィルタがフォーマットについてより多くの情報を提供できるためである。たとえば、ビデオ フォーマットの場合、アップストリーム フィルタは、ビデオ ディメンジョンとフレーム レートを認識しているが、転送フィルタは、この情報を判断する方法を持たない。この動作を変更するには、入力ピンの GetMediaType メソッドをオーバーライドする。アップストリーム フィルタがメディア タイプを提示すると、入力ピンがフィルタの CheckInputType メソッド (純粋仮想) を呼び出す。

入力ピンが接続されるまで、出力ピンはすべての接続を拒否し、優先メディア タイプを何も返さない。入力ピンが接続されると、出力ピンはフィルタの GetMediaType メソッドを呼び出して優先タイプのリストを返す。出力ピンは、フィルタの CheckTransform メソッドを使って接続の出力タイプを調べる。(どちらのメソッドも純粋仮想である。) 通常、入力タイプは、使用可能な出力タイプの決定に影響を及ぼす。

フィルタによっては、フィルタ マッパー オブジェクトがフィルタを見つけられるように、フィルタでサポートされるいくつかのメディア タイプを登録した方がよい場合がある。詳細については、「DirectShow フィルタの登録方法」を参照すること。

ストリーミング

このクラスは出力データをキューに入れない。各出力サンプルは IMemInputPin::Receive メソッド内部から出力される。Receive メソッドは、フィルタの Transform メソッド (純粋仮想) を呼び出して、データを処理する。

要件

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

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

プロテクト メンバ変数  
m_bEOSDelivered フィルタがエンドオブストリーム (EOS) 通知を送ったかどうかを示すフラグ。
m_bSampleSkipped 最新のサンプルが落とされたかどうかを示すフラグ。
m_bQualityChanged 品質が変更されたかどうかを示すフラグ。
m_csFilter フィルタの状態を保護するクリティカル セクション。
m_csReceive ストリーミング状態を保護するクリティカル セクション。
m_pInput 入力ピンへのポインタ。
m_pOutput 出力ピンへのポインタ。
パブリック メソッド  
CTransformFilter コンストラクタ メソッド。
~CTransformFilter デストラクタ メソッド。
GetPinCount フィルタ上のピンの数を取得する。仮想。
GetPin ピンを取得する。仮想。
Transform 入力サンプルを変換して出力サンプルを作成する。仮想。
StartStreaming フィルタがポーズ状態にスイッチしたときに呼び出される。仮想。
StopStreaming フィルタが停止状態にスイッチしたときに呼び出される。仮想。
AlterQuality 品質の変更が要求されたことをフィルタに通知する。仮想。
SetMediaType メディア タイプがフィルタのピンの 1 つに設定されたときに呼び出される。仮想。
CheckConnect ピン接続が適切かどうかを調べる。仮想。
BreakConnect ピン接続を解除する。仮想。
CompleteConnect ピン接続を完了する。仮想。
Receive メディア サンプルを取得し、それを処理し、ダウンストリーム フィルタに出力サンプルを出力する。仮想。
InitializeOutputSample 新しい出力サンプルを取得し、それを初期化する。
EndOfStream 入力ピンからの追加データはないことをフィルタに通知する。仮想。
BeginFlush フラッシュ処理を開始する。仮想。
EndFlush フラッシュ処理を終了する。仮想。
NewSegment この呼び出し後に受け取ったメディア サンプルがセグメントとしてグループ化されていることをフィルタに通知する。仮想。
純粋仮想メソッド  
CheckInputType 指定されたメディア タイプが入力として許容されるかどうかをチェックする。
CheckTransform 入力メディア タイプが出力メディア タイプと互換性があるかどうかをチェックする。
DecideBufferSize 出力ピンのバッファ要求を設定する。
GetMediaType 出力ピン用の優先メディア タイプを取得する。
IMediaFilter メソッド  
Stop フィルタを停止する。
Pause フィルタをポーズする。
IBaseFilter メソッド  
FindPin 指定した識別子でピンを取得する。