共用方式為


COutputQueue 類別

[與此頁面 相關的功能 DirectShow是舊版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayerIMFMediaEngine音訊/視訊擷取 ,而不是 DirectShow。 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

受保護的成員變數 Description
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 當執行緒正在等候樣本時,具有非零值的旗標。
m_bFlushing 旗標,指定物件是否正在執行排清作業。
m_bTerminate 指定執行緒是否應該終止的旗標。
m_bSendAnyway 覆寫批次處理的旗標。
m_hr HRESULT 值,指出物件是否接受樣本。
m_hEventPop 每當物件從佇列中移除範例時,就會發出訊號的事件。
保護方法 Description
InitialThreadProc 建立執行緒時,呼叫 COutputQueue::ThreadProc 方法。
ThreadProc 從佇列擷取樣本,並將其傳遞至輸入針腳。
IsQueued 判斷物件是否使用背景工作執行緒來傳遞範例。
QueueSample 將媒體範例或控制訊息排入佇列。
IsSpecialSample 判斷佇列資料是否為控制訊息。
FreeSamples 釋放所有擱置中的範例。
NotifyThread 通知執行緒佇列包含資料。
公用方法 Description
COutputQueue 建構函式方法。
~COutputQueue 解構函式方法。
BeginFlush 開始排清作業。
EndFlush 結束排清作業。
EOS 將串流結束呼叫傳遞至輸入針腳。
SendAnyway 提供任何擱置的範例。
NewSegment 將新的區段傳遞至輸入針腳。
接收 將媒體範例傳遞至輸入針腳。
ReceiveMultiple 將一批媒體範例傳遞至輸入針腳。
重 置 重設 物件,使其可以接收更多資料。
IsIdle 判斷物件是否正在等候資料。
SetPopEvent 指定每當物件從佇列中移除範例時發出訊號的事件。

規格需求

需求
標頭
Outputq.h (包含 Streams.h)
程式庫
Strmbase.lib (零售組建) ;
Strmbasd.lib (偵錯組建)