Метод IMFTransform::GetInputAvailableType (mftransform.h)

Возвращает доступный тип мультимедиа для входного потока в этом преобразовании Media Foundation (MFT).

Синтаксис

HRESULT GetInputAvailableType(
  [in]  DWORD        dwInputStreamID,
  [in]  DWORD        dwTypeIndex,
  [out] IMFMediaType **ppType
);

Параметры

[in] dwInputStreamID

Идентификатор входного потока. Чтобы получить список идентификаторов потоков, вызовите IMFTransform::GetStreamIDs.

[in] dwTypeIndex

Индекс извлекаемого типа мультимедиа. Типы мультимедиа индексируются с нуля и возвращаются в приблизительном порядке предпочтения.

[out] ppType

Получает указатель на интерфейс IMFMediaType .

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

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

Код возврата Описание
S_OK
Метод выполнен успешно.
E_NOTIMPL
В MFT нет списка доступных типов входных данных.
MF_E_INVALIDSTREAMNUMBER
Недопустимый идентификатор потока.
MF_E_NO_MORE_TYPES
Параметр dwTypeIndex выходит за пределы диапазона.
MF_E_TRANSFORM_TYPE_NOT_SET
Перед настройкой типов входных данных необходимо задать типы выходных данных.

Комментарии

MFT определяет список доступных типов мультимедиа для каждого входного потока и упорядочивает их по предпочтениям. Этот метод перечисляет доступные типы мультимедиа для входного потока. Чтобы перечислить доступные типы, следует увеличивать dwTypeIndex , пока метод не вернет MF_E_NO_MORE_TYPES.

Установка типа мультимедиа в одном потоке может изменить доступные типы для другого потока или изменить порядок предпочтений. Однако MFT не требуется для динамического обновления списка доступных типов. Единственным гарантированным способом проверить, можно ли задать определенный тип входных данных, является вызов IMFTransform::SetInputType.

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

MFT не требуется для реализации этого метода. Однако большинство MFT должны реализовывать этот метод, если только поддерживаемые типы не являются простыми и их можно обнаружить с помощью функции MFTGetInfo .

Если MFT_UNIQUE_METHOD_NAMES определен до включения mftransform.h, этот метод переименован в MFTGetInputAvailableType. См. раздел Создание гибридных объектов DMO/MFT.

Для кодировщиков после задания типа вывода GetInputAvailableType должен возвращать список типов входных данных, совместимых с текущим типом вывода. Это означает, что все типы, возвращаемые GetInputAvailableType после задания выходного типа, должны быть допустимыми типами для SetInputType.

Кодировщики должны отклонять типы входных данных, если атрибуты входного и выходного типов носителей не совпадают, например параметр разрешения с MF_MT_FRAME_SIZE, параметр номинального диапазона с MF_MT_VIDEO_NOMINAL_RANGE или параметр частоты кадров с MF_MT_FRAME_SIZE

Примечания о реализации

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

Требования

Требование Значение
Минимальная версия клиента Windows Vista [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2008 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header mftransform.h
Библиотека Mfuuid.lib

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

IMFTransform

Преобразования Media Foundation