Класс CSource

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

иерархия классов csource

Класс CSource является базовым классом для реализации исходных фильтров. Фильтр, производный от CSource , содержит один или несколько выходных контактов, производных от класса CSourceStream . Каждый выходной контакт создает рабочий поток, который отправляет примеры мультимедиа вниз.

Примечание

Класс CSource предназначен для поддержки модели отправки для потока данных. Этот класс не рекомендуется использовать для создания фильтров чтения файлов. Средства чтения файлов должны поддерживать модель извлечения через интерфейс IAsyncReader . Дополнительные сведения см. в разделе Поток данных для разработчиков фильтров.

Защищенные переменные-члены Описание
m_iPins Количество контактов на фильтре.
m_paStreams Массив контактов.
m_cStateLock Объект критического раздела, защищающий состояние фильтра.
Открытые методы Описание
CSource Метод конструктора.
~CSource Метод деструктора.
GetPinCount Извлекает количество контактов в фильтре.
GetPin Извлекает закрепление.
pStateLock Извлекает указатель на объект критического раздела фильтра.
AddPin Добавляет новый выходной контакт в фильтр.
RemovePin Удаляет указанный контакт из фильтра.
FindPinNumber Извлекает номер указанного контакта в фильтре.
Методы IBaseFilter Описание
FindPin Извлекает пин-код с указанным идентификатором.

Комментарии

Чтобы реализовать выходную закрепку, выполните следующие действия.

Чтобы реализовать фильтр, выполните следующие действия.

  • Наследуйте класс от CSource.
  • В конструкторе создайте один или несколько выходных контактов, производных от CSourceStream. Контакты автоматически добавляются в фильтр в методах конструктора и удаляются в методах деструктора.

Чтобы синхронизировать состояние фильтра между несколькими потоками, вызовите метод CSource::p StateLock . Этот метод возвращает указатель на критический раздел состояния фильтра. Используйте класс CAutoLock для хранения критического раздела. Из закрепления вы можете получить доступ к pStateLock из переменной члена CBasePin::m_pFilter контакта следующим образом:

CAutoLock lock(m_pFilter->pStateLock());

Требования

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

См. также раздел

Написание исходных фильтров