From: Brendan McGrath <bmcgrath@codeweavers.com> --- dlls/winegstreamer/wg_parser.c | 14 +++++++++----- dlls/wmvcore/tests/wmvcore.c | 2 -- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/dlls/winegstreamer/wg_parser.c b/dlls/winegstreamer/wg_parser.c index f1926e3f081..da414af6134 100644 --- a/dlls/winegstreamer/wg_parser.c +++ b/dlls/winegstreamer/wg_parser.c @@ -915,11 +915,9 @@ static bool stream_create_post_processing_elements(GstPad *pad, struct wg_parser if (!strcmp(name, "video/x-raw")) { - /* DirectShow can express interlaced video, but downstream filters can't - * necessarily consume it. In particular, the video renderer can't. */ - if (!(element = create_element("deinterlace", "good")) - || !append_element(parser->container, element, &first, &last)) - return false; + /* decodebin doesn't provide framerate for raw video. This causes the + * the deinterlace element to reject the caps. So we need to go through + * videoconvert first (as it fixates the framerate) */ /* decodebin considers many YUV formats to be "raw", but some quartz * filters can't handle those. Also, videoflip can't handle all "raw" @@ -928,6 +926,12 @@ static bool stream_create_post_processing_elements(GstPad *pad, struct wg_parser || !append_element(parser->container, element, &first, &last)) return false; + /* DirectShow can express interlaced video, but downstream filters can't + * necessarily consume it. In particular, the video renderer can't. */ + if (!(element = create_element("deinterlace", "good")) + || !append_element(parser->container, element, &first, &last)) + return false; + /* Let GStreamer choose a default number of threads. */ gst_util_set_object_arg(G_OBJECT(element), "n-threads", "0"); diff --git a/dlls/wmvcore/tests/wmvcore.c b/dlls/wmvcore/tests/wmvcore.c index b540604fa5c..bbc37c525f3 100644 --- a/dlls/wmvcore/tests/wmvcore.c +++ b/dlls/wmvcore/tests/wmvcore.c @@ -2069,11 +2069,9 @@ void test_sync_reader_rawvideo_file(void) ok(hr == S_OK, "Got hr %#lx.\n", hr); hr = IWMSyncReader_OpenStream(reader, stream); - todo_wine ok(hr == S_OK, "Got hr %#lx.\n", hr); hr = IWMSyncReader_Close(reader); - todo_wine ok(hr == S_OK, "Got hr %#lx.\n", hr); IStream_Release(stream); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10520