атрибут MF_TOPOLOGY_ENUMERATE_SOURCE_TYPES

Указывает, перечисляет ли загрузчик топологии типы носителей, предоставляемые источником мультимедиа.

Тип данных

UINT32

Используйте одно из следующих значений.

Значение Значение
FALSE
Не перечисляйте исходные типы носителей.
TRUE
Перечисление типов исходных носителей.

 

Get/set

Чтобы получить этот атрибут, вызовите МВФAttributes::GetUINT32.

Чтобы задать этот атрибут, вызовите МВФAttributes::SetUINT32.

Относится к

МВФТопология

Замечания

Каждый поток в источнике мультимедиа может предлагать несколько типов мультимедиа. Список типов перечисляется через интерфейс IMFMediaTypeHandler в дескрипторе потока.

Порядок, в котором загрузчик топологии пытается использовать типы носителей источника мультимедиа, управляются двумя атрибутами:

  • Атрибут MF_TOPOLOGY_ENUMERATE_SOURCE_TYPES топологии.
  • Атрибут MF_TOPONODE_CONNECT_METHOD на исходном узле.

Если атрибут MF_TOPOLOGY_ENUMERATE_SOURCE_TYPES имеет значение FALSE или не задан, загрузчик топологии использует текущий тип носителя потока. Он не перечисляет список возможных типов. Если текущий тип носителя несовместим с нисходящим узлом топологии и не найден сочетания декодеров и преобразователей, разрешение топологии завершается ошибкой.

Если атрибут MF_TOPOLOGY_ENUMERATE_SOURCE_TYPES имеет значение TRUE, загрузчик топологии перечисляет типы носителей источника, пока не будет найден совместимый тип. В этом случае точный порядок операций зависит от того, включает ли MF_TOPONODE_CONNECT_METHOD атрибут на исходном узле флаг MF_CONNECT_RESOLVE_INDEPENDENT_OUTPUTTYPES.

Если MF_TOPOLOGY_ENUMERATE_SOURCE_TYPES имеет значение TRUE , а флаг MF_CONNECT_RESOLVE_INDEPENDENT_OUTPUTTYPES задан, загрузчик топологии исчерпает каждый тип носителя перед переходом к следующему, как показано ниже.

foreach media type T
    connect directly using T
    if failed, connect with converters using T
    if failed, connect with decoders using T

Если MF_TOPOLOGY_ENUMERATE_SOURCE_TYPES имеет значение TRUE , но MF_CONNECT_RESOLVE_INDEPENDENT_OUTPUTTYPES не задано, загрузчик топологии пытается установить прямое соединение с каждым типом мультимедиа, а затем пытается использовать каждый тип мультимедиа с декодировщиками:

foreach media type T
    connect directly using T
if failed,
    foreach media type T
        connect with converters using T
if failed
    foreach media type T
        connect with decoders using T

Если MF_TOPOLOGY_ENUMERATE_SOURCE_TYPES имеет значение FALSE, флаг MF_CONNECT_RESOLVE_INDEPENDENT_OUTPUTTYPES игнорируется.

Значение по умолчанию MF_TOPOLOGY_ENUMERATE_SOURCE_TYPES равно FALSE для совместимости с существующими приложениями.

Константу GUID для этого атрибута экспортируется из mfuuid.lib.

Пример

Ниже приведен пример, демонстрирующий флаг MF_CONNECT_RESOLVE_INDEPENDENT_OUTPUTTYPES . Предположим, что топология имеет атрибут MF_TOPOLOGY_ENUMERATE_SOURCE_TYPES значение TRUE.

Источник мультимедиа предлагает следующие типы:

  • T1, T2, T3

Приемник мультимедиа принимает следующие типы:

  • T3, T4

Вариант 1. Установлен флаг MF_CONNECT_RESOLVE_INDEPENDENT_OUTPUTTYPES .

  1. Загрузчик топологии пытается установить прямое подключение к T1. Приемник отклоняет T1.
  2. Загрузчик топологии вставляет декодирования, который принимает T1 и выводит T4. Приемник принимает T4.
  3. Окончательная топология содержит: источник мультимедиа → декодатор → приемника мультимедиа.

Случай 2. Флаг не задан.

  1. Загрузчик топологии пытается установить прямое подключение к T1. Приемник отклоняет T1.
  2. Загрузчик топологии пытается установить прямое подключение к T2. Приемник отклоняет T2.
  3. Загрузчик топологии пытается подключиться к T3 напрямую. Приемник принимает T3.
  4. Последняя топология содержит: источник мультимедиа → приемник мультимедиа.

Requirements

Требование Значение
Минимальная версия клиента
Windows 7 [только классические приложения]
Минимальная версия сервера
Windows Server 2008 R2 [только классические приложения]
Верхний колонтитул
Mfidl.h

См. также

Алфавитный список атрибутов Media Foundation

Атрибуты топологии