Nikolay Sivov (@nsivov) commented about dlls/mf/session.c:
}
if (session->state == SESSION_STATE_STARTED)
{
struct topo_node *node;
LIST_FOR_EACH_ENTRY(node, &session->presentation.nodes, struct topo_node, entry)
{
if (node->type == MF_TOPOLOGY_OUTPUT_NODE)
IMFStreamSink_Flush(node->object.sink_stream);
else if (node->type == MF_TOPOLOGY_TRANSFORM_NODE)
IMFTransform_ProcessMessage(node->object.transform, MFT_MESSAGE_COMMAND_FLUSH, 0);
}
session_set_source_output_nodes_seeking(session);
}
There is a similar block for SESSION_STATE_STOPPING_SOURCES. If we really need to flush on seek, this should go to some helper.