CPullPin クラス
CPullPin クラスは、IAsyncReader インターフェイスを通してデータを取り出す入力ピンに対するサポートを提供する。このクラスは、プル モデルによってアップストリーム フィルタのデータを要求するフィルタを実装する場合に使う。詳細については、「フィルタ グラフとプル モデルのデータ フロー」を参照すること。
このクラスは CBasePin から派生せず、IPin インターフェイスも実装しない。一部のメソッド名は IPin と衝突するため、このクラスはピン内部のヘルパー オブジェクトとして使うのが最適な使用法である。このクラスの使い方は次のとおりである。
- CPullPin からヘルパー クラスを派生させ、CBasePin から入力ピン クラスを派生させる。CPullPin オブジェクトのインスタンスをピン クラスのメンバ変数として宣言する。
- CBasePin::CheckConnect メソッドをオーバーライドし、CPullPin::Connect を呼び出す。このメソッドは他のピンに IAsyncReader を問い合わせる。
- CBasePin::BreakConnect メソッドをオーバーライドし、CPullPin::Disconnect を呼び出す。
- CBasePin::Active メソッドをオーバーライドし、CPullPin::Active を呼び出す。このメソッドは、アップストリーム フィルタからサンプルを取り出すワーカー スレッドを起動する。ピンを接続する際、ワーカー スレッドで非同期または同期の読み取り要求を行うかどうかを指定できる。
- CBasePin::Inactive メソッドをオーバーライドし、CPullPin::Inactive を呼び出す。このメソッドはワーカー スレッドをシャットダウンする。
- 純粋仮想メソッド CPullPin::Receive を実装し、受信サンプルを処理してダウンストリームに出力する。
- 停止位置と開始位置を設定するには、またはストリームをシークするには、CPullPin::Seek メソッドを呼び出す。このメソッドはワーカー スレッドをポーズさせ、フィルタ グラフをフラッシュする。
- 純粋仮想メソッド CPullPin::EndOfStream、CPullPin::BeginFlush、CPullPin::EndFlush を実装する (これらのメソッドの「注意」を参照)。
- ストリーミング エラーを処理する純粋仮想メソッド CPullPin::OnError を実装する。
要件
ヘッダー: Pullpin.h と Streams.h をインクルードする。
ライブラリ: Strmbase.lib (リテール ビルド) または Strmbasd.lib (デバッグ ビルド)。
パブリック メンバ変数 | 説明 |
m_pAlloc | メモリ アロケータの IMemAllocator インターフェイスへのポインタ。 |
パブリック メソッド | |
Active | 出力ピンからデータを取り出すワーカー スレッドを作成する。 |
AlignDown | 指定したアラインメント境界まで値を切り捨てる。 |
AlignUp | 指定したアラインメント境界まで値を切り上げる。 |
Connect | 出力ピンへの接続を完了する。 |
CPullPin | コンストラクタ メソッド。 |
~CPullPin | デストラクタ メソッド。仮想。 |
DecideAllocator | 出力ピンとアロケータをネゴシエートする。仮想。 |
Disconnect | 出力ピンとの接続を解除する。 |
Duration | ストリームの時間幅を取得する。 |
GetReader | 出力ピンの IAsyncReader インターフェイスへのポインタを返す。 |
Inactive | 出力ピンからデータを取り出すワーカー スレッドをシャットダウンする。 |
Seek | メディア ストリームの開始位置と終了位置を設定する。 |
純粋仮想メソッド | |
BeginFlush | ダウンストリーム フィルタをフラッシュするようにオーナー フィルタに通知する。 |
EndFlush | フラッシュ処理を終了するようにオーナー フィルタに通知する。 |
EndOfStream | オブジェクトが最後のサンプルを出力した後に呼び出される。 |
OnError | ストリーミング中にエラーが発生すると呼び出される。 |
Receive | オブジェクトが出力ピンからメディア サンプルを受信すると呼び出される。 |