-- v2: winegstreamer/video_encoder: Implement GetOutputCurrentType. winegstreamer/video_encoder: Implement SetOutputType.
From: Ziqing Hui zhui@codeweavers.com
--- dlls/winegstreamer/aac_decoder.c | 38 ++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+)
diff --git a/dlls/winegstreamer/aac_decoder.c b/dlls/winegstreamer/aac_decoder.c index 2cf605bc56c..d8e8246e1ca 100644 --- a/dlls/winegstreamer/aac_decoder.c +++ b/dlls/winegstreamer/aac_decoder.c @@ -324,6 +324,27 @@ static HRESULT WINAPI transform_SetInputType(IMFTransform *iface, DWORD id, IMFM if (id) return MF_E_INVALIDSTREAMNUMBER;
+ if (!type) + { + if (decoder->input_type) + { + IMFMediaType_Release(decoder->input_type); + decoder->input_type = NULL; + } + if (decoder->output_type) + { + IMFMediaType_Release(decoder->output_type); + decoder->output_type = NULL; + } + if (decoder->wg_transform) + { + wg_transform_destroy(decoder->wg_transform); + decoder->wg_transform = 0; + } + + return S_OK; + } + if (FAILED(hr = MFCreateWaveFormatExFromMFMediaType(type, (WAVEFORMATEX **)&format, &size, MFWaveFormatExConvertFlag_ForceExtensible))) return hr; @@ -364,6 +385,23 @@ static HRESULT WINAPI transform_SetOutputType(IMFTransform *iface, DWORD id, IMF
if (id) return MF_E_INVALIDSTREAMNUMBER; + + if (!type) + { + if (decoder->output_type) + { + IMFMediaType_Release(decoder->output_type); + decoder->input_type = NULL; + } + if (decoder->wg_transform) + { + wg_transform_destroy(decoder->wg_transform); + decoder->wg_transform = 0; + } + + return S_OK; + } + if (!decoder->input_type) return MF_E_TRANSFORM_TYPE_NOT_SET;
From: Ziqing Hui zhui@codeweavers.com
--- dlls/winegstreamer/color_convert.c | 32 ++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+)
diff --git a/dlls/winegstreamer/color_convert.c b/dlls/winegstreamer/color_convert.c index 4b60628e8ba..21d2aa67e64 100644 --- a/dlls/winegstreamer/color_convert.c +++ b/dlls/winegstreamer/color_convert.c @@ -360,6 +360,22 @@ static HRESULT WINAPI transform_SetInputType(IMFTransform *iface, DWORD id, IMFM
TRACE("iface %p, id %#lx, type %p, flags %#lx.\n", iface, id, type, flags);
+ if (!type) + { + if (impl->input_type) + { + IMFMediaType_Release(impl->input_type); + impl->input_type = NULL; + } + if (impl->wg_transform) + { + wg_transform_destroy(impl->wg_transform); + impl->wg_transform = 0; + } + + return S_OK; + } + if (FAILED(hr = IMFMediaType_GetGUID(type, &MF_MT_MAJOR_TYPE, &major)) || FAILED(hr = IMFMediaType_GetGUID(type, &MF_MT_SUBTYPE, &subtype))) return MF_E_ATTRIBUTENOTFOUND; @@ -422,6 +438,22 @@ static HRESULT WINAPI transform_SetOutputType(IMFTransform *iface, DWORD id, IMF
TRACE("iface %p, id %#lx, type %p, flags %#lx.\n", iface, id, type, flags);
+ if (!type) + { + if (impl->output_type) + { + IMFMediaType_Release(impl->output_type); + impl->output_type = NULL; + } + if (impl->wg_transform) + { + wg_transform_destroy(impl->wg_transform); + impl->wg_transform = 0; + } + + return S_OK; + } + if (FAILED(hr = IMFMediaType_GetGUID(type, &MF_MT_MAJOR_TYPE, &major)) || FAILED(hr = IMFMediaType_GetGUID(type, &MF_MT_SUBTYPE, &subtype))) return MF_E_ATTRIBUTENOTFOUND;
From: Ziqing Hui zhui@codeweavers.com
--- dlls/mf/tests/mf_test.h | 1 + dlls/mf/tests/transform.c | 82 +++++++++++++++++++++++++++------------ 2 files changed, 58 insertions(+), 25 deletions(-)
diff --git a/dlls/mf/tests/mf_test.h b/dlls/mf/tests/mf_test.h index b3247ba00cc..9fa5d4fef41 100644 --- a/dlls/mf/tests/mf_test.h +++ b/dlls/mf/tests/mf_test.h @@ -58,6 +58,7 @@ struct attribute_desc PROPVARIANT value; BOOL ratio; BOOL required; + BOOL required_set; BOOL todo; BOOL todo_value; }; diff --git a/dlls/mf/tests/transform.c b/dlls/mf/tests/transform.c index 262e3bc4726..deec2c7dd92 100644 --- a/dlls/mf/tests/transform.c +++ b/dlls/mf/tests/transform.c @@ -63,6 +63,8 @@ DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_IV50,MAKEFOURCC('I','V','5','0'));
DEFINE_GUID(mft_output_sample_incomplete,0xffffff,0xffff,0xffff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff);
+static const GUID test_attr_guid = {0xdeadbeef}; + struct media_buffer { IMediaBuffer IMediaBuffer_iface; @@ -678,13 +680,25 @@ static void check_mft_set_input_type_required_(int line, IMFTransform *transform for (attr = attributes; attr && attr->key; attr++) { winetest_push_context("%s", debugstr_a(attr->name)); + hr = IMFMediaType_DeleteItem(media_type, attr->key); ok_(__FILE__, line)(hr == S_OK, "DeleteItem returned %#lx\n", hr); + hr = IMFTransform_SetInputType(transform, 0, media_type, MFT_SET_TYPE_TEST_ONLY); todo_wine_if(attr->todo) ok_(__FILE__, line)(FAILED(hr) == attr->required, "SetInputType returned %#lx.\n", hr); + + if (attr->required_set) + { + hr = IMFTransform_SetInputType(transform, 0, media_type, 0); + ok_(__FILE__, line)(FAILED(hr), "SetInputType Succeeded.\n"); + hr = IMFTransform_SetInputType(transform, 0, NULL, 0); + ok_(__FILE__, line)(hr == S_OK, "Failed to clear input type.\n"); + } + hr = IMFMediaType_SetItem(media_type, attr->key, &attr->value); ok_(__FILE__, line)(hr == S_OK, "SetItem returned %#lx\n", hr); + winetest_pop_context(); }
@@ -759,12 +773,24 @@ static void check_mft_set_output_type_required_(int line, IMFTransform *transfor for (attr = attributes; attr && attr->key; attr++) { winetest_push_context("%s", debugstr_a(attr->name)); + hr = IMFMediaType_DeleteItem(media_type, attr->key); ok_(__FILE__, line)(hr == S_OK, "DeleteItem returned %#lx\n", hr); + hr = IMFTransform_SetOutputType(transform, 0, media_type, MFT_SET_TYPE_TEST_ONLY); ok_(__FILE__, line)(FAILED(hr) == attr->required, "SetOutputType returned %#lx.\n", hr); + + if (attr->required_set) + { + hr = IMFTransform_SetOutputType(transform, 0, media_type, 0); + ok_(__FILE__, line)(FAILED(hr), "SetOutputType Succeeded.\n"); + hr = IMFTransform_SetOutputType(transform, 0, NULL, 0); + ok_(__FILE__, line)(hr == S_OK, "Failed to clear output type.\n"); + } + hr = IMFMediaType_SetItem(media_type, attr->key, &attr->value); ok_(__FILE__, line)(hr == S_OK, "SetItem returned %#lx\n", hr); + winetest_pop_context(); }
@@ -3810,43 +3836,43 @@ static void test_h264_encoder(void) {.subtype = &MFVideoFormat_H264}, }, }; - static const media_type_desc default_outputs[] = + static const media_type_desc default_inputs[] = { - { - ATTR_GUID(MF_MT_MAJOR_TYPE, MFMediaType_Video), - ATTR_GUID(MF_MT_SUBTYPE, MFVideoFormat_H264), - }, + {ATTR_GUID(MF_MT_SUBTYPE, MFVideoFormat_IYUV)}, + {ATTR_GUID(MF_MT_SUBTYPE, MFVideoFormat_YV12)}, + {ATTR_GUID(MF_MT_SUBTYPE, MFVideoFormat_NV12)}, + {ATTR_GUID(MF_MT_SUBTYPE, MFVideoFormat_YUY2)}, }; - static const media_type_desc default_inputs[] = + static const media_type_desc default_outputs[] = { - { - ATTR_GUID(MF_MT_MAJOR_TYPE, MFMediaType_Video), - ATTR_GUID(MF_MT_SUBTYPE, MFVideoFormat_IYUV), - }, - { - ATTR_GUID(MF_MT_MAJOR_TYPE, MFMediaType_Video), - ATTR_GUID(MF_MT_SUBTYPE, MFVideoFormat_YV12), - }, - { - ATTR_GUID(MF_MT_MAJOR_TYPE, MFMediaType_Video), - ATTR_GUID(MF_MT_SUBTYPE, MFVideoFormat_NV12), - }, - { - ATTR_GUID(MF_MT_MAJOR_TYPE, MFMediaType_Video), - ATTR_GUID(MF_MT_SUBTYPE, MFVideoFormat_YUY2), - }, + {ATTR_GUID(MF_MT_SUBTYPE, MFVideoFormat_H264)}, }; static const struct attribute_desc expect_transform_attributes[] = { ATTR_UINT32(MFT_ENCODER_SUPPORTS_CONFIG_EVENT, 1), {0}, }; + static const struct attribute_desc expect_common_attributes[] = + { + ATTR_GUID(MF_MT_MAJOR_TYPE, MFMediaType_Video), + {0}, + }; + static const struct attribute_desc expect_available_input_attributes[] = + { + ATTR_RATIO(MF_MT_FRAME_SIZE, actual_width, actual_height), + ATTR_RATIO(MF_MT_FRAME_RATE, 30000, 1001), + ATTR_UINT32(MF_MT_VIDEO_NOMINAL_RANGE, MFNominalRange_Wide), + ATTR_UINT32(MF_MT_INTERLACE_MODE, MFVideoInterlace_Progressive), + ATTR_RATIO(MF_MT_PIXEL_ASPECT_RATIO, 1, 1), + {0}, + }; const struct attribute_desc input_type_desc[] = { ATTR_GUID(MF_MT_MAJOR_TYPE, MFMediaType_Video, .required = TRUE), ATTR_GUID(MF_MT_SUBTYPE, MFVideoFormat_NV12, .required = TRUE), ATTR_RATIO(MF_MT_FRAME_RATE, 30000, 1001, .required = TRUE), ATTR_RATIO(MF_MT_FRAME_SIZE, actual_width, actual_height, .required = TRUE), + ATTR_UINT32(test_attr_guid, 0), {0}, }; const struct attribute_desc output_type_desc[] = @@ -3854,9 +3880,10 @@ static void test_h264_encoder(void) ATTR_GUID(MF_MT_MAJOR_TYPE, MFMediaType_Video, .required = TRUE), ATTR_GUID(MF_MT_SUBTYPE, MFVideoFormat_H264, .required = TRUE), ATTR_RATIO(MF_MT_FRAME_SIZE, actual_width, actual_height, .required = TRUE), - ATTR_RATIO(MF_MT_FRAME_RATE, 30000, 1001), - ATTR_UINT32(MF_MT_AVG_BITRATE, 193540), - ATTR_UINT32(MF_MT_INTERLACE_MODE, MFVideoInterlace_Progressive), + ATTR_RATIO(MF_MT_FRAME_RATE, 30000, 1001, .required_set = TRUE), + ATTR_UINT32(MF_MT_AVG_BITRATE, 193540, .required_set = TRUE), + ATTR_UINT32(MF_MT_INTERLACE_MODE, MFVideoInterlace_Progressive, .required_set = TRUE), + ATTR_UINT32(test_attr_guid, 0), {0}, }; const struct attribute_desc expect_input_type_desc[] = @@ -3865,6 +3892,7 @@ static void test_h264_encoder(void) ATTR_GUID(MF_MT_SUBTYPE, MFVideoFormat_NV12), ATTR_RATIO(MF_MT_FRAME_SIZE, actual_width, actual_height), ATTR_RATIO(MF_MT_FRAME_RATE, 30000, 1001), + ATTR_UINT32(test_attr_guid, 0), {0}, }; const struct attribute_desc expect_output_type_desc[] = @@ -3876,6 +3904,7 @@ static void test_h264_encoder(void) ATTR_UINT32(MF_MT_AVG_BITRATE, 193540), ATTR_BLOB(MF_MT_MPEG_SEQUENCE_HEADER, test_h264_sequence_header, sizeof(test_h264_sequence_header)), ATTR_UINT32(MF_MT_INTERLACE_MODE, MFVideoInterlace_Progressive), + ATTR_UINT32(test_attr_guid, 0), {0}, }; static const MFT_OUTPUT_STREAM_INFO expect_output_info = {.cbSize = 0x8000}; @@ -3929,6 +3958,7 @@ static void test_h264_encoder(void) { winetest_push_context("out %lu", i); ok(hr == S_OK, "GetOutputAvailableType returned %#lx.\n", hr); + check_media_type(media_type, expect_common_attributes, -1); check_media_type(media_type, default_outputs[i], -1); ret = IMFMediaType_Release(media_type); ok(ret == 0, "Release returned %lu\n", ret); @@ -3948,6 +3978,8 @@ static void test_h264_encoder(void) { winetest_push_context("out %lu", i); ok(hr == S_OK, "IMFTransform_GetInputAvailableType returned %#lx\n", hr); + check_media_type(media_type, expect_common_attributes, -1); + check_media_type(media_type, expect_available_input_attributes, -1); check_media_type(media_type, default_inputs[i], -1); ret = IMFMediaType_Release(media_type); ok(ret == 0, "Release returned %lu\n", ret);
From: Ziqing Hui zhui@codeweavers.com
--- dlls/winegstreamer/video_encoder.c | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-)
diff --git a/dlls/winegstreamer/video_encoder.c b/dlls/winegstreamer/video_encoder.c index beb74003d64..73d3f757ff9 100644 --- a/dlls/winegstreamer/video_encoder.c +++ b/dlls/winegstreamer/video_encoder.c @@ -38,6 +38,9 @@ struct video_encoder IMFTransform IMFTransform_iface; LONG refcount;
+ const GUID *const *output_types; + UINT output_type_count; + IMFAttributes *attributes; };
@@ -174,8 +177,14 @@ static HRESULT WINAPI transform_GetInputAvailableType(IMFTransform *iface, DWORD static HRESULT WINAPI transform_GetOutputAvailableType(IMFTransform *iface, DWORD id, DWORD index, IMFMediaType **type) { - FIXME("iface %p, id %#lx, index %#lx, type %p.\n", iface, id, index, type); - return E_NOTIMPL; + struct video_encoder *encoder = impl_from_IMFTransform(iface); + + TRACE("iface %p, id %#lx, index %#lx, type %p.\n", iface, id, index, type); + + *type = NULL; + if (index >= encoder->output_type_count) + return MF_E_NO_MORE_TYPES; + return MFCreateVideoMediaTypeFromSubtype(encoder->output_types[index], (IMFVideoMediaType **)type); }
static HRESULT WINAPI transform_SetInputType(IMFTransform *iface, DWORD id, IMFMediaType *type, DWORD flags) @@ -275,7 +284,8 @@ static const IMFTransformVtbl transform_vtbl = transform_ProcessOutput, };
-static HRESULT video_encoder_create(struct video_encoder **out) +static HRESULT video_encoder_create(const GUID *const *output_types, UINT output_type_count, + struct video_encoder **out) { struct video_encoder *encoder; HRESULT hr; @@ -286,6 +296,9 @@ static HRESULT video_encoder_create(struct video_encoder **out) encoder->IMFTransform_iface.lpVtbl = &transform_vtbl; encoder->refcount = 1;
+ encoder->output_types = output_types; + encoder->output_type_count = output_type_count; + if (FAILED(hr = MFCreateAttributes(&encoder->attributes, 16))) goto failed; if (FAILED(hr = IMFAttributes_SetUINT32(encoder->attributes, &MFT_ENCODER_SUPPORTS_CONFIG_EVENT, TRUE))) @@ -302,6 +315,11 @@ failed: return hr; }
+static const GUID *const h264_encoder_output_types[] = +{ + &MFVideoFormat_H264, +}; + HRESULT h264_encoder_create(REFIID riid, void **out) { const MFVIDEOFORMAT input_format = @@ -327,7 +345,8 @@ HRESULT h264_encoder_create(REFIID riid, void **out) return hr; }
- if (FAILED(hr = video_encoder_create(&encoder))) + if (FAILED(hr = video_encoder_create(h264_encoder_output_types, ARRAY_SIZE(h264_encoder_output_types), + &encoder))) return hr;
TRACE("Created h264 encoder transform %p.\n", &encoder->IMFTransform_iface);
From: Ziqing Hui zhui@codeweavers.com
--- dlls/winegstreamer/video_encoder.c | 55 ++++++++++++++++++++++++++++-- 1 file changed, 53 insertions(+), 2 deletions(-)
diff --git a/dlls/winegstreamer/video_encoder.c b/dlls/winegstreamer/video_encoder.c index 73d3f757ff9..45ff8f355d1 100644 --- a/dlls/winegstreamer/video_encoder.c +++ b/dlls/winegstreamer/video_encoder.c @@ -41,6 +41,8 @@ struct video_encoder const GUID *const *output_types; UINT output_type_count;
+ IMFMediaType *output_type; + IMFAttributes *attributes; };
@@ -87,6 +89,8 @@ static ULONG WINAPI transform_Release(IMFTransform *iface)
if (!refcount) { + if (encoder->output_type) + IMFMediaType_Release(encoder->output_type); IMFAttributes_Release(encoder->attributes); free(encoder); } @@ -195,8 +199,55 @@ static HRESULT WINAPI transform_SetInputType(IMFTransform *iface, DWORD id, IMFM
static HRESULT WINAPI transform_SetOutputType(IMFTransform *iface, DWORD id, IMFMediaType *type, DWORD flags) { - FIXME("iface %p, id %#lx, type %p, flags %#lx.\n", iface, id, type, flags); - return E_NOTIMPL; + struct video_encoder *encoder = impl_from_IMFTransform(iface); + UINT32 uint32_value; + UINT64 uint64_value; + GUID major, subtype; + ULONG i; + + TRACE("iface %p, id %#lx, type %p, flags %#lx.\n", iface, id, type, flags); + + if (!type) + { + if (encoder->output_type) + { + IMFMediaType_Release(encoder->output_type); + encoder->output_type = NULL; + } + return S_OK; + } + + if (FAILED(IMFMediaType_GetGUID(type, &MF_MT_MAJOR_TYPE, &major)) + || FAILED(IMFMediaType_GetGUID(type, &MF_MT_SUBTYPE, &subtype))) + return E_INVALIDARG; + + if (!IsEqualGUID(&major, &MFMediaType_Video)) + return MF_E_INVALIDMEDIATYPE; + + for (i = 0; i < encoder->output_type_count; ++i) + if (IsEqualGUID(&subtype, encoder->output_types[i])) + break; + if (i == encoder->output_type_count) + return MF_E_INVALIDMEDIATYPE; + + if (FAILED(IMFMediaType_GetUINT64(type, &MF_MT_FRAME_SIZE, &uint64_value))) + return MF_E_INVALIDMEDIATYPE; + + if (flags & MFT_SET_TYPE_TEST_ONLY) + return S_OK; + + if (FAILED(IMFMediaType_GetUINT64(type, &MF_MT_FRAME_RATE, &uint64_value)) + || FAILED(IMFMediaType_GetUINT32(type, &MF_MT_AVG_BITRATE, &uint32_value)) + || FAILED(IMFMediaType_GetUINT32(type, &MF_MT_INTERLACE_MODE, &uint32_value))) + return MF_E_INVALIDMEDIATYPE; + + if (encoder->output_type) + IMFMediaType_Release(encoder->output_type); + IMFMediaType_AddRef((encoder->output_type = type)); + + /* FIXME: Add MF_MT_MPEG_SEQUENCE_HEADER attribute. */ + + return S_OK; }
static HRESULT WINAPI transform_GetInputCurrentType(IMFTransform *iface, DWORD id, IMFMediaType **type)
From: Ziqing Hui zhui@codeweavers.com
--- dlls/winegstreamer/video_encoder.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/dlls/winegstreamer/video_encoder.c b/dlls/winegstreamer/video_encoder.c index 45ff8f355d1..0c54bc543a2 100644 --- a/dlls/winegstreamer/video_encoder.c +++ b/dlls/winegstreamer/video_encoder.c @@ -258,8 +258,18 @@ static HRESULT WINAPI transform_GetInputCurrentType(IMFTransform *iface, DWORD i
static HRESULT WINAPI transform_GetOutputCurrentType(IMFTransform *iface, DWORD id, IMFMediaType **type) { - FIXME("iface %p, id %#lx, type %p\n", iface, id, type); - return E_NOTIMPL; + struct video_encoder *encoder = impl_from_IMFTransform(iface); + HRESULT hr; + + TRACE("iface %p, id %#lx, type %p\n", iface, id, type); + + if (!encoder->output_type) + return MF_E_TRANSFORM_TYPE_NOT_SET; + + if (FAILED(hr = MFCreateMediaType(type))) + return hr; + + return IMFMediaType_CopyAllItems(encoder->output_type, (IMFAttributes *)*type); }
static HRESULT WINAPI transform_GetInputStatus(IMFTransform *iface, DWORD id, DWORD *flags)
Hi,
It looks like your patch introduced the new failures shown below. Please investigate and fix them before resubmitting your patch. If they are not new, fixing them anyway would help a lot. Otherwise please ask for the known failures list to be updated.
The tests also ran into some preexisting test failures. If you know how to fix them that would be helpful. See the TestBot job for the details:
The full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=146639
Your paranoid android.
=== w7u_2qxl (32 bit report) ===
mf: mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf.c:6336: Test failed: WaitForSingleObject returned 258 mf.c:6336: Test failed: Unexpected hr 0xd36d8. mf: Timeout
=== debian11 (build log) ===
01d4:err:winediag:h264_encoder_create GStreamer doesn't support H.264 encoding, please install appropriate plugins 01d4:err:winediag:h264_encoder_create GStreamer doesn't support H.264 encoding, please install appropriate plugins 01d4:err:winediag:h264_encoder_create GStreamer doesn't support H.264 encoding, please install appropriate plugins 01d4:err:winediag:h264_encoder_create GStreamer doesn't support H.264 encoding, please install appropriate plugins 01d4:err:winediag:h264_encoder_create GStreamer doesn't support H.264 encoding, please install appropriate plugins 01d4:err:winediag:h264_encoder_create GStreamer doesn't support H.264 encoding, please install appropriate plugins 01d4:err:winediag:h264_encoder_create GStreamer doesn't support H.264 encoding, please install appropriate plugins
=== debian11b (64 bit WoW report) ===
user32: input.c:4305: Test succeeded inside todo block: button_down_hwnd_todo 1: got MSG_TEST_WIN hwnd 00000000005F00F6, msg WM_LBUTTONDOWN, wparam 0x1, lparam 0x320032
=== debian11b (build log) ===
01d4:err:winediag:h264_encoder_create GStreamer doesn't support H.264 encoding, please install appropriate plugins
On Fri Jun 28 07:22:54 2024 +0000, Ziqing Hui wrote:
changed this line in [version 2 of the diff](/wine/wine/-/merge_requests/5931/diffs?diff_id=119887&start_sha=e45839971bd4b92e1237ce3c9ff1df723137ae08#7d1182623d5bb1b424c7177201e6f4f82af8c9fb_221_220)
This suggesstion is applied in V2.