Nikolay Sivov (@nsivov) commented about dlls/mf/session.c:
{ if (!(flags & MFSESSION_SETTOPOLOGY_NORESOLUTION)) {
MFCreateTopology(&cloned_topology);
IMFTopology_CloneFrom(cloned_topology, topology);
topology = cloned_topology; hr = session_bind_output_nodes(topology);
As a test for this change I would expect a check that original topology was not modified. Is it a problem with bind_output_nodes() is called twice on the same topology? I suspect cloning is hiding something, and it's unclear what it is.