[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]
クラスは 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 | オブジェクトがキューからサンプルを削除するたびに通知されるイベントを指定します。 |
要件
| 要件 | 値 |
|---|---|
| ヘッダー |
|
| ライブラリ |
|