Context
I wrote an MFT that uses DXVA. It requires that input samples have a IDirect3DSurface9 surface.
I use this MFT in a topology of 3 nodes:
- a source node that wraps a media source created from a capture device activator,
- a transform node that contains an instance of my MFT,
- an output node that contains an EVR.
I set the MF_TOPOLOGY_DXVA_MODE attribute to MFTOPOLOGY_DXVA_FULL and MF_TOPOLOGY_HARDWARE_MODE to MFTOPOLOGY_HWMODE_USE_HARDWARE on the topology, and when I start the media session I receive a D3DDeviceManager from inside my MFT.
The Problem
When input samples arrive on the MFT from inside the topology, they don't have a D3D surface attached to them (MFGetService with MR_BUFFER_SERVICE fails).
If I don't use a topology at all, and create a Source Reader from the same media source with a valid MF_SOURCE_READER_D3D_MANAGER, then the samples provided by the Source Reader have a D3D surface.
The Question
Is it possible to make the source node/capture media source in the topology produce samples with D3D surfaces ?