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


Метод 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, пока фильтр не обработает все ожидающие выборки.

Требования

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

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

Класс CRenderedInputPin