Nikolay Sivov (@nsivov) commented about dlls/mf/session.c:
struct topo_node *node; HRESULT hr;
- LIST_FOR_EACH_ENTRY(node, &session->presentation.nodes, struct topo_node, entry) + if (!seeking) { - if (node->type == MF_TOPOLOGY_TRANSFORM_NODE) - IMFTransform_ProcessMessage(node->object.transform, MFT_MESSAGE_NOTIFY_START_OF_STREAM, 0); + LIST_FOR_EACH_ENTRY(node, &session->presentation.nodes, struct topo_node, entry) + { + if (node->type == MF_TOPOLOGY_TRANSFORM_NODE) + IMFTransform_ProcessMessage(node->object.transform, MFT_MESSAGE_NOTIFY_START_OF_STREAM, 0); + } }
Maybe we should move this somewhere else then, instead of using more flags and conditions. For example does first Start() with non-zero position qualify as seeking, does it produce NOTIFY_START_OF_STREAM? -- https://gitlab.winehq.org/wine/wine/-/merge_requests/7932#note_109312