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


Метод CDynamicOutputPin.ChangeMediaType

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

Метод ChangeMediaType динамически изменяет тип носителя для подключения. Изменение может произойти во время работы графа фильтра. После вызова этого метода не удастся доставить образцы со старым типом мультимедиа. Вызывающий объект должен убедиться, что старые примеры не находятся в ожидании.

Синтаксис

HRESULT ChangeMediaType(
   const CMediaType *pmt
);

Параметры

Pmt

Указатель на структуру AM_MEDIA_TYPE , указывающую тип носителя.

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

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

Код возврата Описание
S_OK
Успешно.
E_FAIL
Ошибка. Возможно, фильтр-владение не вызывал CDynamicOutputPin::SetConfigInfo.
VFW_E_NOT_CONNECTED
Контакт не подключен.

Комментарии

Вызовите метод CDynamicOutputPin::StartUsingOutputPin перед вызовом этого метода.

Этот метод сначала проверяет, может ли подчиненный входной контакт принять новый формат без повторного подключения. Он запрашивает входной контакт для интерфейса IPinConnection . Если входной контакт поддерживает IPinConnection, метод вызывает метод IPinConnection::D ynamicQueryAccept с предложенным типом носителя. Если входной контакт принимает новый тип носителя, метод вызывает метод IPin::ReceiveConnection и пересматривает требования распределителя.

С другой стороны, если подчиненный контакт не поддерживает IPinConnection или отклоняет новый тип носителя, метод вызывает метод CDynamicOutputPin::D ynamicReconnect для выполнения динамического повторного подключения.

Требования

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

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

Класс CDynamicOutputPin