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 |
---|---|
标头 |
|
库 |
|