COutputQueue 类

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 线程正在等待示例时具有非零值的标志。
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 将一批媒体示例传送到输入引脚。
重置 重置对象,以便它可以接收更多数据。
IsIdle 确定对象是否正在等待数据。
SetPopEvent 指定每当对象从队列中删除示例时发出信号的事件。

要求

要求 Value
标头
Outputq.h (包括 Streams.h)

Strmbase.lib (零售版) ;
Strmbasd.lib (调试生成)