From: Yuxuan Shui yshui@codeweavers.com
--- dlls/mf/tests/transform.c | 3 +-- dlls/winegstreamer/video_decoder.c | 2 ++ dlls/winegstreamer/wma_decoder.c | 3 +++ 3 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/dlls/mf/tests/transform.c b/dlls/mf/tests/transform.c index 1ee5a8bc4ac..e5c65ace228 100644 --- a/dlls/mf/tests/transform.c +++ b/dlls/mf/tests/transform.c @@ -8328,7 +8328,6 @@ static void test_wmv_decoder_media_object(void) output_data_buffer.rtTimestamp = 0xdeadbeef; output_data_buffer.rtTimelength = 0xdeadbeef; hr = IMediaObject_ProcessOutput(media_object, 0, 1, &output_data_buffer, &status); - todo_wine ok(hr == S_FALSE, "ProcessOutput returned %#lx.\n", hr); ok(output_media_buffer->length == 0, "Unexpected length %#lx.\n", output_media_buffer->length);
@@ -8361,7 +8360,7 @@ static void test_wmv_decoder_media_object(void) output_data_buffer.rtTimestamp = 0xdeadbeef; output_data_buffer.rtTimelength = 0xdeadbeef; hr = IMediaObject_ProcessOutput(media_object, 0, 1, &output_data_buffer, &status); - todo_wine ok(hr == S_FALSE, "ProcessOutput returned %#lx.\n", hr); + ok(hr == S_FALSE, "ProcessOutput returned %#lx.\n", hr);
hr = IMediaObject_AllocateStreamingResources(media_object); ok(hr == S_OK, "Got hr %#lx.\n", hr); diff --git a/dlls/winegstreamer/video_decoder.c b/dlls/winegstreamer/video_decoder.c index becf148aeef..be540876aa0 100644 --- a/dlls/winegstreamer/video_decoder.c +++ b/dlls/winegstreamer/video_decoder.c @@ -1469,6 +1469,8 @@ static HRESULT WINAPI media_object_ProcessOutput(IMediaObject *iface, DWORD flag
if (SUCCEEDED(hr)) wg_sample_queue_flush(decoder->wg_sample_queue, false); + else if (hr == MF_E_TRANSFORM_NEED_MORE_INPUT) + hr = S_FALSE;
return hr; } diff --git a/dlls/winegstreamer/wma_decoder.c b/dlls/winegstreamer/wma_decoder.c index ca7a5f278bf..ddb77724db5 100644 --- a/dlls/winegstreamer/wma_decoder.c +++ b/dlls/winegstreamer/wma_decoder.c @@ -964,6 +964,9 @@ static HRESULT WINAPI media_object_ProcessOutput(IMediaObject *iface, DWORD flag buffers[0].dwStatus |= DMO_OUTPUT_DATA_BUFFERF_INCOMPLETE; wg_sample_queue_flush(decoder->wg_sample_queue, false); } + else if (hr == MF_E_TRANSFORM_NEED_MORE_INPUT) + hr = S_FALSE; +
return hr; }