Module: wine Branch: master Commit: 1d636da205e39436bbd71849ceeebc5420bf98a9 URL: https://gitlab.winehq.org/wine/wine/-/commit/1d636da205e39436bbd71849ceeebc5...
Author: Anton Baskanov baskanov@gmail.com Date: Sun Oct 2 20:07:58 2022 +0700
winegstreamer: Reject incompatible output types in MPEG layer-3 decoder.
Signed-off-by: Anton Baskanov baskanov@gmail.com
---
dlls/quartz/tests/mpeglayer3.c | 6 +++--- dlls/winegstreamer/quartz_transform.c | 7 +++++++ 2 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/dlls/quartz/tests/mpeglayer3.c b/dlls/quartz/tests/mpeglayer3.c index 4f06c3ec58e..be4a1dfa97f 100644 --- a/dlls/quartz/tests/mpeglayer3.c +++ b/dlls/quartz/tests/mpeglayer3.c @@ -767,7 +767,7 @@ static void test_media_types(void)
init_pcm_mt(&mt, &format, 1, 32000, 16); hr = IPin_QueryAccept(pin, &mt); - todo_wine ok(hr == S_FALSE, "Got hr %#lx.\n", hr); + ok(hr == S_FALSE, "Got hr %#lx.\n", hr);
IPin_Release(pin);
@@ -928,12 +928,12 @@ static void test_connect_pin(void) init_pcm_mt(&req_mt, &req_format, 1, 32000, 16); req_mt.majortype = GUID_NULL; hr = IPin_QueryAccept(source, &req_mt); - todo_wine ok(hr == S_FALSE, "Got hr %#lx.\n", hr); + ok(hr == S_FALSE, "Got hr %#lx.\n", hr);
init_pcm_mt(&req_mt, &req_format, 1, 32000, 16); req_mt.subtype = GUID_NULL; hr = IPin_QueryAccept(source, &req_mt); - todo_wine ok(hr == S_FALSE, "Got hr %#lx.\n", hr); + ok(hr == S_FALSE, "Got hr %#lx.\n", hr);
hr = IMediaControl_Pause(control); ok(hr == S_OK, "Got hr %#lx.\n", hr); diff --git a/dlls/winegstreamer/quartz_transform.c b/dlls/winegstreamer/quartz_transform.c index 0956f844bd7..db2c5f69a5b 100644 --- a/dlls/winegstreamer/quartz_transform.c +++ b/dlls/winegstreamer/quartz_transform.c @@ -754,6 +754,13 @@ static HRESULT mpeg_layer3_decoder_sink_query_accept(struct transform *filter, c
static HRESULT mpeg_layer3_decoder_source_query_accept(struct transform *filter, const AM_MEDIA_TYPE *mt) { + if (!filter->sink.pin.peer) + return S_FALSE; + + if (!IsEqualGUID(&mt->majortype, &MEDIATYPE_Audio) + || !IsEqualGUID(&mt->subtype, &MEDIASUBTYPE_PCM)) + return S_FALSE; + return S_OK; }