Метод CBaseRenderer.SendEndOfStream

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

Если достигнут конец потока, SendEndOfStream метод планирует событие EC_COMPLETE для диспетчера графов фильтров.

Синтаксис

virtual HRESULT SendEndOfStream();

Параметры

Этот метод не имеет параметров.

Возвращаемое значение

Возвращает значение HRESULT . Возможные значения включают значения, приведенные в следующей таблице.

Код возврата Описание
S_FALSE
Диспетчер графов фильтров не принимает уведомления о событиях.
S_OK
Успешно.

Комментарии

Фильтр может получать уведомление об окончании потока до времени остановки текущего примера. Если это так, фильтр должен подождать, прежде чем отправлять уведомление EC_COMPLETE в диспетчер графов фильтров.

Таким образом:

  • Если фильтр получил уведомление о завершении потока (EOS), этот метод запланирует событие таймера. При активации события таймера фильтр отправляет событие EC_COMPLETE.
  • Если фильтр получил уведомление EOS, которое не было раньше, этот метод немедленно отправляет событие EC_COMPLETE.
  • Если в фильтре нет ожидающих уведомлений EOS, метод возвращается без каких-либо действий.

Метод обратного вызова таймера — CBaseRenderer::TimerCallback. Чтобы доставить событие EC_COMPLETE, фильтр вызывает метод CBaseRenderer::NotifyEndOfStream .

Требования

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

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

Класс CBaseRenderer