Nikolay Sivov (@nsivov) commented about dlls/mf/session.c:
+ + if ((stream->stream_ended = !sample)) + { + if (!transform_node_all_streams_ended(topo_node)) + return; + + if (FAILED(hr = IMFTransform_ProcessMessage(topo_node->object.transform, MFT_MESSAGE_COMMAND_DRAIN, 0))) + WARN("Drain command failed for transform, hr %#lx.\n", hr); + } + else + { + UINT id = transform_node_get_stream_id(topo_node, FALSE, input); + if (FAILED(hr = IMFTransform_ProcessInput(topo_node->object.transform, id, sample, 0)) + && FAILED(hr = transform_stream_push_sample(stream, sample))) + WARN("Failed to queue delayed input sample, hr %#lx\n", hr); + } That used to be more explicit, checking only for MF_E_NOT_ACCEPTING. Can we restore that? I'd expect that any other error simply stops all processing, puts session in error state, and sends MEError or something similar.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/3245#note_41076