次の方法で共有


CPullPin クラス

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayerIMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]

cpullpin クラス階層

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

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

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

要件

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