次の方法で共有


CPullPin クラス

CPullPin クラスの階層

CPullPin クラスは、IAsyncReader インターフェイスを通してデータを取り出す入力ピンに対するサポートを提供する。このクラスは、プル モデルによってアップストリーム フィルタのデータを要求するフィルタを実装する場合に使う。詳細については、「フィルタ グラフとプル モデルのデータ フロー」を参照すること。

このクラスは CBasePin から派生せず、IPin インターフェイスも実装しない。一部のメソッド名は IPin と衝突するため、このクラスはピン内部のヘルパー オブジェクトとして使うのが最適な使用法である。このクラスの使い方は次のとおりである。

  1. CPullPin からヘルパー クラスを派生させ、CBasePin から入力ピン クラスを派生させる。CPullPin オブジェクトのインスタンスをピン クラスのメンバ変数として宣言する。
  2. CBasePin::CheckConnect メソッドをオーバーライドし、CPullPin::Connect を呼び出す。このメソッドは他のピンに IAsyncReader を問い合わせる。
  3. CBasePin::BreakConnect メソッドをオーバーライドし、CPullPin::Disconnect を呼び出す。
  4. CBasePin::Active メソッドをオーバーライドし、CPullPin::Active を呼び出す。このメソッドは、アップストリーム フィルタからサンプルを取り出すワーカー スレッドを起動する。ピンを接続する際、ワーカー スレッドで非同期または同期の読み取り要求を行うかどうかを指定できる。
  5. CBasePin::Inactive メソッドをオーバーライドし、CPullPin::Inactive を呼び出す。このメソッドはワーカー スレッドをシャットダウンする。
  6. 純粋仮想メソッド CPullPin::Receive を実装し、受信サンプルを処理してダウンストリームに出力する。
  7. 停止位置と開始位置を設定するには、またはストリームをシークするには、CPullPin::Seek メソッドを呼び出す。このメソッドはワーカー スレッドをポーズさせ、フィルタ グラフをフラッシュする。
  8. 純粋仮想メソッド CPullPin::EndOfStreamCPullPin::BeginFlushCPullPin::EndFlush を実装する (これらのメソッドの「注意」を参照)。
  9. ストリーミング エラーを処理する純粋仮想メソッド 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 オブジェクトが出力ピンからメディア サンプルを受信すると呼び出される。