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