语境
我写了一个使用 DXVA 的 MFT。它要求输入样本有一个IDirect3DSurface9
表面。
我在 3 个节点的拓扑中使用此 MFT:
- 包装从捕获设备激活器创建的媒体源的源节点,
- 一个包含我的 MFT 实例的转换节点,
- 包含 EVR 的输出节点。
我在拓扑上设置MF_TOPOLOGY_DXVA_MODE
属性 toMFTOPOLOGY_DXVA_FULL
和MF_TOPOLOGY_HARDWARE_MODE
to MFTOPOLOGY_HWMODE_USE_HARDWARE
,当我启动媒体会话时,我从 MFT 内部收到一个 D3DDeviceManager。
问题
当输入样本从拓扑内部到达 MFT 时,它们没有附加 D3D 表面(MFGetService
失败MR_BUFFER_SERVICE
)。
如果我根本不使用拓扑,并从具有有效 的相同媒体源创建 Source Reader MF_SOURCE_READER_D3D_MANAGER
,则 Source Reader 提供的示例具有 D3D 表面。
问题
是否可以使拓扑中的源节点/捕获媒体源产生具有 D3D 表面的样本?