From: Rémi Bernon <rbernon(a)codeweavers.com> --- dlls/mf/session.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/dlls/mf/session.c b/dlls/mf/session.c index e6e3792db7e..586be71a95c 100644 --- a/dlls/mf/session.c +++ b/dlls/mf/session.c @@ -3251,10 +3251,12 @@ static void session_deliver_sample_to_node(struct media_session *session, IMFTop struct transform_stream *input_stream = &topo_node->u.transform.inputs[input]; transform_stream_push_sample(input_stream, sample, FALSE); - transform_node_pull_samples(session, topo_node); - hr = transform_node_push_samples(session, topo_node); - - transform_node_pull_samples(session, topo_node); + do + { + hr = transform_node_pull_samples(session, topo_node); + if (hr == MF_E_TRANSFORM_NEED_MORE_INPUT) + hr = transform_node_push_samples(session, topo_node); + } while (SUCCEEDED(hr)); /* Remaining unprocessed input has been discarded, now queue markers for every output. */ if (hr == MF_E_END_OF_STREAM) -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/3004