Метод CSourceStream.DoBufferProcessingLoop
[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код использовал MediaPlayer, IMFMediaEngine и аудио- и видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]
Метод DoBufferProcessingLoop
создает данные мультимедиа и доставляет их в нисходящий входной контакт.
Синтаксис
virtual HRESULT DoBufferProcessingLoop();
Параметры
Этот метод не имеет параметров.
Возвращаемое значение
Возвращает значение HRESULT . Возможные значения включают значения, показанные в следующей таблице.
Код возврата | Описание |
---|---|
|
Поток получил запрос на остановку. |
|
Поток завершен, или нижестоящий фильтр не принимает примеры. |
Комментарии
Этот метод реализует цикл main, который обрабатывает данные и доставляет их ниже. Каждый раз, когда выполняется цикл, метод извлекает пустой образец носителя из распределителя. Он передает пример в метод CSourceStream::FillBuffer . Метод FillBuffer , который должен реализовать производный класс, создает данные мультимедиа и помещает их в буфер образца.
Цикл завершается, когда происходит любое из следующих действий:
- Метод IMemInputPin::Receive входного контакта отклоняет пример.
- Метод FillBuffer возвращает S_FALSE, указывая конец потока, или возвращает код ошибки.
- Поток получает запрос CSourceStream::Stop .
Метод DoBufferProcessingLoop
обрабатывает уведомление об окончании потока. Если возникает ошибка, она отправляет событие EC_ERRORABORT диспетчеру графов фильтров.
Требования
Требование | Значение |
---|---|
Заголовок |
|
Библиотека |
|