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


Метод CBaseOutputPin.Deliver

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

Метод Deliver доставляет пример носителя в подключенный входной контакт.

Синтаксис

virtual HRESULT Deliver(
   IMediaSample *pSample
);

Параметры

pSample

Указатель на интерфейс IMediaSample примера.

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

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

Код возврата Описание
S_OK
Успешно.
VFW_E_NOT_CONNECTED
Закрепление не подключено.

Комментарии

Этот метод вызывает метод IMemInputPin::Receive для пин-кода ввода. Получение может блокироваться, если метод IMemInputPin::ReceiveCanBlock возвращает S_OK.

Отпустите пример после вызова этого метода. Входной контакт может содержать количество ссылок в образце, поэтому не используйте его повторно. Всегда вызывайте метод CBaseOutputPin::GetDeliveryBuffer , чтобы получить новый пример.

Перед вызовом этого метода удерживайте критический раздел фильтра. В противном случае контакт может быть отключен во время вызова метода. Если фильтр использует рабочий поток для доставки примеров, удерживайте критический раздел, когда фильтр будет готов к доставке примера. В противном случае можно сохранить критический раздел в методе IMemInputPin::Receive фильтра, где фильтр обрабатывает примеры.

Рабочие потоки могут создать потенциальную взаимоблокировку. Когда поток содержит критически важный раздел, он может ожидать изменения состояния в фильтре. В то же время изменение состояния может ожидать завершения потока. Чтобы избежать этого, код изменения состояния должен сигнализировать о событии, которое завершает поток, а затем ждать завершения потока.

Требования

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

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

Класс CBaseOutputPin