Поделиться через


Класс COutputQueue

[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код использовал MediaPlayer, IMFMediaEngine и аудио- и видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]

coutputqueue

Класс COutputQueue реализует очередь для доставки примеров мультимедиа.

Этот класс позволяет выводить примеры асинхронно. Примеры помещаются в очередь, а рабочий поток доставляет их во входной контакт. Очередь также может содержать управляющие сообщения, указывающие на новый сегмент, уведомление об окончании потока или операцию очистки.

Чтобы использовать этот класс, создайте объект COutputQueue для каждого выходного закрепления фильтра. В методе конструктора укажите входной контакт, подключенный к выходному контакту. При использовании этого класса выходной контакт не вызывает методы непосредственно во входном контакте. Вместо этого он вызывает соответствующие методы в COutputQueue, как показано в следующей таблице.

Метод pin Метод COutputQueue
IPin::BeginFlush BeginFlush
IPin::EndFlush EndFlush
IPin::EndOfStream EOS
IPin::NewSegment NewSegment
IMemInputPin::Receive 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 Доставляет новый сегмент во входной контакт.
Receive Доставляет образец носителя во входной пин-код.
ReceiveMultiple Доставляет пакет примеров мультимедиа во входной контакт.
Reset Сбрасывает объект для получения дополнительных данных.
IsIdle Определяет, ожидает ли объект данные.
SetPopEvent Указывает событие, которое подается каждый раз, когда объект удаляет образец из очереди.

Требования

Требование Значение
Заголовок
Outputq.h (включая Streams.h)
Библиотека
Strmbase.lib (розничные сборки);
Strmbasd.lib (отладочные сборки)