Класс CPullPin
[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код использовал MediaPlayer, IMFMediaEngine и аудио- и видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]
Класс CPullPin
обеспечивает поддержку входных контактов, которые извлекает данные через интерфейс IAsyncReader . Используйте этот класс, если вы реализуете фильтр, который использует модель извлечения для запроса данных из фильтра вышестоящий. Дополнительные сведения см. в разделе Поток данных в графе фильтра и модели по запросу.
Этот класс не является производным от CBasePin и не реализует интерфейс IPin , а некоторые имена методов конфликтуют с IPin, поэтому его лучше использовать в качестве вспомогательного объекта внутри контакта. Чтобы использовать этот класс, выполните следующие действия.
- Наследуйте вспомогательный класс от
CPullPin
, а класс входного закрепления — от CBasePin. Объявите экземпляр объекта какCPullPin
переменную-член класса pin. - Переопределите метод CBasePin::CheckConnect для вызова CPullPin::Connect. Этот метод запрашивает другой контакт для IAsyncReader.
- Переопределите метод CBasePin::BreakConnect , чтобы вызвать CPullPin::D isconnect.
- Переопределите метод CBasePin::Active для вызова CPullPin::Active. Этот метод запускает рабочий поток, который извлекает примеры из фильтра вышестоящий. При подключении контактов можно указать, будет ли рабочий поток выполнять асинхронные или синхронные запросы на чтение.
- Переопределите метод CBasePin::Inactive для вызова CPullPin::Inactive. Этот метод завершает работу рабочего потока.
- Реализуйте чистый виртуальный метод CPullPin::Receive для обработки входящих примеров и их доставки ниже.
- Чтобы задать позиции stop и start или найти поток, вызовите метод CPullPin::Seek . Этот метод приостанавливает рабочий поток и очищает граф фильтра.
- Реализуйте чистые виртуальные методы CPullPin::EndOfStream, CPullPin::BeginFlush и CPullPin::EndFlush , как описано в примечаниях для этих методов.
- Реализуйте чистый виртуальный метод CPullPin::OnError для обработки ошибок потоковой передачи.
Открытые переменные-члены | Описание |
---|---|
m_pAlloc | Указатель на интерфейс IMemAllocator распределителя памяти. |
Открытые методы | Описание |
Активных | Создает рабочий поток, который извлекает данные из выходного закрепления. |
AlignDown | Усекает значение до указанной границы выравнивания. |
Выравнивание | Округляет значение до указанной границы выравнивания. |
Подключения | Завершает подключение к выходному закреплению. |
CPullPin | Метод конструктора. |
~CPullPin | Метод деструктора. Виртуальной. |
DecideAllocator | Согласовывает распределителя с выходным закреплением. Виртуальной. |
Отключение | Клюв соединения с выходным закреплением. |
Duration | Извлекает длительность потока. |
GetReader | Возвращает указатель на интерфейс IAsyncReader выходного контакта. |
Неактивно | Завершает работу рабочего потока, который извлекает данные из выходного закрепления. |
Seek | Задает начальную и стоп-позицию потока. |
Чистые виртуальные методы | Описание |
BeginFlush | Сообщает фильтру-владельцев для очистки подчиненных фильтров. |
EndFlush | Сообщает фильтру владельцев о завершении операции очистки. |
EndOfStream | Вызывается после того, как объект доставляет последний пример. |
OnError | Вызывается при возникновении ошибки во время потоковой передачи. |
Receive | Вызывается, когда объект получает образец носителя из выходного закрепления. |
Требования
Требование | Значение |
---|---|
Заголовок |
|
Библиотека |
|