Wine-Devel
By thread
wine-devel@list.winehq.org
By month
Messages by month
- ----- 2026 -----
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2003 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2002 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2001 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
May 2022
- 77 participants
- 2907 messages
[PATCH v2 7/7] winegstreamer: Commit allocator on pause in MPEG audio decoder.
by Anton Baskanov
Signed-off-by: Anton Baskanov <baskanov(a)gmail.com>
---
dlls/quartz/tests/mpegaudio.c | 2 +-
dlls/winegstreamer/quartz_transform.c | 27 +++++++++++++++++++++++++++
2 files changed, 28 insertions(+), 1 deletion(-)
diff --git a/dlls/quartz/tests/mpegaudio.c b/dlls/quartz/tests/mpegaudio.c
index a2d20b52d9d..296f5f479a0 100644
--- a/dlls/quartz/tests/mpegaudio.c
+++ b/dlls/quartz/tests/mpegaudio.c
@@ -1005,7 +1005,7 @@ static void test_source_allocator(IFilterGraph2 *graph, IMediaControl *control,
ok(hr == S_OK, "Got hr %#lx.\n", hr);
hr = IMemAllocator_GetBuffer(testsink->sink.pAllocator, &sample, NULL, NULL, 0);
- todo_wine ok(hr == S_OK, "Got hr %#lx.\n", hr);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
if (hr == S_OK)
IMediaSample_Release(sample);
diff --git a/dlls/winegstreamer/quartz_transform.c b/dlls/winegstreamer/quartz_transform.c
index 183fb823d40..375c549aad5 100644
--- a/dlls/winegstreamer/quartz_transform.c
+++ b/dlls/winegstreamer/quartz_transform.c
@@ -66,10 +66,37 @@ static void transform_destroy(struct strmbase_filter *iface)
free(filter);
}
+static HRESULT transform_init_stream(struct strmbase_filter *iface)
+{
+ struct transform *filter = impl_from_strmbase_filter(iface);
+ HRESULT hr;
+
+ if (filter->source.pin.peer)
+ {
+ hr = IMemAllocator_Commit(filter->source.pAllocator);
+ if (FAILED(hr))
+ ERR("Failed to commit allocator, hr %#lx.\n", hr);
+ }
+
+ return S_OK;
+}
+
+static HRESULT transform_cleanup_stream(struct strmbase_filter *iface)
+{
+ struct transform *filter = impl_from_strmbase_filter(iface);
+
+ if (filter->source.pin.peer)
+ IMemAllocator_Decommit(filter->source.pAllocator);
+
+ return S_OK;
+}
+
static const struct strmbase_filter_ops filter_ops =
{
.filter_get_pin = transform_get_pin,
.filter_destroy = transform_destroy,
+ .filter_init_stream = transform_init_stream,
+ .filter_cleanup_stream = transform_cleanup_stream,
};
static HRESULT transform_sink_query_accept(struct strmbase_pin *pin, const AM_MEDIA_TYPE *mt)
--
2.34.1
May 2, 2022
[PATCH v2 6/7] quartz/tests: Add tests for MPEG audio decoder source connection.
by Anton Baskanov
Signed-off-by: Anton Baskanov <baskanov(a)gmail.com>
---
dlls/quartz/tests/mpegaudio.c | 170 +++++++++++++++++++++++++++++++++-
1 file changed, 169 insertions(+), 1 deletion(-)
diff --git a/dlls/quartz/tests/mpegaudio.c b/dlls/quartz/tests/mpegaudio.c
index acbe5f30c11..a2d20b52d9d 100644
--- a/dlls/quartz/tests/mpegaudio.c
+++ b/dlls/quartz/tests/mpegaudio.c
@@ -888,9 +888,30 @@ static HRESULT testsink_query_interface(struct strmbase_pin *iface, REFIID iid,
return S_OK;
}
+static HRESULT testsink_get_media_type(struct strmbase_pin *iface, unsigned int index, AM_MEDIA_TYPE *mt)
+{
+ struct testfilter *filter = impl_from_strmbase_filter(iface->filter);
+ if (!index && filter->mt)
+ {
+ CopyMediaType(mt, filter->mt);
+ return S_OK;
+ }
+ return VFW_S_NO_MORE_ITEMS;
+}
+
+static HRESULT testsink_connect(struct strmbase_sink *iface, IPin *peer, const AM_MEDIA_TYPE *mt)
+{
+ struct testfilter *filter = impl_from_strmbase_filter(iface->pin.filter);
+ if (filter->mt && !IsEqualGUID(&mt->majortype, &filter->mt->majortype))
+ return VFW_E_TYPE_NOT_ACCEPTED;
+ return S_OK;
+}
+
static const struct strmbase_sink_ops testsink_ops =
{
.base.pin_query_interface = testsink_query_interface,
+ .base.pin_get_media_type = testsink_get_media_type,
+ .sink_connect = testsink_connect,
};
static void testfilter_init(struct testfilter *filter)
@@ -1063,11 +1084,12 @@ static void test_connect_pin(void)
{
IBaseFilter *filter = create_mpeg_audio_codec();
struct testfilter testsource, testsink;
+ AM_MEDIA_TYPE mt, source_mt, *pmt;
+ WAVEFORMATEX source_format;
IPin *sink, *source, *peer;
IEnumMediaTypes *enummt;
WAVEFORMATEX req_format;
IMediaControl *control;
- AM_MEDIA_TYPE mt, *pmt;
IMemInputPin *meminput;
AM_MEDIA_TYPE req_mt;
IFilterGraph2 *graph;
@@ -1209,6 +1231,152 @@ static void test_connect_pin(void)
test_sink_allocator(meminput);
+ /* Test source connection. */
+
+ peer = (IPin *)0xdeadbeef;
+ hr = IPin_ConnectedTo(source, &peer);
+ ok(hr == VFW_E_NOT_CONNECTED, "Got hr %#lx.\n", hr);
+ ok(!peer, "Got peer %p.\n", peer);
+
+ hr = IPin_ConnectionMediaType(source, &mt);
+ ok(hr == VFW_E_NOT_CONNECTED, "Got hr %#lx.\n", hr);
+
+ /* Exact connection. */
+
+ hr = IMediaControl_Pause(control);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+ init_pcm_mt(&req_mt, &req_format, 1, 32000, 16);
+ hr = IFilterGraph2_ConnectDirect(graph, source, &testsink.sink.pin.IPin_iface, &req_mt);
+ ok(hr == VFW_E_NOT_STOPPED, "Got hr %#lx.\n", hr);
+ hr = IMediaControl_Stop(control);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+ init_pcm_mt(&req_mt, &req_format, 1, 32000, 16);
+ hr = IFilterGraph2_ConnectDirect(graph, source, &testsink.sink.pin.IPin_iface, &req_mt);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+ hr = IPin_ConnectedTo(source, &peer);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+ ok(peer == &testsink.sink.pin.IPin_iface, "Got peer %p.\n", peer);
+ IPin_Release(peer);
+
+ hr = IPin_ConnectionMediaType(source, &mt);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+ ok(compare_media_types(&mt, &req_mt), "Media types didn't match.\n");
+ ok(compare_media_types(&testsink.sink.pin.mt, &req_mt), "Media types didn't match.\n");
+ FreeMediaType(&mt);
+
+ hr = IMediaControl_Pause(control);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+ hr = IFilterGraph2_Disconnect(graph, source);
+ ok(hr == VFW_E_NOT_STOPPED, "Got hr %#lx.\n", hr);
+ hr = IMediaControl_Stop(control);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+ hr = IFilterGraph2_Disconnect(graph, source);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+ hr = IFilterGraph2_Disconnect(graph, source);
+ ok(hr == S_FALSE, "Got hr %#lx.\n", hr);
+ ok(testsink.sink.pin.peer == source, "Got peer %p.\n", testsink.sink.pin.peer);
+ IFilterGraph2_Disconnect(graph, &testsink.sink.pin.IPin_iface);
+
+ init_pcm_mt(&req_mt, &req_format, 1, 32000, 16);
+ req_mt.lSampleSize = 999;
+ req_mt.bTemporalCompression = TRUE;
+ hr = IFilterGraph2_ConnectDirect(graph, source, &testsink.sink.pin.IPin_iface, &req_mt);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+ ok(compare_media_types(&testsink.sink.pin.mt, &req_mt), "Media types didn't match.\n");
+ IFilterGraph2_Disconnect(graph, source);
+ IFilterGraph2_Disconnect(graph, &testsink.sink.pin.IPin_iface);
+
+ init_pcm_mt(&req_mt, &req_format, 1, 32000, 16);
+ req_mt.formattype = FORMAT_None;
+ hr = IFilterGraph2_ConnectDirect(graph, source, &testsink.sink.pin.IPin_iface, &req_mt);
+ ok(hr == VFW_E_TYPE_NOT_ACCEPTED, "Got hr %#lx.\n", hr);
+
+ /* Connection with wildcards. */
+
+ init_pcm_mt(&source_mt, &source_format, 1, 32000, 16);
+
+ init_pcm_mt(&req_mt, &req_format, 1, 32000, 16);
+ hr = IFilterGraph2_ConnectDirect(graph, source, &testsink.sink.pin.IPin_iface, NULL);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+ ok(compare_media_types(&testsink.sink.pin.mt, &source_mt), "Media types didn't match.\n");
+ IFilterGraph2_Disconnect(graph, source);
+ IFilterGraph2_Disconnect(graph, &testsink.sink.pin.IPin_iface);
+
+ init_pcm_mt(&req_mt, &req_format, 1, 32000, 16);
+ req_mt.majortype = GUID_NULL;
+ hr = IFilterGraph2_ConnectDirect(graph, source, &testsink.sink.pin.IPin_iface, &req_mt);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+ ok(compare_media_types(&testsink.sink.pin.mt, &source_mt), "Media types didn't match.\n");
+ IFilterGraph2_Disconnect(graph, source);
+ IFilterGraph2_Disconnect(graph, &testsink.sink.pin.IPin_iface);
+
+ init_pcm_mt(&req_mt, &req_format, 1, 32000, 16);
+ req_mt.majortype = GUID_NULL;
+ req_mt.subtype = GUID_NULL;
+ hr = IFilterGraph2_ConnectDirect(graph, source, &testsink.sink.pin.IPin_iface, &req_mt);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+ ok(compare_media_types(&testsink.sink.pin.mt, &source_mt), "Media types didn't match.\n");
+ IFilterGraph2_Disconnect(graph, source);
+ IFilterGraph2_Disconnect(graph, &testsink.sink.pin.IPin_iface);
+
+ init_pcm_mt(&req_mt, &req_format, 1, 32000, 16);
+ req_mt.majortype = GUID_NULL;
+ req_mt.subtype = GUID_NULL;
+ req_mt.formattype = FORMAT_None;
+ hr = IFilterGraph2_ConnectDirect(graph, source, &testsink.sink.pin.IPin_iface, &req_mt);
+ ok(hr == VFW_E_NO_ACCEPTABLE_TYPES, "Got hr %#lx.\n", hr);
+
+ init_pcm_mt(&req_mt, &req_format, 1, 32000, 16);
+ req_mt.formattype = GUID_NULL;
+ hr = IFilterGraph2_ConnectDirect(graph, source, &testsink.sink.pin.IPin_iface, &req_mt);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+ ok(compare_media_types(&testsink.sink.pin.mt, &source_mt), "Media types didn't match.\n");
+ IFilterGraph2_Disconnect(graph, source);
+ IFilterGraph2_Disconnect(graph, &testsink.sink.pin.IPin_iface);
+
+ init_pcm_mt(&req_mt, &req_format, 1, 32000, 16);
+ req_mt.subtype = GUID_NULL;
+ req_mt.formattype = GUID_NULL;
+ hr = IFilterGraph2_ConnectDirect(graph, source, &testsink.sink.pin.IPin_iface, &req_mt);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+ ok(compare_media_types(&testsink.sink.pin.mt, &source_mt), "Media types didn't match.\n");
+ IFilterGraph2_Disconnect(graph, source);
+ IFilterGraph2_Disconnect(graph, &testsink.sink.pin.IPin_iface);
+
+ init_pcm_mt(&req_mt, &req_format, 1, 32000, 16);
+ req_mt.majortype = MEDIATYPE_Video;
+ req_mt.subtype = GUID_NULL;
+ req_mt.formattype = GUID_NULL;
+ hr = IFilterGraph2_ConnectDirect(graph, source, &testsink.sink.pin.IPin_iface, &req_mt);
+ ok(hr == VFW_E_NO_ACCEPTABLE_TYPES, "Got hr %#lx.\n", hr);
+
+ /* Test enumeration of sink media types. */
+
+ init_pcm_mt(&req_mt, &req_format, 1, 32000, 16);
+ req_mt.majortype = MEDIATYPE_Video;
+ req_mt.subtype = GUID_NULL;
+ req_mt.formattype = GUID_NULL;
+ testsink.mt = &req_mt;
+ hr = IFilterGraph2_ConnectDirect(graph, source, &testsink.sink.pin.IPin_iface, NULL);
+ ok(hr == VFW_E_NO_ACCEPTABLE_TYPES, "Got hr %#lx.\n", hr);
+
+ init_pcm_mt(&req_mt, &req_format, 1, 32000, 16);
+ req_mt.lSampleSize = 444;
+ testsink.mt = &req_mt;
+ hr = IFilterGraph2_ConnectDirect(graph, source, &testsink.sink.pin.IPin_iface, NULL);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+ ok(compare_media_types(&testsink.sink.pin.mt, &req_mt), "Media types didn't match.\n");
+
+ hr = IFilterGraph2_Disconnect(graph, sink);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+ hr = IFilterGraph2_Disconnect(graph, sink);
+ ok(hr == S_FALSE, "Got hr %#lx.\n", hr);
+ ok(testsource.source.pin.peer == sink, "Got peer %p.\n", testsource.source.pin.peer);
+ IFilterGraph2_Disconnect(graph, &testsource.source.pin.IPin_iface);
+
IMemInputPin_Release(meminput);
IPin_Release(sink);
IPin_Release(source);
--
2.34.1
May 2, 2022
[PATCH v2 5/7] quartz/tests: Add tests for MPEG audio decoder source allocator.
by Anton Baskanov
Signed-off-by: Anton Baskanov <baskanov(a)gmail.com>
---
dlls/quartz/tests/mpegaudio.c | 136 +++++++++++++++++++++++++++++++++-
1 file changed, 135 insertions(+), 1 deletion(-)
diff --git a/dlls/quartz/tests/mpegaudio.c b/dlls/quartz/tests/mpegaudio.c
index 19765fe5b2b..acbe5f30c11 100644
--- a/dlls/quartz/tests/mpegaudio.c
+++ b/dlls/quartz/tests/mpegaudio.c
@@ -832,6 +832,7 @@ struct testfilter
{
struct strmbase_filter filter;
struct strmbase_source source;
+ struct strmbase_sink sink;
const AM_MEDIA_TYPE *mt;
};
@@ -852,6 +853,7 @@ static void testfilter_destroy(struct strmbase_filter *iface)
{
struct testfilter *filter = impl_from_strmbase_filter(iface);
strmbase_source_cleanup(&filter->source);
+ strmbase_sink_cleanup(&filter->sink);
strmbase_filter_cleanup(&filter->filter);
}
@@ -873,12 +875,31 @@ static const struct strmbase_source_ops testsource_ops =
.pfnDecideAllocator = testsource_DecideAllocator,
};
+static HRESULT testsink_query_interface(struct strmbase_pin *iface, REFIID iid, void **out)
+{
+ struct testfilter *filter = impl_from_strmbase_filter(iface->filter);
+
+ if (IsEqualGUID(iid, &IID_IMemInputPin))
+ *out = &filter->sink.IMemInputPin_iface;
+ else
+ return E_NOINTERFACE;
+
+ IUnknown_AddRef((IUnknown *)*out);
+ return S_OK;
+}
+
+static const struct strmbase_sink_ops testsink_ops =
+{
+ .base.pin_query_interface = testsink_query_interface,
+};
+
static void testfilter_init(struct testfilter *filter)
{
static const GUID clsid = {0xabacab};
memset(filter, 0, sizeof(*filter));
strmbase_filter_init(&filter->filter, NULL, &clsid, &testfilter_ops);
strmbase_source_init(&filter->source, &filter->filter, L"source", &testsource_ops);
+ strmbase_sink_init(&filter->sink, &filter->filter, L"sink", &testsink_ops, NULL);
}
static void test_sink_allocator(IMemInputPin *input)
@@ -931,10 +952,117 @@ static void test_sink_allocator(IMemInputPin *input)
IMemAllocator_Release(ret_allocator);
}
+static void test_source_allocator(IFilterGraph2 *graph, IMediaControl *control,
+ IPin *sink, IPin *source, struct testfilter *testsource, struct testfilter *testsink)
+{
+ ALLOCATOR_PROPERTIES props, req_props = {2, 30000, 32, 0};
+ IMemAllocator *allocator;
+ IMediaSample *sample;
+ WAVEFORMATEX format;
+ AM_MEDIA_TYPE mt;
+ HRESULT hr;
+
+ hr = IFilterGraph2_ConnectDirect(graph, &testsource->source.pin.IPin_iface, sink, &mp2_mt);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+ init_pcm_mt(&mt, &format, 1, 32000, 16);
+ hr = IFilterGraph2_ConnectDirect(graph, source, &testsink->sink.pin.IPin_iface, &mt);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+ ok(!!testsink->sink.pAllocator, "Expected an allocator.\n");
+ hr = IMemAllocator_GetProperties(testsink->sink.pAllocator, &props);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+ ok(props.cBuffers == 8, "Got %ld buffers.\n", props.cBuffers);
+ ok(props.cbBuffer == 9216, "Got size %ld.\n", props.cbBuffer);
+ ok(props.cbAlign == 1, "Got alignment %ld.\n", props.cbAlign);
+ ok(!props.cbPrefix, "Got prefix %ld.\n", props.cbPrefix);
+
+ hr = IMemAllocator_GetBuffer(testsink->sink.pAllocator, &sample, NULL, NULL, 0);
+ ok(hr == VFW_E_NOT_COMMITTED, "Got hr %#lx.\n", hr);
+
+ hr = IMediaControl_Pause(control);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+ hr = IMemAllocator_GetBuffer(testsink->sink.pAllocator, &sample, NULL, NULL, 0);
+ todo_wine ok(hr == S_OK, "Got hr %#lx.\n", hr);
+ if (hr == S_OK)
+ IMediaSample_Release(sample);
+
+ hr = IMediaControl_Stop(control);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+ hr = IMemAllocator_GetBuffer(testsink->sink.pAllocator, &sample, NULL, NULL, 0);
+ ok(hr == VFW_E_NOT_COMMITTED, "Got hr %#lx.\n", hr);
+
+ IFilterGraph2_Disconnect(graph, source);
+ IFilterGraph2_Disconnect(graph, &testsink->sink.pin.IPin_iface);
+
+ init_pcm_mt(&mt, &format, 1, 32000, 8);
+ hr = IFilterGraph2_ConnectDirect(graph, source, &testsink->sink.pin.IPin_iface, &mt);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+ ok(!!testsink->sink.pAllocator, "Expected an allocator.\n");
+ hr = IMemAllocator_GetProperties(testsink->sink.pAllocator, &props);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+ ok(props.cBuffers == 8, "Got %ld buffers.\n", props.cBuffers);
+ ok(props.cbBuffer == 4608, "Got size %ld.\n", props.cbBuffer);
+ ok(props.cbAlign == 1, "Got alignment %ld.\n", props.cbAlign);
+ ok(!props.cbPrefix, "Got prefix %ld.\n", props.cbPrefix);
+
+ IFilterGraph2_Disconnect(graph, source);
+ IFilterGraph2_Disconnect(graph, &testsink->sink.pin.IPin_iface);
+
+ CoCreateInstance(&CLSID_MemoryAllocator, NULL, CLSCTX_INPROC_SERVER,
+ &IID_IMemAllocator, (void **)&allocator);
+ testsink->sink.pAllocator = allocator;
+
+ hr = IMemAllocator_SetProperties(allocator, &req_props, &props);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+ init_pcm_mt(&mt, &format, 1, 32000, 16);
+ hr = IFilterGraph2_ConnectDirect(graph, source, &testsink->sink.pin.IPin_iface, &mt);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+ ok(testsink->sink.pAllocator == allocator, "Expected an allocator.\n");
+ hr = IMemAllocator_GetProperties(testsink->sink.pAllocator, &props);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+ ok(props.cBuffers == 8, "Got %ld buffers.\n", props.cBuffers);
+ ok(props.cbBuffer == 9216, "Got size %ld.\n", props.cbBuffer);
+ ok(props.cbAlign == 1, "Got alignment %ld.\n", props.cbAlign);
+ ok(!props.cbPrefix, "Got prefix %ld.\n", props.cbPrefix);
+
+ IFilterGraph2_Disconnect(graph, source);
+ IFilterGraph2_Disconnect(graph, &testsink->sink.pin.IPin_iface);
+
+ IFilterGraph2_Disconnect(graph, sink);
+ IFilterGraph2_Disconnect(graph, &testsource->source.pin.IPin_iface);
+
+ hr = IFilterGraph2_ConnectDirect(graph, &testsource->source.pin.IPin_iface, sink, &mp1_mt);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+ init_pcm_mt(&mt, &format, 1, 32000, 16);
+ hr = IFilterGraph2_ConnectDirect(graph, source, &testsink->sink.pin.IPin_iface, &mt);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+ ok(!!testsink->sink.pAllocator, "Expected an allocator.\n");
+ hr = IMemAllocator_GetProperties(testsink->sink.pAllocator, &props);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+ ok(props.cBuffers == 8, "Got %ld buffers.\n", props.cBuffers);
+ ok(props.cbBuffer == 3072, "Got size %ld.\n", props.cbBuffer);
+ ok(props.cbAlign == 1, "Got alignment %ld.\n", props.cbAlign);
+ ok(!props.cbPrefix, "Got prefix %ld.\n", props.cbPrefix);
+
+ IFilterGraph2_Disconnect(graph, source);
+ IFilterGraph2_Disconnect(graph, &testsink->sink.pin.IPin_iface);
+
+ IFilterGraph2_Disconnect(graph, sink);
+ IFilterGraph2_Disconnect(graph, &testsource->source.pin.IPin_iface);
+}
+
static void test_connect_pin(void)
{
IBaseFilter *filter = create_mpeg_audio_codec();
- struct testfilter testsource;
+ struct testfilter testsource, testsink;
IPin *sink, *source, *peer;
IEnumMediaTypes *enummt;
WAVEFORMATEX req_format;
@@ -950,6 +1078,8 @@ static void test_connect_pin(void)
CoCreateInstance(&CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
&IID_IFilterGraph2, (void **)&graph);
testfilter_init(&testsource);
+ testfilter_init(&testsink);
+ IFilterGraph2_AddFilter(graph, &testsink.filter.IBaseFilter_iface, L"sink");
IFilterGraph2_AddFilter(graph, &testsource.filter.IBaseFilter_iface, L"source");
IFilterGraph2_AddFilter(graph, filter, L"MPEG audio decoder");
IBaseFilter_FindPin(filter, L"In", &sink);
@@ -957,6 +1087,8 @@ static void test_connect_pin(void)
IPin_QueryInterface(sink, &IID_IMemInputPin, (void **)&meminput);
IFilterGraph2_QueryInterface(graph, &IID_IMediaControl, (void **)&control);
+ test_source_allocator(graph, control, sink, source, &testsource, &testsink);
+
/* Test sink connection. */
peer = (IPin *)0xdeadbeef;
@@ -1087,6 +1219,8 @@ static void test_connect_pin(void)
ok(!ref, "Got outstanding refcount %ld.\n", ref);
ref = IBaseFilter_Release(&testsource.filter.IBaseFilter_iface);
ok(!ref, "Got outstanding refcount %ld.\n", ref);
+ ref = IBaseFilter_Release(&testsink.filter.IBaseFilter_iface);
+ ok(!ref, "Got outstanding refcount %ld.\n", ref);
}
START_TEST(mpegaudio)
--
2.34.1
May 2, 2022
[PATCH v2 4/7] winegstreamer: Set allocator properties for MPEG audio decoder sink.
by Anton Baskanov
Signed-off-by: Anton Baskanov <baskanov(a)gmail.com>
---
dlls/winegstreamer/quartz_transform.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/dlls/winegstreamer/quartz_transform.c b/dlls/winegstreamer/quartz_transform.c
index 4995177875b..183fb823d40 100644
--- a/dlls/winegstreamer/quartz_transform.c
+++ b/dlls/winegstreamer/quartz_transform.c
@@ -37,6 +37,7 @@ struct transform_ops
HRESULT (*sink_query_accept)(struct transform *filter, const AM_MEDIA_TYPE *mt);
HRESULT (*source_query_accept)(struct transform *filter, const AM_MEDIA_TYPE *mt);
HRESULT (*source_get_media_type)(struct transform *filter, unsigned int index, AM_MEDIA_TYPE *mt);
+ HRESULT (*source_decide_buffer_size)(struct transform *filter, IMemAllocator *allocator, ALLOCATOR_PROPERTIES *props);
};
static inline struct transform *impl_from_strmbase_filter(struct strmbase_filter *iface)
@@ -111,12 +112,20 @@ static HRESULT transform_source_get_media_type(struct strmbase_pin *pin, unsigne
return filter->ops->source_get_media_type(filter, index, mt);
}
+static HRESULT WINAPI transform_source_DecideBufferSize(struct strmbase_source *pin, IMemAllocator *allocator, ALLOCATOR_PROPERTIES *props)
+{
+ struct transform *filter = impl_from_strmbase_filter(pin->pin.filter);
+
+ return filter->ops->source_decide_buffer_size(filter, allocator, props);
+}
+
static const struct strmbase_source_ops source_ops =
{
.base.pin_query_accept = transform_source_query_accept,
.base.pin_get_media_type = transform_source_get_media_type,
.pfnAttemptConnection = BaseOutputPinImpl_AttemptConnection,
.pfnDecideAllocator = BaseOutputPinImpl_DecideAllocator,
+ .pfnDecideBufferSize = transform_source_DecideBufferSize,
};
static HRESULT transform_create(IUnknown *outer, const CLSID *clsid, const struct transform_ops *ops, struct transform **out)
@@ -235,11 +244,27 @@ static HRESULT mpeg_audio_codec_source_get_media_type(struct transform *filter,
return S_OK;
}
+static HRESULT mpeg_audio_codec_source_decide_buffer_size(struct transform *filter, IMemAllocator *allocator, ALLOCATOR_PROPERTIES *props)
+{
+ MPEG1WAVEFORMAT *input_format = (MPEG1WAVEFORMAT *)filter->sink.pin.mt.pbFormat;
+ WAVEFORMATEX *output_format = (WAVEFORMATEX *)filter->source.pin.mt.pbFormat;
+ LONG frame_samples = (input_format->fwHeadLayer & ACM_MPEG_LAYER2) ? 1152 : 384;
+ LONG frame_size = frame_samples * output_format->nBlockAlign;
+ ALLOCATOR_PROPERTIES ret_props;
+
+ props->cBuffers = max(props->cBuffers, 8);
+ props->cbBuffer = max(props->cbBuffer, frame_size * 4);
+ props->cbAlign = max(props->cbAlign, 1);
+
+ return IMemAllocator_SetProperties(allocator, props, &ret_props);
+}
+
static const struct transform_ops mpeg_audio_codec_transform_ops =
{
mpeg_audio_codec_sink_query_accept,
mpeg_audio_codec_source_query_accept,
mpeg_audio_codec_source_get_media_type,
+ mpeg_audio_codec_source_decide_buffer_size,
};
HRESULT mpeg_audio_codec_create(IUnknown *outer, IUnknown **out)
--
2.34.1
May 2, 2022
[PATCH v2 3/7] winegstreamer: Implement output media type enumeration in MPEG audio decoder.
by Anton Baskanov
Signed-off-by: Anton Baskanov <baskanov(a)gmail.com>
---
dlls/quartz/tests/mpegaudio.c | 2 +-
dlls/winegstreamer/quartz_transform.c | 47 +++++++++++++++++++++++++++
2 files changed, 48 insertions(+), 1 deletion(-)
diff --git a/dlls/quartz/tests/mpegaudio.c b/dlls/quartz/tests/mpegaudio.c
index 11280971725..19765fe5b2b 100644
--- a/dlls/quartz/tests/mpegaudio.c
+++ b/dlls/quartz/tests/mpegaudio.c
@@ -1059,7 +1059,7 @@ static void test_connect_pin(void)
init_pcm_mt(&expect_mt, &expect_format, 1, 32000, i ? 8 : 16);
hr = IEnumMediaTypes_Next(enummt, 1, &pmt, NULL);
- todo_wine ok(hr == S_OK, "Got hr %#lx.\n", hr);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
if (hr != S_OK)
break;
ok(!memcmp(pmt, &expect_mt, offsetof(AM_MEDIA_TYPE, cbFormat)),
diff --git a/dlls/winegstreamer/quartz_transform.c b/dlls/winegstreamer/quartz_transform.c
index 8207d24ca8d..4995177875b 100644
--- a/dlls/winegstreamer/quartz_transform.c
+++ b/dlls/winegstreamer/quartz_transform.c
@@ -36,6 +36,7 @@ struct transform_ops
{
HRESULT (*sink_query_accept)(struct transform *filter, const AM_MEDIA_TYPE *mt);
HRESULT (*source_query_accept)(struct transform *filter, const AM_MEDIA_TYPE *mt);
+ HRESULT (*source_get_media_type)(struct transform *filter, unsigned int index, AM_MEDIA_TYPE *mt);
};
static inline struct transform *impl_from_strmbase_filter(struct strmbase_filter *iface)
@@ -103,9 +104,17 @@ static HRESULT transform_source_query_accept(struct strmbase_pin *pin, const AM_
return filter->ops->source_query_accept(filter, mt);
}
+static HRESULT transform_source_get_media_type(struct strmbase_pin *pin, unsigned int index, AM_MEDIA_TYPE *mt)
+{
+ struct transform *filter = impl_from_strmbase_filter(pin->filter);
+
+ return filter->ops->source_get_media_type(filter, index, mt);
+}
+
static const struct strmbase_source_ops source_ops =
{
.base.pin_query_accept = transform_source_query_accept,
+ .base.pin_get_media_type = transform_source_get_media_type,
.pfnAttemptConnection = BaseOutputPinImpl_AttemptConnection,
.pfnDecideAllocator = BaseOutputPinImpl_DecideAllocator,
};
@@ -189,10 +198,48 @@ static HRESULT mpeg_audio_codec_source_query_accept(struct transform *filter, co
return S_OK;
}
+static HRESULT mpeg_audio_codec_source_get_media_type(struct transform *filter, unsigned int index, AM_MEDIA_TYPE *mt)
+{
+ const MPEG1WAVEFORMAT *input_format;
+ WAVEFORMATEX *output_format;
+
+ if (!filter->sink.pin.peer)
+ return VFW_S_NO_MORE_ITEMS;
+
+ if (index > 1)
+ return VFW_S_NO_MORE_ITEMS;
+
+ input_format = (const MPEG1WAVEFORMAT *)filter->sink.pin.mt.pbFormat;
+
+ output_format = CoTaskMemAlloc(sizeof(*output_format));
+ if (!output_format)
+ return E_OUTOFMEMORY;
+
+ memset(output_format, 0, sizeof(*output_format));
+ output_format->wFormatTag = WAVE_FORMAT_PCM;
+ output_format->nSamplesPerSec = input_format->wfx.nSamplesPerSec;
+ output_format->nChannels = input_format->wfx.nChannels;
+ output_format->wBitsPerSample = index ? 8 : 16;
+ output_format->nBlockAlign = output_format->nChannels * output_format->wBitsPerSample / 8;
+ output_format->nAvgBytesPerSec = output_format->nBlockAlign * output_format->nSamplesPerSec;
+
+ memset(mt, 0, sizeof(*mt));
+ mt->majortype = MEDIATYPE_Audio;
+ mt->subtype = MEDIASUBTYPE_PCM;
+ mt->bFixedSizeSamples = TRUE;
+ mt->lSampleSize = output_format->nBlockAlign;
+ mt->formattype = FORMAT_WaveFormatEx;
+ mt->cbFormat = sizeof(*output_format);
+ mt->pbFormat = (BYTE *)output_format;
+
+ return S_OK;
+}
+
static const struct transform_ops mpeg_audio_codec_transform_ops =
{
mpeg_audio_codec_sink_query_accept,
mpeg_audio_codec_source_query_accept,
+ mpeg_audio_codec_source_get_media_type,
};
HRESULT mpeg_audio_codec_create(IUnknown *outer, IUnknown **out)
--
2.34.1
May 2, 2022
[PATCH v2 2/7] quartz/tests: Add tests for MPEG audio decoder output media type enumeration.
by Anton Baskanov
Signed-off-by: Anton Baskanov <baskanov(a)gmail.com>
---
v2: Use memset to initialize media type and format structures.
---
dlls/quartz/tests/mpegaudio.c | 34 ++++++++++++++++++++++++++++++++--
1 file changed, 32 insertions(+), 2 deletions(-)
diff --git a/dlls/quartz/tests/mpegaudio.c b/dlls/quartz/tests/mpegaudio.c
index 1983828beb0..11280971725 100644
--- a/dlls/quartz/tests/mpegaudio.c
+++ b/dlls/quartz/tests/mpegaudio.c
@@ -175,13 +175,14 @@ static inline BOOL compare_media_types(const AM_MEDIA_TYPE *a, const AM_MEDIA_TY
static void init_pcm_mt(AM_MEDIA_TYPE *mt, WAVEFORMATEX *format,
WORD channels, DWORD sample_rate, WORD depth)
{
+ memset(format, 0, sizeof(WAVEFORMATEX));
format->wFormatTag = WAVE_FORMAT_PCM;
format->nChannels = channels;
format->nSamplesPerSec = sample_rate;
format->wBitsPerSample = depth;
format->nBlockAlign = channels * depth / 8;
format->nAvgBytesPerSec = format->nBlockAlign * format->nSamplesPerSec;
- format->cbSize = 0;
+ memset(mt, 0, sizeof(AM_MEDIA_TYPE));
mt->majortype = MEDIATYPE_Audio;
mt->subtype = MEDIASUBTYPE_PCM;
mt->bFixedSizeSamples = TRUE;
@@ -935,12 +936,14 @@ static void test_connect_pin(void)
IBaseFilter *filter = create_mpeg_audio_codec();
struct testfilter testsource;
IPin *sink, *source, *peer;
+ IEnumMediaTypes *enummt;
WAVEFORMATEX req_format;
IMediaControl *control;
+ AM_MEDIA_TYPE mt, *pmt;
IMemInputPin *meminput;
AM_MEDIA_TYPE req_mt;
IFilterGraph2 *graph;
- AM_MEDIA_TYPE mt;
+ unsigned int i;
HRESULT hr;
ULONG ref;
@@ -1045,6 +1048,33 @@ static void test_connect_pin(void)
hr = IMediaControl_Stop(control);
ok(hr == S_OK, "Got hr %#lx.\n", hr);
+ hr = IPin_EnumMediaTypes(source, &enummt);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+ for (i = 0; i < 2; ++i)
+ {
+ WAVEFORMATEX expect_format;
+ AM_MEDIA_TYPE expect_mt;
+
+ init_pcm_mt(&expect_mt, &expect_format, 1, 32000, i ? 8 : 16);
+
+ hr = IEnumMediaTypes_Next(enummt, 1, &pmt, NULL);
+ todo_wine ok(hr == S_OK, "Got hr %#lx.\n", hr);
+ if (hr != S_OK)
+ break;
+ ok(!memcmp(pmt, &expect_mt, offsetof(AM_MEDIA_TYPE, cbFormat)),
+ "%u: Media types didn't match.\n", i);
+ ok(!memcmp(pmt->pbFormat, &expect_format, sizeof(WAVEFORMATEX)),
+ "%u: Format blocks didn't match.\n", i);
+
+ DeleteMediaType(pmt);
+ }
+
+ hr = IEnumMediaTypes_Next(enummt, 1, &pmt, NULL);
+ ok(hr == S_FALSE, "Got hr %#lx.\n", hr);
+
+ IEnumMediaTypes_Release(enummt);
+
test_sink_allocator(meminput);
IMemInputPin_Release(meminput);
--
2.34.1
May 2, 2022
[PATCH v2 1/7] quartz/tests: Add tests for MPEG audio decoder sink allocator.
by Anton Baskanov
Signed-off-by: Anton Baskanov <baskanov(a)gmail.com>
---
dlls/quartz/tests/mpegaudio.c | 52 +++++++++++++++++++++++++++++++++++
1 file changed, 52 insertions(+)
diff --git a/dlls/quartz/tests/mpegaudio.c b/dlls/quartz/tests/mpegaudio.c
index ae098dba355..1983828beb0 100644
--- a/dlls/quartz/tests/mpegaudio.c
+++ b/dlls/quartz/tests/mpegaudio.c
@@ -880,6 +880,56 @@ static void testfilter_init(struct testfilter *filter)
strmbase_source_init(&filter->source, &filter->filter, L"source", &testsource_ops);
}
+static void test_sink_allocator(IMemInputPin *input)
+{
+ IMemAllocator *req_allocator, *ret_allocator;
+ ALLOCATOR_PROPERTIES props, ret_props;
+ HRESULT hr;
+
+ hr = IMemInputPin_GetAllocatorRequirements(input, &props);
+ ok(hr == E_NOTIMPL, "Got hr %#lx.\n", hr);
+
+ hr = IMemInputPin_GetAllocator(input, &ret_allocator);
+ todo_wine ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+ if (hr == S_OK)
+ {
+ hr = IMemAllocator_GetProperties(ret_allocator, &props);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+ ok(!props.cBuffers, "Got %ld buffers.\n", props.cBuffers);
+ ok(!props.cbBuffer, "Got size %ld.\n", props.cbBuffer);
+ ok(!props.cbAlign, "Got alignment %ld.\n", props.cbAlign);
+ ok(!props.cbPrefix, "Got prefix %ld.\n", props.cbPrefix);
+
+ hr = IMemInputPin_NotifyAllocator(input, ret_allocator, TRUE);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+ IMemAllocator_Release(ret_allocator);
+ }
+
+ hr = IMemInputPin_NotifyAllocator(input, NULL, TRUE);
+ ok(hr == E_POINTER, "Got hr %#lx.\n", hr);
+
+ CoCreateInstance(&CLSID_MemoryAllocator, NULL, CLSCTX_INPROC_SERVER,
+ &IID_IMemAllocator, (void **)&req_allocator);
+
+ props.cBuffers = 1;
+ props.cbBuffer = 256;
+ props.cbAlign = 1;
+ props.cbPrefix = 0;
+ hr = IMemAllocator_SetProperties(req_allocator, &props, &ret_props);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+ hr = IMemInputPin_NotifyAllocator(input, req_allocator, TRUE);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+ hr = IMemInputPin_GetAllocator(input, &ret_allocator);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+ ok(ret_allocator == req_allocator, "Allocators didn't match.\n");
+
+ IMemAllocator_Release(req_allocator);
+ IMemAllocator_Release(ret_allocator);
+}
+
static void test_connect_pin(void)
{
IBaseFilter *filter = create_mpeg_audio_codec();
@@ -995,6 +1045,8 @@ static void test_connect_pin(void)
hr = IMediaControl_Stop(control);
ok(hr == S_OK, "Got hr %#lx.\n", hr);
+ test_sink_allocator(meminput);
+
IMemInputPin_Release(meminput);
IPin_Release(sink);
IPin_Release(source);
--
2.34.1
May 2, 2022
Re: [PATCH 7/7] winegstreamer: Commit allocator on pause in MPEG audio decoder.
by Marvin
Hi,
While running your changed tests, I think I found new failures.
Being a bot and all I'm not very good at pattern recognition, so I might be
wrong, but could you please double-check?
Full results can be found at:
https://testbot.winehq.org/JobDetails.pl?Key=113935
Your paranoid android.
=== w864 (64 bit report) ===
quartz:
mpegaudio.c:1220: Test failed: 0: Media types didn't match.
mpegaudio.c:1220: Test failed: 1: Media types didn't match.
mpegaudio.c:1305: Test failed: Media types didn't match.
mpegaudio.c:1313: Test failed: Media types didn't match.
mpegaudio.c:1322: Test failed: Media types didn't match.
mpegaudio.c:1337: Test failed: Media types didn't match.
mpegaudio.c:1346: Test failed: Media types didn't match.
=== w1064 (64 bit report) ===
quartz:
mpegaudio.c:1220: Test failed: 0: Media types didn't match.
mpegaudio.c:1220: Test failed: 1: Media types didn't match.
mpegaudio.c:1305: Test failed: Media types didn't match.
mpegaudio.c:1313: Test failed: Media types didn't match.
mpegaudio.c:1322: Test failed: Media types didn't match.
mpegaudio.c:1337: Test failed: Media types didn't match.
mpegaudio.c:1346: Test failed: Media types didn't match.
=== w1064_2qxl (64 bit report) ===
quartz:
mpegaudio.c:1220: Test failed: 0: Media types didn't match.
mpegaudio.c:1220: Test failed: 1: Media types didn't match.
mpegaudio.c:1305: Test failed: Media types didn't match.
mpegaudio.c:1313: Test failed: Media types didn't match.
mpegaudio.c:1322: Test failed: Media types didn't match.
mpegaudio.c:1337: Test failed: Media types didn't match.
mpegaudio.c:1346: Test failed: Media types didn't match.
=== w1064_tsign (64 bit report) ===
quartz:
mpegaudio.c:1220: Test failed: 0: Media types didn't match.
mpegaudio.c:1220: Test failed: 1: Media types didn't match.
mpegaudio.c:1305: Test failed: Media types didn't match.
mpegaudio.c:1313: Test failed: Media types didn't match.
mpegaudio.c:1322: Test failed: Media types didn't match.
mpegaudio.c:1337: Test failed: Media types didn't match.
mpegaudio.c:1346: Test failed: Media types didn't match.
=== w10pro64 (64 bit report) ===
quartz:
mpegaudio.c:1220: Test failed: 0: Media types didn't match.
mpegaudio.c:1220: Test failed: 1: Media types didn't match.
mpegaudio.c:1305: Test failed: Media types didn't match.
mpegaudio.c:1313: Test failed: Media types didn't match.
mpegaudio.c:1322: Test failed: Media types didn't match.
mpegaudio.c:1337: Test failed: Media types didn't match.
mpegaudio.c:1346: Test failed: Media types didn't match.
=== w10pro64_ar (64 bit report) ===
quartz:
mpegaudio.c:1220: Test failed: 0: Media types didn't match.
mpegaudio.c:1220: Test failed: 1: Media types didn't match.
mpegaudio.c:1305: Test failed: Media types didn't match.
mpegaudio.c:1313: Test failed: Media types didn't match.
mpegaudio.c:1322: Test failed: Media types didn't match.
mpegaudio.c:1337: Test failed: Media types didn't match.
mpegaudio.c:1346: Test failed: Media types didn't match.
=== w10pro64_he (64 bit report) ===
quartz:
mpegaudio.c:1220: Test failed: 0: Media types didn't match.
mpegaudio.c:1220: Test failed: 1: Media types didn't match.
mpegaudio.c:1305: Test failed: Media types didn't match.
mpegaudio.c:1313: Test failed: Media types didn't match.
mpegaudio.c:1322: Test failed: Media types didn't match.
mpegaudio.c:1337: Test failed: Media types didn't match.
mpegaudio.c:1346: Test failed: Media types didn't match.
=== w10pro64_ja (64 bit report) ===
quartz:
mpegaudio.c:1220: Test failed: 0: Media types didn't match.
mpegaudio.c:1220: Test failed: 1: Media types didn't match.
mpegaudio.c:1305: Test failed: Media types didn't match.
mpegaudio.c:1313: Test failed: Media types didn't match.
mpegaudio.c:1322: Test failed: Media types didn't match.
mpegaudio.c:1337: Test failed: Media types didn't match.
mpegaudio.c:1346: Test failed: Media types didn't match.
=== w10pro64_zh_CN (64 bit report) ===
quartz:
mpegaudio.c:1220: Test failed: 0: Media types didn't match.
mpegaudio.c:1220: Test failed: 1: Media types didn't match.
mpegaudio.c:1305: Test failed: Media types didn't match.
mpegaudio.c:1313: Test failed: Media types didn't match.
mpegaudio.c:1322: Test failed: Media types didn't match.
mpegaudio.c:1337: Test failed: Media types didn't match.
mpegaudio.c:1346: Test failed: Media types didn't match.
=== debian11 (64 bit WoW report) ===
quartz:
mpegaudio.c:1220: Test failed: 0: Media types didn't match.
mpegaudio.c:1220: Test failed: 1: Media types didn't match.
mpegaudio.c:1305: Test failed: Media types didn't match.
mpegaudio.c:1313: Test failed: Media types didn't match.
mpegaudio.c:1322: Test failed: Media types didn't match.
mpegaudio.c:1337: Test failed: Media types didn't match.
mpegaudio.c:1346: Test failed: Media types didn't match.
May 2, 2022
Re: [PATCH 6/7] quartz/tests: Add tests for MPEG audio decoder source connection.
by Marvin
Hi,
While running your changed tests, I think I found new failures.
Being a bot and all I'm not very good at pattern recognition, so I might be
wrong, but could you please double-check?
Full results can be found at:
https://testbot.winehq.org/JobDetails.pl?Key=113934
Your paranoid android.
=== w864 (64 bit report) ===
quartz:
mpegaudio.c:1305: Test failed: Media types didn't match.
mpegaudio.c:1313: Test failed: Media types didn't match.
mpegaudio.c:1322: Test failed: Media types didn't match.
mpegaudio.c:1337: Test failed: Media types didn't match.
mpegaudio.c:1346: Test failed: Media types didn't match.
=== w1064 (64 bit report) ===
quartz:
mpegaudio.c:1220: Test failed: 0: Media types didn't match.
mpegaudio.c:1220: Test failed: 1: Media types didn't match.
mpegaudio.c:1305: Test failed: Media types didn't match.
mpegaudio.c:1313: Test failed: Media types didn't match.
mpegaudio.c:1322: Test failed: Media types didn't match.
mpegaudio.c:1337: Test failed: Media types didn't match.
mpegaudio.c:1346: Test failed: Media types didn't match.
=== w1064_2qxl (64 bit report) ===
quartz:
mpegaudio.c:1220: Test failed: 0: Media types didn't match.
mpegaudio.c:1220: Test failed: 1: Media types didn't match.
mpegaudio.c:1305: Test failed: Media types didn't match.
mpegaudio.c:1313: Test failed: Media types didn't match.
mpegaudio.c:1322: Test failed: Media types didn't match.
mpegaudio.c:1337: Test failed: Media types didn't match.
mpegaudio.c:1346: Test failed: Media types didn't match.
=== w1064_tsign (64 bit report) ===
quartz:
mpegaudio.c:1220: Test failed: 0: Media types didn't match.
mpegaudio.c:1220: Test failed: 1: Media types didn't match.
mpegaudio.c:1305: Test failed: Media types didn't match.
mpegaudio.c:1313: Test failed: Media types didn't match.
mpegaudio.c:1322: Test failed: Media types didn't match.
mpegaudio.c:1337: Test failed: Media types didn't match.
mpegaudio.c:1346: Test failed: Media types didn't match.
=== w10pro64 (64 bit report) ===
quartz:
mpegaudio.c:1220: Test failed: 0: Media types didn't match.
mpegaudio.c:1220: Test failed: 1: Media types didn't match.
mpegaudio.c:1305: Test failed: Media types didn't match.
mpegaudio.c:1313: Test failed: Media types didn't match.
mpegaudio.c:1322: Test failed: Media types didn't match.
mpegaudio.c:1337: Test failed: Media types didn't match.
mpegaudio.c:1346: Test failed: Media types didn't match.
=== w10pro64_ar (64 bit report) ===
quartz:
mpegaudio.c:1220: Test failed: 0: Media types didn't match.
mpegaudio.c:1220: Test failed: 1: Media types didn't match.
mpegaudio.c:1305: Test failed: Media types didn't match.
mpegaudio.c:1313: Test failed: Media types didn't match.
mpegaudio.c:1322: Test failed: Media types didn't match.
mpegaudio.c:1337: Test failed: Media types didn't match.
mpegaudio.c:1346: Test failed: Media types didn't match.
=== w10pro64_he (64 bit report) ===
quartz:
mpegaudio.c:1220: Test failed: 0: Media types didn't match.
mpegaudio.c:1220: Test failed: 1: Media types didn't match.
mpegaudio.c:1305: Test failed: Media types didn't match.
mpegaudio.c:1313: Test failed: Media types didn't match.
mpegaudio.c:1322: Test failed: Media types didn't match.
mpegaudio.c:1337: Test failed: Media types didn't match.
mpegaudio.c:1346: Test failed: Media types didn't match.
=== w10pro64_ja (64 bit report) ===
quartz:
mpegaudio.c:1220: Test failed: 0: Media types didn't match.
mpegaudio.c:1220: Test failed: 1: Media types didn't match.
mpegaudio.c:1305: Test failed: Media types didn't match.
mpegaudio.c:1313: Test failed: Media types didn't match.
mpegaudio.c:1322: Test failed: Media types didn't match.
mpegaudio.c:1337: Test failed: Media types didn't match.
mpegaudio.c:1346: Test failed: Media types didn't match.
=== w10pro64_zh_CN (64 bit report) ===
quartz:
mpegaudio.c:1220: Test failed: 0: Media types didn't match.
mpegaudio.c:1220: Test failed: 1: Media types didn't match.
mpegaudio.c:1305: Test failed: Media types didn't match.
mpegaudio.c:1313: Test failed: Media types didn't match.
mpegaudio.c:1322: Test failed: Media types didn't match.
mpegaudio.c:1337: Test failed: Media types didn't match.
mpegaudio.c:1346: Test failed: Media types didn't match.
=== debian11 (64 bit WoW report) ===
quartz:
mpegaudio.c:1220: Test failed: 0: Media types didn't match.
mpegaudio.c:1220: Test failed: 1: Media types didn't match.
mpegaudio.c:1305: Test failed: Media types didn't match.
mpegaudio.c:1313: Test failed: Media types didn't match.
mpegaudio.c:1322: Test failed: Media types didn't match.
mpegaudio.c:1337: Test failed: Media types didn't match.
mpegaudio.c:1346: Test failed: Media types didn't match.
May 2, 2022
Re: [PATCH 5/7] quartz/tests: Add tests for MPEG audio decoder source allocator.
by Marvin
Hi,
While running your changed tests, I think I found new failures.
Being a bot and all I'm not very good at pattern recognition, so I might be
wrong, but could you please double-check?
Full results can be found at:
https://testbot.winehq.org/JobDetails.pl?Key=113933
Your paranoid android.
=== w1064 (64 bit report) ===
quartz:
mpegaudio.c:1198: Test failed: 0: Media types didn't match.
mpegaudio.c:1198: Test failed: 1: Media types didn't match.
=== w1064_2qxl (64 bit report) ===
quartz:
mpegaudio.c:1198: Test failed: 0: Media types didn't match.
mpegaudio.c:1198: Test failed: 1: Media types didn't match.
=== w1064_tsign (64 bit report) ===
quartz:
mpegaudio.c:1198: Test failed: 0: Media types didn't match.
mpegaudio.c:1198: Test failed: 1: Media types didn't match.
=== w10pro64 (64 bit report) ===
quartz:
mpegaudio.c:1198: Test failed: 0: Media types didn't match.
mpegaudio.c:1198: Test failed: 1: Media types didn't match.
=== w10pro64_ar (64 bit report) ===
quartz:
mpegaudio.c:1198: Test failed: 0: Media types didn't match.
mpegaudio.c:1198: Test failed: 1: Media types didn't match.
=== w10pro64_he (64 bit report) ===
quartz:
mpegaudio.c:1198: Test failed: 0: Media types didn't match.
mpegaudio.c:1198: Test failed: 1: Media types didn't match.
=== w10pro64_ja (64 bit report) ===
quartz:
mpegaudio.c:1198: Test failed: 0: Media types didn't match.
mpegaudio.c:1198: Test failed: 1: Media types didn't match.
=== w10pro64_zh_CN (64 bit report) ===
quartz:
mpegaudio.c:1198: Test failed: 0: Media types didn't match.
mpegaudio.c:1198: Test failed: 1: Media types didn't match.
=== debian11 (64 bit WoW report) ===
quartz:
mpegaudio.c:1198: Test failed: 0: Media types didn't match.
mpegaudio.c:1198: Test failed: 1: Media types didn't match.
May 2, 2022