Метод CRenderedInputPin.EndOfStream
[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код использовал MediaPlayer, IMFMediaEngine и аудио- и видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]
Метод EndOfStream
уведомляет закрепление о том, что дополнительные данные не ожидаются, пока не будет выдана новая команда выполнения для фильтра. Этот метод реализует метод IPin::EndOfStream .
Синтаксис
HRESULT EndOfStream();
Параметры
Этот метод не имеет параметров.
Возвращаемое значение
Возвращает S_OK в случае успешного выполнения, или код ошибки в противном случае.
Комментарии
Если фильтр выполняется, этот метод отправляет событие EC_COMPLETE в диспетчер фильтров Graph. В противном случае задает флаг, чтобы при следующем запуске фильтра отправлялось событие EC_COMPLETE. Очистка фильтра очищает флаг.
Этот метод следует переопределить для удержания блокировки потоковой передачи пин-кода:
class CMyInputPin : public CRenderedInputPin
{
private:
CCritSec * const m_pReceiveLock; // Streaming lock.
public:
STDMETHODIMP EndOfStream(void);
/* (Remainder of the class declaration not shown.) */
};
STDMETHODIMP CMyInputPin::EndOfStream(void)
{
CAutoLock lock(m_pReceiveLock);
return CRenderedInputPin::EndOfStream();
}
Кроме того, если фильтр обрабатывает вызовы receive асинхронно, пин-код должен ждать отправки события EC_COMPLETE, пока фильтр не обработает все ожидающие выборки.
Требования
Требование | Значение |
---|---|
Заголовок |
|
Библиотека |
|