MF_TOPOLOGY_ENUMERATE_SOURCE_TYPES 属性
指定拓扑加载器是否枚举媒体源提供的媒体类型。
数据类型
UINT32
使用以下值之一。
值 | 含义 |
---|---|
|
不枚举源媒体类型。 |
|
枚举源媒体类型。 |
Get/set
若要获取此属性,请调用 IMFAttributes::GetUINT32。
若要设置此属性,请调用 IMFAttributes::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 标志。
- 拓扑加载器尝试与 T1 建立直接连接。 接收器拒绝 T1。
- 拓扑加载器插入接受 T1 并输出 T4 的解码器。 接收器接受 T4。
- 最终拓扑包含:媒体源 → 解码器 → 媒体接收器。
案例 2:未设置该标志。
- 拓扑加载器尝试与 T1 建立直接连接。 接收器拒绝 T1。
- 拓扑加载器尝试与 T2 建立直接连接。 接收器拒绝 T2。
- 拓扑加载器尝试与 T3 建立直接连接。 接收器接受 T3。
- 最终拓扑包含:媒体源 → 媒体接收器。
要求
要求 | 值 |
---|---|
最低受支持的客户端 |
Windows 7 [仅限桌面应用] |
最低受支持的服务器 |
Windows Server 2008 R2 [仅限桌面应用] |
标头 |
|
另请参阅