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


Класс CBaseFilter

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

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

Класс CBaseFilter является абстрактным классом для реализации фильтров. Чтобы реализовать фильтр с помощью этого класса, необходимо выполнить по крайней мере следующие действия:

  • Наследуйте новый класс от CBaseFilter.
  • Включите переменные-члены, определяющие контакты в фильтре. Контакты должны наследоваться от класса CBasePin .
  • Переопределите чистый виртуальный метод CBaseFilter::GetPin, который извлекает контакты на фильтре.
  • Переопределите чистый виртуальный метод CBaseFilter::GetPinCount, который извлекает количество контактов.
  • Предоставляет методы для создания, обработки или отрисовки примеров мультимедиа.

Несколько базовых классов являются производными от CBaseFilter, включая CSource, CBaseRenderer и CTransformFilter. Обычно проще реализовать фильтр с помощью одного из этих специализированных классов, а не использовать CBaseFilter напрямую.

Защищенные переменные-члены Описание
m_State Текущее состояние фильтра.
m_pClock Указатель на эталонные часы фильтра.
m_tStart Время ссылки, соответствующее времени потока 0.
m_clsid Идентификатор класса (CLSID) фильтра.
m_pLock Указатель на критически важный раздел, используемый для сериализации изменений состояния.
m_pName Имя фильтра.
m_pGraph Указатель на диспетчер графов фильтров.
m_pSink Указатель на интерфейс IMediaEventSink в диспетчере графов фильтров.
m_PinVersion Текущая версия набора контактов на этом фильтре.
Открытые методы Описание
CBaseFilter Метод конструктора.
~ CBaseFilter Метод деструктора.
StreamTime Извлекает текущее время потока. Виртуальной.
Isactive Определяет, активен ли фильтр (запущен или приостановлен).
IsStopped Определяет, остановлен ли фильтр в данный момент.
NotifyEvent Отправляет уведомление о событии диспетчеру графов фильтров.
GetFilterGraph Извлекает указатель на диспетчер графов фильтров.
Повторное подключение Разрывает существующее соединение контактов и повторно подключает его к тому же контакту, используя указанный тип носителя.
GetPinVersion Извлекает номер версии для набора контактов в этом фильтре. Виртуальной.
IncrementPinVersion Увеличивает номер версии в наборе контактов.
GetSetupData Извлекает данные регистрации для фильтра. Виртуальной.
Чистые виртуальные методы Описание
GetPinCount Извлекает количество контактов.
GetPin Извлекает закрепление.
Методы IPersist Описание
GetClassID Извлекает идентификатор класса.
Методы IMediaFilter Описание
GetState Извлекает состояние фильтра (выполняется, остановлено или приостановлено).
SetSyncSource Задает эталонные часы для фильтра.
GetSyncSource Извлекает эталонные часы, которые использует фильтр.
Остановить Останавливает фильтр.
Пауза Приостанавливает фильтр.
Выполнить Запускает фильтр.
Методы IBaseFilter Описание
EnumPins Перечисляет контакты в этом фильтре.
FindPin Извлекает пин-код с указанным идентификатором.
QueryFilterInfo Извлекает сведения о фильтре.
JoinFilterGraph Уведомляет фильтр о том, что он присоединился к графу фильтра или покинул его.
QueryVendorInfo Извлекает строку, содержащую сведения о поставщике.
Методы IAMovieSetup Описание
Зарегистрировать Добавляет фильтр в реестр.
Unregister; Удаляет фильтр из реестра.

Требования

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