COutputQueue クラス

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

coutputqueue

クラスは COutputQueue 、メディア サンプルを配信するキューを実装します。

このクラスを使用すると、出力ピンでサンプルを非同期的に配信できます。 サンプルはキューに配置され、ワーカー スレッドによって入力ピンに配信されます。 キューには、新しいセグメント、ストリームの終了通知、またはフラッシュ操作を示す制御メッセージを保持することもできます。

このクラスを使用するには、フィルター上のすべての出力ピンに対して COutputQueue オブジェクトを作成します。 コンストラクター メソッドで、その出力ピンに接続されている入力ピンを指定します。 このクラスを使用すると、出力ピンは入力ピンでメソッドを直接呼び出しません。 代わりに、次の表に示すように、 で COutputQueue対応するメソッドを呼び出します。

Pin メソッド COutputQueue メソッド
IPin::BeginFlush BeginFlush
IPin::EndFlush EndFlush
IPin::EndOfStream EOS
IPin::NewSegment NewSegment
IMemInputPin::Receive 受信
IMemInputPin::ReceiveMultiple ReceiveMultiple

必要に応じて、ワーカー スレッドなしでサンプルを COutputQueue 同期的に配信するように オブジェクトを構成できます。 オブジェクトは、入力ピンの特性に基づいて、実行時にワーカー スレッドを使用するかどうかを決定することもできます。 詳細については、「 COutputQueue::COutputQueue」を参照してください。

保護されたメンバー変数 説明
m_pPin 入力ピンの IPin インターフェイスへのポインター。
m_pInputPin 入力ピンの IMemInputPin インターフェイスへのポインター。
m_bBatchExact オブジェクトが正確なバッチでサンプルを配信するかどうかを指定するフラグ。
m_lBatchSize バッチ サイズ。
m_List メディア サンプル キュー。
m_hSem スレッドがサンプルを待機するために使用するセマフォへのハンドル。
m_evFlushComplete フラッシュ操作が完了したときに通知するイベント。
m_hThread ワーカー スレッドへのハンドル。
m_ppSamples サイズ COutputQueue::m_lBatchSize のサンプルの配列。
m_nBatched 現在バッチ処理され、処理を待機しているサンプルの数。
m_lWaiting スレッドがサンプルを待機しているときに 0 以外の値を持つフラグ。
m_bFlushing オブジェクトがフラッシュ操作を実行しているかどうかを示すフラグ。
m_bTerminate スレッドを終了するかどうかを指定するフラグ。
m_bSendAnyway バッチ処理をオーバーライドするフラグ。
m_hr オブジェクトがサンプルを受け入れるかどうかを示す HRESULT 値。
m_hEventPop オブジェクトがキューからサンプルを削除するたびに通知されるイベント。
プロテクト メソッド 説明
InitialThreadProc スレッドの作成時に COutputQueue::ThreadProc メソッドを呼び出します。
ThreadProc キューからサンプルを取得し、入力ピンに配信します。
IsQueued オブジェクトがワーカー スレッドを使用してサンプルを配信しているかどうかを判断します。
QueueSample メディア サンプルまたは制御メッセージをキューに入れます。
IsSpecialSample キューに入れたデータが制御メッセージであるかどうかを判断します。
FreeSamples 保留中のすべてのサンプルを解放します。
NotifyThread キューにデータが含まれていることをスレッドに通知します。
パブリック メソッド 説明
COutputQueue コンストラクター メソッド。
~COutputQueue デストラクター メソッド。
BeginFlush フラッシュ操作を開始します。
EndFlush フラッシュ操作を終了します。
EOS 入力ピンにストリームの終了呼び出しを配信します。
SendAnyway 保留中のサンプルを配信します。
NewSegment 入力ピンに新しいセグメントを配信します。
受信 入力ピンにメディア サンプルを配信します。
ReceiveMultiple メディア サンプルのバッチを入力ピンに配信します。
Reset より多くのデータを受信できるようにオブジェクトをリセットします。
IsIdle オブジェクトがデータを待機しているかどうかを判断します。
SetPopEvent オブジェクトがキューからサンプルを削除するたびに通知されるイベントを指定します。

要件

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