Метод 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 . Возможные значения включают значения, приведенные в следующей таблице.
Код возврата | Описание |
---|---|
|
Диспетчер графов фильтров не принимает уведомления о событиях. |
|
Успешно. |
Комментарии
Фильтр может получать уведомление об окончании потока до времени остановки текущего примера. Если это так, фильтр должен подождать, прежде чем отправлять уведомление EC_COMPLETE в диспетчер графов фильтров.
Таким образом:
- Если фильтр получил уведомление о завершении потока (EOS), этот метод запланирует событие таймера. При активации события таймера фильтр отправляет событие EC_COMPLETE.
- Если фильтр получил уведомление EOS, которое не было раньше, этот метод немедленно отправляет событие EC_COMPLETE.
- Если в фильтре нет ожидающих уведомлений EOS, метод возвращается без каких-либо действий.
Метод обратного вызова таймера — CBaseRenderer::TimerCallback. Чтобы доставить событие EC_COMPLETE, фильтр вызывает метод CBaseRenderer::NotifyEndOfStream .
Требования
Требование | Значение |
---|---|
Заголовок |
|
Библиотека |
|