Merge branch 'bm_cw_23939' into 'master'

mf: Retry PROCESSINPUTNOTIFY if TRANSFORM_TYPE_NOT_SET is returned.

See merge request wine/wine!6059
This commit is contained in:
Brendan McGrath 2024-11-19 22:24:43 +00:00
commit ce2c418261
2 changed files with 7 additions and 1 deletions

View file

@ -416,7 +416,10 @@ static HRESULT WINAPI video_stream_sink_ProcessSample(IMFStreamSink *iface, IMFS
} }
if (SUCCEEDED(IMFTransform_ProcessInput(stream->parent->mixer, stream->id, sample, 0))) if (SUCCEEDED(IMFTransform_ProcessInput(stream->parent->mixer, stream->id, sample, 0)))
IMFVideoPresenter_ProcessMessage(stream->parent->presenter, MFVP_MESSAGE_PROCESSINPUTNOTIFY, 0); {
while (hr == S_OK && (hr = IMFVideoPresenter_ProcessMessage(stream->parent->presenter, MFVP_MESSAGE_PROCESSINPUTNOTIFY, 0)) == MF_E_TRANSFORM_TYPE_NOT_SET)
hr = IMFVideoPresenter_ProcessMessage(stream->parent->presenter, MFVP_MESSAGE_INVALIDATEMEDIATYPE, 0);
}
if (stream->flags & EVR_STREAM_PREROLLING) if (stream->flags & EVR_STREAM_PREROLLING)
{ {

View file

@ -3706,7 +3706,10 @@ static void session_deliver_sample_to_node(struct media_session *session, struct
if (sample) if (sample)
{ {
if (FAILED(hr = IMFStreamSink_ProcessSample(topo_node->object.sink_stream, sample))) if (FAILED(hr = IMFStreamSink_ProcessSample(topo_node->object.sink_stream, sample)))
{
WARN("Stream sink failed to process sample, hr %#lx.\n", hr); WARN("Stream sink failed to process sample, hr %#lx.\n", hr);
IMFMediaEventQueue_QueueEventParamVar(session->event_queue, MEError, &GUID_NULL, hr, NULL);
}
} }
else if (FAILED(hr = IMFStreamSink_PlaceMarker(topo_node->object.sink_stream, MFSTREAMSINK_MARKER_ENDOFSEGMENT, else if (FAILED(hr = IMFStreamSink_PlaceMarker(topo_node->object.sink_stream, MFSTREAMSINK_MARKER_ENDOFSEGMENT,
NULL, NULL))) NULL, NULL)))