问题
我正在编写一个带有两个输入和一个输出的自定义MFT(它将两个视频流合并为一个)。
我的MFT要求在输入之前设置媒体类型,它可以提供输出类型。
我通过连接两个源节点(它们从聚合媒体源获取不同的流)到我的变换节点,然后将EVR连接到我的单个输出来设置我的拓扑。
当我启动媒体会话时,我看到拓扑在第一个输入上调用SetInputType
,并且它成功。
但是它会立即尝试获取输出类型:首先在我的MFT上调用GetOutputCurrentType
,然后返回MF_E_TRANSFORM_TYPE_NOT_SET
,因为它无法提供一个,然后通过调用GetOutputAvailableType
,我根据文档返回MF_E_TRANSFORM_TYPE_NOT_SET
(说你必须在设置输出类型之前设置输入类型;我也尝试输出一些部分媒体类型,但它是相同的)。
这就是问题:在那之后,拓扑结构似乎放弃了我的MFT:它从不在第二个输入上调用SetInputType
。
问题
如何在处理输出之前强制拓扑设置所有输入类型?