Класс CBaseStreamControl
[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде MediaPlayer, IMFMediaEngine и аудио/видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие API, чтобы по возможности использовать новые API.]
Этот класс реализует интерфейс IAMStreamControl для входных и выходных контактов. Он обеспечивает контроль над запуском и остановкой отдельного закрепления на фильтре. Контакт, поддерживающий IAMStreamControl , должен наследоваться от этого базового класса. Ниже приведено типичное объявление для пин-кода ввода.
class CMyInputPin : public CBaseInputPin, public CBaseStreamControl
Обязательно переопределите NonDelegatingQueryInteface , чтобы предоставить IAMStreamControl. Дополнительные сведения см. в разделе How to Implement IUnknown.
Открытые методы | Описание |
---|---|
CBaseStreamControl | Метод конструктора. |
~CBaseStreamControl | Метод деструктора. |
CheckStreamState | Определяет, следует ли доставлять или отклонять образец носителя. |
Промывки | Уведомляет базовый класс о начале или остановке очистки контакта. |
NotifyFilterState | Уведомляет закрепление при изменении состояния фильтра. |
SetFilterGraph | Задает приемник событий для событий управления потоком. |
SetSyncSource | Уведомляет базовый класс о текущих эталонных часах. |
Методы IAMStreamControl | Описание |
GetInfo | Извлекает сведения о текущих параметрах управления потоком, включая время запуска и остановки. |
StartAt | Сообщает закреплению, когда следует начать доставку данных. |
StopAt | Сообщает контакту, когда следует прекратить доставку данных. |
Комментарии
Для этого класса требуется, чтобы контакт и фильтр-владение уведомляли класс при возникновении различных событий, таких как присоединение фильтра к графу или получение новых ссылочных часов. Следует вызвать следующие методы класса:
- В методе IMediaFilter::SetSyncSource фильтра вызовите метод CBaseStreamControl::SetSyncSource . Этот метод уведомляет класс о текущих эталонных часах.
- В методе CBaseFilter::JoinFilterGraph фильтра вызовите метод CBaseStreamControl::SetFilterGraph . Этот метод дает классу указатель на диспетчер фильтров графов, чтобы класс смог отправлять правильные события управления потоком.
- При изменении состояния фильтра (на запущено, приостановлено или остановлено), вызовите метод CBaseStreamControl::NotifyFilterState .
- В методах IPin::BeginFlush и IPin::EndFlush контакта вызовите метод CBaseStreamControl::Flushing .
Класс CBaseStreamControl
использует эталонные часы графа фильтра, чтобы определить, какие образцы фильтра должны быть доставлены, а какие следует отменить. В методе IMemInputPin::Receive pin вызовите метод CBaseStreamControl::CheckStreamState с указателем на входящий пример мультимедиа. Если метод возвращает значение STREAM_FLOWING, добавьте нижестоящий образец. В противном случае удалите его.
Требования
Требование | Значение |
---|---|
Заголовок |
|
Библиотека |
|