0

语境

我写了一个使用 DXVA 的 MFT。它要求输入样本有一个IDirect3DSurface9表面。

我在 3 个节点的拓扑中使用此 MFT:

  • 包装从捕获设备激活器创建的媒体源的源节点,
  • 一个包含我的 MFT 实例的转换节点,
  • 包含 EVR 的输出节点。

我在拓扑上设置MF_TOPOLOGY_DXVA_MODE属性 toMFTOPOLOGY_DXVA_FULLMF_TOPOLOGY_HARDWARE_MODEto MFTOPOLOGY_HWMODE_USE_HARDWARE,当我启动媒体会话时,我从 MFT 内部收到一个 D3DDeviceManager。

问题

当输入样本从拓扑内部到达 MFT 时,它们没有附加 D3D 表面(MFGetService失败MR_BUFFER_SERVICE)。

如果我根本不使用拓扑,并从具有有效 的相同媒体源创建 Source Reader MF_SOURCE_READER_D3D_MANAGER,则 Source Reader 提供的示例具有 D3D 表面。

问题

是否可以使拓扑中的源节点/捕获媒体源产生具有 D3D 表面的样本?

4

0 回答 0