次の方法で共有


CSource クラス

CSource クラスの階層

CSource クラスは、ソース フィルタを実装するための基底クラスである。CSource から派生したフィルタには、CSourceStream クラスから派生した 1 つまたは複数の出力ピンが含まれる。それぞれの出力ピンは、メディア サンプルをダウンストリームにプッシュするワーカー スレッドを作成する。

出力ピンを実装するには、以下を実行する。

フィルタを実装するには、以下を実行する。

  • CSource からクラスを派生する。
  • コンストラクタで、CSourceStream から派生した 1 つまたは複数のピンを作成する。ピンは、コンストラクタ メソッドで自動的にフィルタに追加され、デストラクタ メソッドで削除される。

複数のスレッド間でフィルタの状態を同期するには、CSource::pStateLock メソッドを呼び出す。このメソッドは、フィルタ状態のクリティカル セクションへのポインタを返す。CAutoLock クラスを使って、クリティカル セクションを保持する。次に示すように、ピンからはピンの CBasePin::m_pFilter メンバ変数から pStateLock にアクセスできる。

CAutoLock lock(m_pFilter->pStateLock());

  CSource クラスは、データ フローのプッシュ モデルをサポートするように設計されている。このクラスは、ファイル リーダー フィルタの作成には推奨しない。ファイル リーダーは、IAsyncReader インターフェイスを介して、プル モデルをサポートする必要がある。詳細については、「フィルタ開発者が使うデータ フロー」を参照すること。

要件

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

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

プロテクト メンバ変数  
m_iPins フィルタのピンの数。
m_paStreams ピンの配列。
m_cStateLock フィルタの状態を保護するクリティカル セクション オブジェクト。
パブリック メソッド
CSource コンストラクタ メソッド。
~CSource デストラクタ メソッド。
GetPinCount フィルタ上のピンの数を取得する。
GetPin ピンを取得する。
pStateLock フィルタのクリティカル セクション オブジェクトへのポインタを取得する。
AddPin フィルタに新しい出力ピンを追加する。
RemovePin フィルタから指定されたピンを取り除く。
FindPinNumber フィルタ上から、指定された数のピンを取得する。
IBaseFilter メソッド  
FindPin 指定した識別子でピンを取得する。