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


Класс CBaseStreamControl

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

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

Этот класс реализует интерфейс IAMStreamControl для входных и выходных контактов. Он обеспечивает контроль над запуском и остановкой отдельного закрепления на фильтре. Контакт, поддерживающий IAMStreamControl , должен наследоваться от этого базового класса. Ниже приведено типичное объявление для пин-кода ввода.

class CMyInputPin : public CBaseInputPin, public CBaseStreamControl

Обязательно переопределите NonDelegatingQueryInteface , чтобы предоставить IAMStreamControl. Дополнительные сведения см. в разделе How to Implement IUnknown.

Открытые методы Описание
CBaseStreamControl Метод конструктора.
~CBaseStreamControl Метод деструктора.
CheckStreamState Определяет, следует ли доставлять или отклонять образец носителя.
Промывки Уведомляет базовый класс о начале или остановке очистки контакта.
NotifyFilterState Уведомляет закрепление при изменении состояния фильтра.
SetFilterGraph Задает приемник событий для событий управления потоком.
SetSyncSource Уведомляет базовый класс о текущих эталонных часах.
Методы IAMStreamControl Описание
GetInfo Извлекает сведения о текущих параметрах управления потоком, включая время запуска и остановки.
StartAt Сообщает закреплению, когда следует начать доставку данных.
StopAt Сообщает контакту, когда следует прекратить доставку данных.

Комментарии

Для этого класса требуется, чтобы контакт и фильтр-владение уведомляли класс при возникновении различных событий, таких как присоединение фильтра к графу или получение новых ссылочных часов. Следует вызвать следующие методы класса:

Класс CBaseStreamControl использует эталонные часы графа фильтра, чтобы определить, какие образцы фильтра должны быть доставлены, а какие следует отменить. В методе IMemInputPin::Receive pin вызовите метод CBaseStreamControl::CheckStreamState с указателем на входящий пример мультимедиа. Если метод возвращает значение STREAM_FLOWING, добавьте нижестоящий образец. В противном случае удалите его.

Требования

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