Media Foundation: force a capture device to provide DirectX surfaces in a topology

353 views Asked by At

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 ?

0

There are 0 answers