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.