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


Класс CBaseOutputPin

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

Иерархия классов cbaseoutputpin

Класс CBaseOutputPin является абстрактным базовым классом, реализующим выходную закрепку.

Этот класс является производным от CBasePin. Он отличается от CBasePin в следующих отношениях:

  • Он подключается только к входным контактам, поддерживающим интерфейс IMemInputPin .
  • Он поддерживает передачу локальной памяти через интерфейс IMemAllocator .
  • Он отклоняет уведомления об окончании потока, очистке и новом сегменте. (Их не следует отправлять в выходной контакт.)
  • Он предоставляет методы для доставки нисходящих примеров.

Когда контакт подключается, он запрашивает выделение памяти из входного контакта. В противном случае создается новый объект распределителя. Выходной контакт отвечает за настройку свойств распределителя. Для этого используется чистый виртуальный метод CBaseOutputPin::D ecideBufferSize. Переопределите этот метод в производном классе. Если входной контакт имеет какие-либо требования к буферу, они передаются в метод DecideBufferSize .

Вызовите метод CBaseOutputPin::GetDeliveryBuffer , чтобы получить пустой пример носителя. Вызовите метод CBaseOutputPin::D eliver для доставки нисходящих примеров.

Производный класс должен переопределить чистый виртуальный метод CBasePin::CheckMediaType для проверки типа носителя во время соединений с закреплением.

Защищенные переменные-члены Описание
m_pAllocator Указатель на распределитель памяти.
m_pInputPin Указатель на входной контакт, подключенный к этому контакту.
Открытые методы Описание
CBaseOutputPin Метод конструктора.
CompleteConnect Завершает подключение к контакту ввода. Виртуальной.
DecideAllocator Выбирает распределителя памяти. Виртуальной.
GetDeliveryBuffer Извлекает пример носителя, содержащий пустой буфер. Виртуальной.
Доставка Доставляет пример носителя в подключенный входной контакт. Виртуальной.
InitAllocator Создает распределителя памяти. Виртуальной.
CheckConnect Определяет, подходит ли закрепление.
BreakConnect Освобождает закрепление из подключения.
Активен Уведомляет закрепление о том, что фильтр теперь активен.
Неактивно Уведомляет контакт о том, что фильтр больше не активен.
DeliverEndOfStream Доставляет уведомление об окончании потока в подключенный входной контакт. Виртуальной.
DeliverBeginFlush Запрашивает подключенный входной контакт, чтобы начать операцию очистки. Виртуальной.
DeliverEndFlush Запрашивает подключенный входной контакт для завершения операции очистки. Виртуальной.
DeliverNewSegment Доставляет уведомление о новом сегменте в подключенный входной контакт. Виртуальной.
Чистые виртуальные методы Описание
DecideBufferSize Задает требования к буферу.
Методы IPin Описание
BeginFlush Начинает операцию очистки.
EndFlush Завершает операцию очистки.
EndOfStream Уведомляет контакт о том, что дополнительные данные не ожидаются.

Требования

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