CPullPin クラス
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]
クラスは CPullPin
、 IAsyncReader インターフェイスを介してデータをプルする入力ピンのサポートを提供します。 プル モデルを使用してアップストリーム フィルターからデータを要求するフィルターを実装する場合は、このクラスを使用します。 詳細については、「フィルター グラフとプル モデルのData Flow」を参照してください。
このクラスは CBasePin から派生したり 、IPin インターフェイスを実装したりせず、一部のメソッド名は IPin と競合するため、ピン内のヘルパー オブジェクトとして最適に使用されます。 このクラスを使用するには、次の操作を行います。
- から
CPullPin
ヘルパー クラスを派生させ、 CBasePin から入力ピン クラスを派生させます。 オブジェクトのインスタンスをCPullPin
pin クラスのメンバー変数として宣言します。 - CPullPin::Connect を呼び出すには、CBasePin::CheckConnect メソッドをオーバーライドします。 このメソッドは、 IAsyncReader のもう 1 つのピンに対してクエリを実行します。
- CBasePin::BreakConnect メソッドをオーバーライドして CPullPin::D isconnect を呼び出します。
- CBasePin::Active メソッドをオーバーライドして CPullPin::Active を呼び出します。 このメソッドは、アップストリーム フィルターからサンプルをプルするワーカー スレッドを起動します。 ピンが接続するときに、ワーカー スレッドで非同期読み取り要求と同期読み取り要求のどちらを行うかを指定できます。
- CPullPin::Inactive を呼び出すには、CBasePin::Inactive メソッドをオーバーライドします。 このメソッドは、ワーカー スレッドをシャットダウンします。
- 純粋な仮想 CPullPin::Receive メソッドを実装して、受信サンプルを処理し、ダウンストリームに配信します。
- 停止位置と開始位置を設定するか、ストリームをシークするには、 CPullPin::Seek メソッドを呼び出します。 このメソッドは、ワーカー スレッドを一時停止し、フィルター グラフをフラッシュします。
- 純粋な仮想 CPullPin::EndOfStream、 CPullPin::BeginFlush、 および CPullPin::EndFlush メソッドを実装します(これらのメソッドの備考を参照)。
- 純粋な仮想 CPullPin::OnError メソッドを実装して、ストリーミング エラーを処理します。
パブリック メンバー変数 | 説明 |
---|---|
m_pAlloc | メモリ アロケーターの IMemAllocator インターフェイスへのポインター。 |
パブリック メソッド | 説明 |
アクティブ | 出力ピンからデータをプルするワーカー スレッドを作成します。 |
AlignDown | 指定した配置境界に値を切り捨てます。 |
AlignUp | 指定した線形境界に値を切り上げます。 |
接続 | 出力ピンへの接続を完了します。 |
CPullPin | コンストラクター メソッド。 |
~CPullPin | デストラクター メソッド。 仮想。 |
DecideAllocator | アロケーターを出力ピンとネゴシエートします。 仮想。 |
[接続解除] | 出力ピンとの接続をくちばしします。 |
期間 | ストリームの期間を取得します。 |
GetReader | 出力ピンの IAsyncReader インターフェイスへのポインターを返します。 |
非アクティブ | 出力ピンからデータをプルするワーカー スレッドをシャットダウンします。 |
Seek | ストリームの開始位置と停止位置を設定します。 |
純粋仮想メソッド | 説明 |
BeginFlush | ダウンストリーム フィルターをフラッシュするように所有フィルターに通知します。 |
EndFlush | フラッシュ操作を終了するように所有フィルターに通知します。 |
EndOfStream | オブジェクトが最後のサンプルを配信した後に呼び出されます。 |
OnError | ストリーミング中にエラーが発生した場合に呼び出されます。 |
受信 | オブジェクトが出力ピンからメディア サンプルを受信したときに呼び出されます。 |
要件
要件 | 値 |
---|---|
ヘッダー |
|
ライブラリ |
|