Класс COutputQueue
[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код использовал MediaPlayer, IMFMediaEngine и аудио- и видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]
Класс COutputQueue
реализует очередь для доставки примеров мультимедиа.
Этот класс позволяет выводить примеры асинхронно. Примеры помещаются в очередь, а рабочий поток доставляет их во входной контакт. Очередь также может содержать управляющие сообщения, указывающие на новый сегмент, уведомление об окончании потока или операцию очистки.
Чтобы использовать этот класс, создайте объект COutputQueue для каждого выходного закрепления фильтра. В методе конструктора укажите входной контакт, подключенный к выходному контакту. При использовании этого класса выходной контакт не вызывает методы непосредственно во входном контакте. Вместо этого он вызывает соответствующие методы в COutputQueue
, как показано в следующей таблице.
При необходимости можно настроить 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 | Указывает событие, которое подается каждый раз, когда объект удаляет образец из очереди. |
Требования
Требование | Значение |
---|---|
Заголовок |
|
Библиотека |
|