[PATCH 0/2] MR10535: mfreadwrite: Rescale video frames based on aspect ratio when processing is enabled.
From: Yuxuan Shui <yshui@codeweavers.com> src_reader_SetCurrentMediaType indirectly calls update_media_type on `type` which changes its attributes. This is unexpected. --- dlls/mfreadwrite/reader.c | 20 ++++++++++++++------ dlls/mfreadwrite/tests/mfplat.c | 8 ++++++++ 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/dlls/mfreadwrite/reader.c b/dlls/mfreadwrite/reader.c index 68b90357928..718c8817198 100644 --- a/dlls/mfreadwrite/reader.c +++ b/dlls/mfreadwrite/reader.c @@ -2171,25 +2171,33 @@ static HRESULT source_reader_create_transform(struct source_reader *reader, BOOL && SUCCEEDED(hr = IMFTransform_GetInputCurrentType(transform, 0, &media_type))) { BOOL enable_advanced; + IMFMediaType *output_type_copy = NULL; + + hr = MFCreateMediaType(&output_type_copy); + if (SUCCEEDED(hr)) + hr = IMFMediaType_CopyAllItems(output_type, (IMFAttributes *)output_type_copy); source_reader_allow_video_processor(reader, &enable_advanced); - if ((SUCCEEDED(hr = update_media_type(output_type, media_type, enable_advanced))) - && FAILED(hr = IMFTransform_SetOutputType(transform, 0, output_type, 0)) - && FAILED(hr = set_matching_transform_output_type(transform, output_type)) && allow_processor + if (SUCCEEDED(hr) && (SUCCEEDED(hr = update_media_type(output_type_copy, media_type, enable_advanced))) + && FAILED(hr = IMFTransform_SetOutputType(transform, 0, output_type_copy, 0)) + && FAILED(hr = set_matching_transform_output_type(transform, output_type_copy)) && allow_processor && SUCCEEDED(hr = IMFTransform_GetOutputAvailableType(transform, 0, 0, &media_type))) { struct transform_entry *converter; if (SUCCEEDED(hr = IMFTransform_SetOutputType(transform, 0, media_type, 0)) - && SUCCEEDED(hr = update_media_type(output_type, media_type, enable_advanced)) - && (enable_advanced || SUCCEEDED(hr = set_default_video_attributes(reader, output_type))) - && SUCCEEDED(hr = source_reader_create_transform(reader, FALSE, FALSE, media_type, output_type, &converter))) + && SUCCEEDED(hr = update_media_type(output_type_copy, media_type, enable_advanced)) + && (enable_advanced || SUCCEEDED(hr = set_default_video_attributes(reader, output_type_copy))) + && SUCCEEDED(hr = source_reader_create_transform(reader, FALSE, FALSE, media_type, output_type_copy, &converter))) list_add_tail(&entry->entry, &converter->entry); IMFMediaType_Release(media_type); } + if(output_type_copy) + IMFMediaType_Release(output_type_copy); + if (SUCCEEDED(hr)) { entry->transform = transform; diff --git a/dlls/mfreadwrite/tests/mfplat.c b/dlls/mfreadwrite/tests/mfplat.c index 95e940e2449..604f5e521e7 100644 --- a/dlls/mfreadwrite/tests/mfplat.c +++ b/dlls/mfreadwrite/tests/mfplat.c @@ -2172,6 +2172,8 @@ static void test_source_reader_transforms(BOOL enable_processing, BOOL enable_ad IMFTransform *transform; IMFMediaSource *source; GUID category; + UINT32 count; + UINT64 value; HRESULT hr; winetest_push_context("vp %u adv %u", enable_processing, enable_advanced); @@ -2255,6 +2257,12 @@ static void test_source_reader_transforms(BOOL enable_processing, BOOL enable_ad todo_wine_if(enable_processing) /* Wine enables advanced video processing in all cases */ ok(hr == MF_E_TOPO_CODEC_NOT_FOUND, "Unexpected hr %#lx.\n", hr); } + /* SetCurrentMediaType shouldn't modify media_type */ + hr = IMFMediaType_GetUINT64(media_type, &MF_MT_FRAME_SIZE, &value); + ok(hr == MF_E_ATTRIBUTENOTFOUND, "Unexpected hr %#lx.\n", hr); + hr = IMFMediaType_GetCount(media_type, &count); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(count == 2, "Unexpected attribute count: %u\n", count); IMFMediaType_Release(media_type); hr = IMFSourceReader_GetCurrentMediaType(reader, 0, &media_type); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10535
From: Yuxuan Shui <yshui@codeweavers.com> --- dlls/mfreadwrite/reader.c | 34 ++++- dlls/mfreadwrite/tests/mfplat.c | 229 ++++++++++++++++++++++++++++ dlls/mfreadwrite/tests/resource.rc | 4 + dlls/mfreadwrite/tests/sar_test.mp4 | Bin 0 -> 32655 bytes dlls/winegstreamer/wg_transform.c | 2 +- 5 files changed, 266 insertions(+), 3 deletions(-) create mode 100644 dlls/mfreadwrite/tests/sar_test.mp4 diff --git a/dlls/mfreadwrite/reader.c b/dlls/mfreadwrite/reader.c index 718c8817198..e58620acbeb 100644 --- a/dlls/mfreadwrite/reader.c +++ b/dlls/mfreadwrite/reader.c @@ -714,19 +714,49 @@ static void media_type_try_copy_attr(IMFMediaType *dst, IMFMediaType *src, const PropVariantClear(&value); } +static HRESULT media_type_get_uint32_pair(IMFMediaType *type, const GUID *key, UINT32 *hi, UINT32 *lo) +{ + UINT64 data; + HRESULT hr = IMFMediaType_GetUINT64(type, key, &data); + if (FAILED(hr)) return hr; + + *hi = data >> 32; + *lo = data & 0xffffffff; + return hr; +} /* Update a media type with additional attributes reported by another media type, */ /* also present as update_media_type_from_upstream in mf/topology_loader.c pipeline. */ HRESULT update_media_type(IMFMediaType *dst_type, IMFMediaType *src_type, BOOL advanced) { HRESULT hr = S_OK; + UINT64 dst_frame_size; + UINT32 par_w, par_h, w, h; + + if (advanced && SUCCEEDED(media_type_get_uint32_pair(src_type, &MF_MT_FRAME_SIZE, &w, &h)) && + FAILED(IMFMediaType_GetUINT64(dst_type, &MF_MT_FRAME_SIZE, &dst_frame_size)) && + SUCCEEDED(media_type_get_uint32_pair(src_type, &MF_MT_PIXEL_ASPECT_RATIO, &par_w, &par_h))) + { + /* Video processor should rectify the aspect ratio so the output has aspect ratio of 1:1. + * We are doing this here by explicitly changing the target frame size. + * + * Alternatively it's possible to pass along a aspect ratio of 1:1 and let winegstreamer + * handle it, but unfortunately gstreamer has a way of calcuating desired frame sizes that's + * different from Windows native. */ + + UINT64 new_h = h * par_h / par_w; + IMFMediaType_SetUINT64(dst_type, &MF_MT_FRAME_SIZE, ((UINT64)w << 32) + new_h); + } + else + { + media_type_try_copy_attr(dst_type, src_type, &MF_MT_FRAME_SIZE, &hr); + media_type_try_copy_attr(dst_type, src_type, &MF_MT_PIXEL_ASPECT_RATIO, &hr); + } /* propagate common video attributes */ - media_type_try_copy_attr(dst_type, src_type, &MF_MT_FRAME_SIZE, &hr); media_type_try_copy_attr(dst_type, src_type, &MF_MT_FRAME_RATE, &hr); media_type_try_copy_attr(dst_type, src_type, &MF_MT_VIDEO_ROTATION, &hr); media_type_try_copy_attr(dst_type, src_type, &MF_MT_FIXED_SIZE_SAMPLES, &hr); - media_type_try_copy_attr(dst_type, src_type, &MF_MT_PIXEL_ASPECT_RATIO, &hr); media_type_try_copy_attr(dst_type, src_type, &MF_MT_ALL_SAMPLES_INDEPENDENT, &hr); media_type_try_copy_attr(dst_type, src_type, &MF_MT_MINIMUM_DISPLAY_APERTURE, &hr); diff --git a/dlls/mfreadwrite/tests/mfplat.c b/dlls/mfreadwrite/tests/mfplat.c index 604f5e521e7..77a3fcc2562 100644 --- a/dlls/mfreadwrite/tests/mfplat.c +++ b/dlls/mfreadwrite/tests/mfplat.c @@ -1154,6 +1154,234 @@ static void test_source_reader(const char *filename, bool video) winetest_pop_context(); } + +static void test_source_reader_aspect_ratio(void) +{ + IMFSourceResolver *source_resolver; + IMFByteStream *byte_stream = NULL; + IMFAttributes *attributes; + IMFSourceReader *reader; + MF_OBJECT_TYPE obj_type; + IMFMediaType *media_type, *output_media_type; + IMFMediaSource *media_source; + IMFTransform *transform; + HRESULT hr; + LONGLONG timestamp; + IMFSample *sample; + DWORD actualindex, sample_flags; + PROPVARIANT position = { .vt = VT_I8 }; + UINT64 tmp = 0; + + if (!pMFCreateMFByteStreamOnStream) + { + win_skip("MFCreateMFByteStreamOnStream() not found\n"); + return; + } + + winetest_push_context("sar_test.mp4"); + + byte_stream = get_resource_stream("sar_test.mp4"); + + hr = MFCreateMediaType(&output_media_type); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + hr = IMFMediaType_SetGUID(output_media_type, &MF_MT_MAJOR_TYPE, &MFMediaType_Video); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + hr = IMFMediaType_SetGUID(output_media_type, &MF_MT_SUBTYPE, &MFVideoFormat_ARGB32); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + hr = IMFMediaType_SetUINT32(output_media_type, &MF_MT_VIDEO_ROTATION, 0); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + + MFCreateAttributes(&attributes, 1); + hr = MFCreateSourceResolver(&source_resolver); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + + hr = IMFSourceResolver_CreateObjectFromByteStream(source_resolver, byte_stream, L"test.mp4", + MF_RESOLUTION_MEDIASOURCE, NULL, &obj_type, (IUnknown **)&media_source); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + + hr = IMFAttributes_SetUINT32(attributes, &MF_SOURCE_READER_ENABLE_ADVANCED_VIDEO_PROCESSING, TRUE); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + + hr = MFCreateSourceReaderFromMediaSource(media_source, attributes, &reader); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + + hr = IMFSourceReader_GetServiceForStream(reader, MF_SOURCE_READER_FIRST_VIDEO_STREAM, &GUID_NULL, &IID_IMFTransform, (void **)&transform); + ok(hr == E_NOINTERFACE, "Unexpected hr %#lx\n", hr); + + hr = IMFSourceReader_GetNativeMediaType(reader, 0, 0, &media_type); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + tmp = 0xdeadbeef; + hr = IMFMediaType_GetUINT64(media_type, &MF_MT_FRAME_SIZE, &tmp); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + ok(tmp == 0x8000000060, "Unexpected frame size: %I64x\n", tmp); + tmp = 0xdeadbeef; + hr = IMFMediaType_GetUINT64(media_type, &MF_MT_PIXEL_ASPECT_RATIO, &tmp); + todo_wine ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + todo_wine ok(tmp == 0x300000004, "Unexpected aspect ratio: %I64x\n", tmp); + IMFMediaType_Release(media_type); + + /* Ask for pixel format conversion. This causes a video processor to be added, which will also + * resize the video according to the source pixel aspect ratio. */ + hr = IMFSourceReader_SetStreamSelection(reader, 0, 0); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + hr = IMFSourceReader_SetCurrentMediaType(reader, 0, NULL, output_media_type); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + hr = IMFSourceReader_SetStreamSelection(reader, 0, 1); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + + hr = IMFSourceReader_GetCurrentMediaType(reader, 0, &media_type); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + tmp = 0xdeadbeef; + hr = IMFMediaType_GetUINT64(media_type, &MF_MT_FRAME_SIZE, &tmp); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + todo_wine ok(tmp == 0x8000000080, "Unexpected frame size: %I64x\n", tmp); + tmp = 0xdeadbeef; + hr = IMFMediaType_GetUINT64(media_type, &MF_MT_PIXEL_ASPECT_RATIO, &tmp); + /* Native doesn't return an aspect ratio in current output type, unless it was explicitly set. */ + ok(hr == MF_E_ATTRIBUTENOTFOUND, "Unexpected hr %#lx\n", hr); + IMFMediaType_Release(media_type); + + hr = IMFSourceReader_ReadSample(reader, 0, 0, &actualindex, &sample_flags, ×tamp, &sample); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + todo_wine ok(sample_flags & MF_SOURCE_READERF_CURRENTMEDIATYPECHANGED, + "Unexpected sample flags: %#lx\n", sample_flags); + IMFSample_Release(sample); + + hr = IMFSourceReader_GetCurrentMediaType(reader, 0, &media_type); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + tmp = 0xdeadbeef; + hr = IMFMediaType_GetUINT64(media_type, &MF_MT_FRAME_SIZE, &tmp); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + todo_wine ok(tmp == 0x8000000080, "Unexpected frame size: %I64x\n", tmp); + hr = IMFMediaType_GetUINT64(media_type, &MF_MT_PIXEL_ASPECT_RATIO, &tmp); + ok(hr == MF_E_ATTRIBUTENOTFOUND, "Unexpected hr %#lx\n", hr); + IMFMediaType_Release(media_type); + + /* What if we explicitly set a pixel aspect ratio in the output type? */ + hr = IMFSourceReader_SetCurrentPosition(reader, &GUID_NULL, &position); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + hr = IMFSourceReader_SetStreamSelection(reader, 0, 0); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + hr = IMFMediaType_SetUINT64(output_media_type, &MF_MT_PIXEL_ASPECT_RATIO, 0x300000002); /* 3:2 */ + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + hr = IMFSourceReader_SetCurrentMediaType(reader, 0, NULL, output_media_type); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + hr = IMFMediaType_DeleteItem(output_media_type, &MF_MT_PIXEL_ASPECT_RATIO); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + hr = IMFSourceReader_SetStreamSelection(reader, 0, 1); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + + hr = IMFSourceReader_GetCurrentMediaType(reader, 0, &media_type); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + /* Specified aspect ratio has no effect on the output frame size, but the output media type + * does take on the aspect ratio. */ + tmp = 0xdeadbeef; + hr = IMFMediaType_GetUINT64(media_type, &MF_MT_FRAME_SIZE, &tmp); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + todo_wine ok(tmp == 0x8000000080, "Unexpected frame size: %I64x\n", tmp); + tmp = 0xdeadbeef; + hr = IMFMediaType_GetUINT64(media_type, &MF_MT_PIXEL_ASPECT_RATIO, &tmp); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + ok(tmp == 0x300000002, "Unexpected aspect ratio: %I64x\n", tmp); + IMFMediaType_Release(media_type); + + /* What if we explicitly set a frame size? */ + hr = IMFSourceReader_SetCurrentPosition(reader, &GUID_NULL, &position); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + hr = IMFSourceReader_SetStreamSelection(reader, 0, 0); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + hr = IMFMediaType_SetUINT64(output_media_type, &MF_MT_FRAME_SIZE, 0x4000000040); /* 64x64 */ + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + hr = IMFSourceReader_SetCurrentMediaType(reader, 0, NULL, output_media_type); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + hr = IMFSourceReader_SetStreamSelection(reader, 0, 1); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + + hr = IMFSourceReader_GetCurrentMediaType(reader, 0, &media_type); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + tmp = 0xdeadbeef; + hr = IMFMediaType_GetUINT64(media_type, &MF_MT_FRAME_SIZE, &tmp); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + /* Frame size has precedence */ + ok(tmp == 0x4000000040, "Unexpected frame size: %I64x\n", tmp); + hr = IMFMediaType_GetUINT64(media_type, &MF_MT_PIXEL_ASPECT_RATIO, &tmp); + ok(hr == MF_E_ATTRIBUTENOTFOUND, "Unexpected hr %#lx\n", hr); + IMFMediaType_Release(media_type); + + /* What if we explicitly set both? */ + hr = IMFSourceReader_SetCurrentPosition(reader, &GUID_NULL, &position); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + hr = IMFSourceReader_SetStreamSelection(reader, 0, 0); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + hr = IMFMediaType_SetUINT64(output_media_type, &MF_MT_PIXEL_ASPECT_RATIO, 0x300000002); /* 3:2 */ + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + hr = IMFSourceReader_SetCurrentMediaType(reader, 0, NULL, output_media_type); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + hr = IMFSourceReader_SetCurrentMediaType(reader, 0, NULL, output_media_type); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + hr = IMFSourceReader_SetStreamSelection(reader, 0, 1); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + + hr = IMFSourceReader_GetCurrentMediaType(reader, 0, &media_type); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + tmp = 0xdeadbeef; + hr = IMFMediaType_GetUINT64(media_type, &MF_MT_FRAME_SIZE, &tmp); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + ok(tmp == 0x4000000040, "Unexpected frame size: %I64x\n", tmp); + tmp = 0xdeadbeef; + hr = IMFMediaType_GetUINT64(media_type, &MF_MT_PIXEL_ASPECT_RATIO, &tmp); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + ok(tmp == 0x300000002, "Unexpected aspect ratio: %I64x\n", tmp); + IMFMediaType_Release(media_type); + + IMFSourceReader_Release(reader); + IMFMediaSource_Release(media_source); + + hr = IMFMediaType_DeleteItem(output_media_type, &MF_MT_PIXEL_ASPECT_RATIO); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + hr = IMFMediaType_DeleteItem(output_media_type, &MF_MT_FRAME_SIZE); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + + /* Without advanced video processing. */ + hr = IMFSourceResolver_CreateObjectFromByteStream(source_resolver, byte_stream, L"test.mp4", + MF_RESOLUTION_MEDIASOURCE, NULL, &obj_type, (IUnknown **)&media_source); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + + hr = IMFAttributes_SetUINT32(attributes, &MF_SOURCE_READER_ENABLE_ADVANCED_VIDEO_PROCESSING, FALSE); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + hr = IMFAttributes_SetUINT32(attributes, &MF_SOURCE_READER_ENABLE_VIDEO_PROCESSING, TRUE); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + + hr = MFCreateSourceReaderFromMediaSource(media_source, attributes, &reader); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + + hr = IMFSourceReader_SetStreamSelection(reader, 0, 0); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + hr = IMFMediaType_SetGUID(output_media_type, &MF_MT_SUBTYPE, &MFVideoFormat_NV12); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + hr = IMFSourceReader_SetCurrentMediaType(reader, 0, NULL, output_media_type); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + hr = IMFSourceReader_SetStreamSelection(reader, 0, 1); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + + hr = IMFSourceReader_GetCurrentMediaType(reader, 0, &media_type); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + tmp = 0xdeadbeef; + hr = IMFMediaType_GetUINT64(media_type, &MF_MT_FRAME_SIZE, &tmp); + ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + ok(tmp == 0x8000000060, "Unexpected frame size: %I64x\n", tmp); + tmp = 0xdeadbeef; + hr = IMFMediaType_GetUINT64(media_type, &MF_MT_PIXEL_ASPECT_RATIO, &tmp); + todo_wine ok(hr == S_OK, "Unexpected hr %#lx\n", hr); + todo_wine ok(tmp == 0x300000004, "Unexpected aspect ratio: %I64x\n", tmp); + IMFMediaType_Release(media_type); + + IMFMediaType_Release(output_media_type); + IMFSourceResolver_Release(source_resolver); + IMFAttributes_Release(attributes); + IMFSourceReader_Release(reader); +} + static void test_source_reader_from_media_source(void) { static const DWORD expected_sample_order[10] = {0, 0, 1, 1, 0, 0, 0, 0, 1, 0}; @@ -3922,6 +4150,7 @@ START_TEST(mfplat) test_sink_writer_get_object(); test_sink_writer_add_stream(); test_sink_writer_sample_process(); + test_source_reader_aspect_ratio(); hr = MFShutdown(); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); diff --git a/dlls/mfreadwrite/tests/resource.rc b/dlls/mfreadwrite/tests/resource.rc index 5a737b1ad85..f62bfd80b7f 100644 --- a/dlls/mfreadwrite/tests/resource.rc +++ b/dlls/mfreadwrite/tests/resource.rc @@ -25,3 +25,7 @@ test.wav RCDATA test.wav /* ffmpeg -f lavfi -i smptebars -f lavfi -i "sine=frequency=1000" -t 1.0 -r 25 -f mp4 -vcodec h264 -vf scale=160x120 -acodec aac test.mp4 */ /* @makedep: test.mp4 */ test.mp4 RCDATA test.mp4 + +/* ffmpeg -filter_complex "nullsrc=s=128x96,geq=random(1)*255:128:128[vout]" -map "[vout]" -t 0.25 -r 25 -vcodec h264 -aspect 1 -brand mp42 -an sar_test.mp4 */ +/* @makedep: sar_test.mp4 */ +sar_test.mp4 RCDATA sar_test.mp4 diff --git a/dlls/mfreadwrite/tests/sar_test.mp4 b/dlls/mfreadwrite/tests/sar_test.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..9cd8c46871cc2c52c9ca37a4ac25b1cf5dc4a806 GIT binary patch literal 32655 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 literal 0 HcmV?d00001 diff --git a/dlls/winegstreamer/wg_transform.c b/dlls/winegstreamer/wg_transform.c index 1537a88d614..6031d85f998 100644 --- a/dlls/winegstreamer/wg_transform.c +++ b/dlls/winegstreamer/wg_transform.c @@ -655,7 +655,7 @@ static bool transform_create_converter_elements(struct wg_transform *transform, if (g_str_has_prefix(output_mime, "video/")) { - if (!(element = create_element("videoconvert", "base")) + if (!(element = create_element("videoconvertscale", "base")) || !append_element(transform->container, element, first, last)) return false; /* Let GStreamer choose a default number of threads. */ -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10535
Tests are still `todo_wine` because this only fixes the problem for winedmo. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/10535#note_134661
participants (2)
-
Yuxuan Shui -
Yuxuan Shui (@yshui)