CPullPin クラス

cpullpin class hierarchy

このクラスは CPullPinIAsyncReader インターフェイスを介してデータをプルする入力ピンのサポートを提供します。 プル モデルを使用してアップストリーム フィルターからデータを要求するフィルターを実装する場合は、このクラスを使用します。 詳細については、「フィルター Graphとプル モデル」のData Flowを参照してください。

このクラスは CBasePin から派生したり 、IPin インターフェイスを実装したりせず、一部のメソッド名は IPin と競合するため、ピン内のヘルパー オブジェクトとして最適に使用されます。 このクラスを使用するには、次の操作を行います。

  1. CBasePin から CPullPinヘルパー クラスを派生させ、 CBasePin から入力ピン クラスを派生させます。 pin クラスの CPullPin メンバー変数としてオブジェクトのインスタンスを宣言します。
  2. CBasePin::CheckConnect メソッドをオーバーライドして CPullPin::Connect を呼び出します。 このメソッドは、 IAsyncReader のもう一方のピンに対してクエリを実行します。
  3. CBasePin::BreakConnect メソッドをオーバーライドして CPullPin::D isconnect を呼び出します。
  4. CBasePin::Active メソッドをオーバーライドして CPullPin::Active を呼び出します。 このメソッドは、アップストリーム フィルターからサンプルをプルするワーカー スレッドを起動します。 ピンが接続されると、ワーカー スレッドで非同期読み取り要求と同期読み取り要求のどちらを行うかを指定できます。
  5. CBasePin::Inactive メソッドをオーバーライドして CPullPin::Inactive を呼び出します。 このメソッドは、ワーカー スレッドをシャットダウンします。
  6. 純粋な仮想 CPullPin::Receive メソッドを実装して、受信サンプルを処理し、ダウンストリームに配信します。
  7. 停止位置と開始位置を設定するか、ストリームをシークするには、 CPullPin::Seek メソッドを呼び出します。 このメソッドは、ワーカー スレッドを一時停止し、フィルター グラフをフラッシュします。
  8. 純粋な仮想 CPullPin::EndOfStreamCPullPin::BeginFlushおよび CPullPin::EndFlush メソッドを実装します(これらのメソッドの解説で説明します)。
  9. 純粋な仮想 CPullPin::OnError メソッドを実装して、ストリーミング エラーを処理します。
パブリック メンバー変数 説明
m_pAlloc メモリ アロケーターの IMemAllocator インターフェイスへのポインター。
パブリック メソッド 説明
アクティブ 出力ピンからデータをプルするワーカー スレッドを作成します。
AlignDown 指定した配置境界に値を切り捨てます。
AlignUp 指定した線形境界に値を丸めます。
のインスタンスに接続するときには、 出力ピンへの接続を完了します。
CPullPin コンストラクター メソッド。
~CPullPin デストラクター メソッド。 仮想。
DecideAllocator 出力ピンを使用してアロケーターをネゴシエートします。 仮想。
[接続解除] 出力ピンとの接続をビークします。
Duration ストリームの期間を取得します。
GetReader 出力ピンの IAsyncReader インターフェイスへのポインターを返します。
非アクティブ 出力ピンからデータをプルするワーカー スレッドをシャットダウンします。
Seek ストリームの開始位置と停止位置を設定します。
純粋仮想メソッド 説明
BeginFlush ダウンストリーム フィルターをフラッシュするように所有フィルターに通知します。
EndFlush フラッシュ操作を終了するように所有フィルターに通知します。
EndOfStream オブジェクトが最後のサンプルを配信した後に呼び出されます。
OnError ストリーミング中にエラーが発生した場合に呼び出されます。
受信 オブジェクトが出力ピンからメディア サンプルを受信したときに呼び出されます。

要件

要件
ヘッダー
Pullpin.h (ストリーム.h を含む)
ライブラリ
Strmbase.lib (リテール ビルド);
Strmbasd.lib (デバッグ ビルド)