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


Метод IAMStreamConfig::SetFormat (strmif.h)

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

Метод SetFormat задает формат выходных данных для закрепления.

Синтаксис

HRESULT SetFormat(
  [in] AM_MEDIA_TYPE *pmt
);

Параметры

[in] pmt

Указатель на структуру AM_MEDIA_TYPE , указывающую новый формат.

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

Возвращает значение HRESULT . Ниже приведены возможные значения.

Код возврата Описание
S_OK
Успешно.
E_OUTOFMEMORY
Недостаточно памяти.
E_POINTER
Значение указателя NULL .
VFW_E_INVALIDMEDIATYPE
Недопустимый тип носителя.
VFW_E_NOT_CONNECTED
Входной контакт не подключен.
VFW_E_NOT_STOPPED
Не удается задать тип; фильтр не остановлен.
VFW_E_WRONG_STATE
Не удается задать тип; фильтр не остановлен.

Комментарии

Этот метод задает формат выходного закрепления. Если контакт не подключен, он будет использовать этот формат для следующего подключения. Если закрепление уже подключено, будет предпринята попытка повторного подключения с использованием этого формата. Метод может завершиться ошибкой, если другой контакт отклоняет новый тип.

Если этот метод будет выполнен успешно, последующие вызовы метода IPin::EnumMediaTypes будут возвращать новый тип, а другие — нет.

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

С помощью некоторых фильтров можно вызвать этот метод со значением NULL , чтобы сбросить закрепление в формат по умолчанию.

Разработчики фильтров. В следующих примечаниях описывается, как реализовать этот метод:

Если выходной контакт не подключен и контакт поддерживает указанный тип носителя, верните S_OK. Сохраните тип носителя и предложите его в виде нулевого числа формата в методе CBasePin::GetMediaType . Не предлагайте другие форматы и отклоняйте другие форматы в методе CBasePin::CheckMediaType .

Если контакт уже подключен и контакт поддерживает тип носителя, повторно подключите контакт с этим типом. Если другой контакт отклоняет новый тип, верните VFW_E_INVALIDMEDIATYPE и восстановите исходное соединение.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header strmif.h (включая Dshow.h)
Библиотека Strmiids.lib

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

Коды ошибок и успешного выполнения

Интерфейс IAMStreamConfig