From: R��mi Bernon rbernon@codeweavers.com
--- dlls/mf/tests/mf.c | 3 --- dlls/winegstreamer/color_convert.c | 18 ++++++++++++++++-- dlls/winegstreamer/h264_decoder.c | 24 ++++++++++++++++++++---- dlls/winegstreamer/resampler.c | 18 ++++++++++++++++-- dlls/winegstreamer/video_processor.c | 26 ++++++++++++++++++++++++-- dlls/winegstreamer/wma_decoder.c | 24 ++++++++++++++++++++---- 6 files changed, 96 insertions(+), 17 deletions(-)
diff --git a/dlls/mf/tests/mf.c b/dlls/mf/tests/mf.c index ebbb7e3f058..c748374fabc 100644 --- a/dlls/mf/tests/mf.c +++ b/dlls/mf/tests/mf.c @@ -8611,11 +8611,8 @@ static void test_h264_decoder(void)
input_count = output_count = 0xdeadbeef; hr = IMFTransform_GetStreamCount(transform, &input_count, &output_count); - todo_wine ok(hr == S_OK, "GetStreamCount returned %#lx\n", hr); - todo_wine ok(input_count == 1, "got input_count %lu\n", input_count); - todo_wine ok(output_count == 1, "got output_count %lu\n", output_count); hr = IMFTransform_GetStreamIDs(transform, 1, &input_id, 1, &output_id); ok(hr == E_NOTIMPL, "GetStreamIDs returned %#lx\n", hr); diff --git a/dlls/winegstreamer/color_convert.c b/dlls/winegstreamer/color_convert.c index b47832b2c30..5884e1db355 100644 --- a/dlls/winegstreamer/color_convert.c +++ b/dlls/winegstreamer/color_convert.c @@ -206,14 +206,28 @@ static HRESULT WINAPI transform_GetStreamLimits(IMFTransform *iface, DWORD *inpu { TRACE("iface %p, input_minimum %p, input_maximum %p, output_minimum %p, output_maximum %p.\n", iface, input_minimum, input_maximum, output_minimum, output_maximum); - *input_minimum = *input_maximum = *output_minimum = *output_maximum = 1; + + if (input_minimum) + *input_minimum = 1; + if (input_maximum) + *input_maximum = 1; + if (output_minimum) + *output_minimum = 1; + if (output_maximum) + *output_maximum = 1; + return S_OK; }
static HRESULT WINAPI transform_GetStreamCount(IMFTransform *iface, DWORD *inputs, DWORD *outputs) { TRACE("iface %p, inputs %p, outputs %p.\n", iface, inputs, outputs); - *inputs = *outputs = 1; + + if (inputs) + *inputs = 1; + if (outputs) + *outputs = 1; + return S_OK; }
diff --git a/dlls/winegstreamer/h264_decoder.c b/dlls/winegstreamer/h264_decoder.c index f5b54b8bf51..e9adbaf5a6f 100644 --- a/dlls/winegstreamer/h264_decoder.c +++ b/dlls/winegstreamer/h264_decoder.c @@ -256,15 +256,31 @@ static ULONG WINAPI transform_Release(IMFTransform *iface) static HRESULT WINAPI transform_GetStreamLimits(IMFTransform *iface, DWORD *input_minimum, DWORD *input_maximum, DWORD *output_minimum, DWORD *output_maximum) { - FIXME("iface %p, input_minimum %p, input_maximum %p, output_minimum %p, output_maximum %p stub!\n", + TRACE("iface %p, input_minimum %p, input_maximum %p, output_minimum %p, output_maximum %p.\n", iface, input_minimum, input_maximum, output_minimum, output_maximum); - return E_NOTIMPL; + + if (input_minimum) + *input_minimum = 1; + if (input_maximum) + *input_maximum = 1; + if (output_minimum) + *output_minimum = 1; + if (output_maximum) + *output_maximum = 1; + + return S_OK; }
static HRESULT WINAPI transform_GetStreamCount(IMFTransform *iface, DWORD *inputs, DWORD *outputs) { - FIXME("iface %p, inputs %p, outputs %p stub!\n", iface, inputs, outputs); - return E_NOTIMPL; + TRACE("iface %p, inputs %p, outputs %p.\n", iface, inputs, outputs); + + if (inputs) + *inputs = 1; + if (outputs) + *outputs = 1; + + return S_OK; }
static HRESULT WINAPI transform_GetStreamIDs(IMFTransform *iface, DWORD input_size, diff --git a/dlls/winegstreamer/resampler.c b/dlls/winegstreamer/resampler.c index 65a29d96794..32bcb69b86d 100644 --- a/dlls/winegstreamer/resampler.c +++ b/dlls/winegstreamer/resampler.c @@ -169,14 +169,28 @@ static HRESULT WINAPI transform_GetStreamLimits(IMFTransform *iface, DWORD *inpu { TRACE("iface %p, input_minimum %p, input_maximum %p, output_minimum %p, output_maximum %p.\n", iface, input_minimum, input_maximum, output_minimum, output_maximum); - *input_minimum = *input_maximum = *output_minimum = *output_maximum = 1; + + if (input_minimum) + *input_minimum = 1; + if (input_maximum) + *input_maximum = 1; + if (output_minimum) + *output_minimum = 1; + if (output_maximum) + *output_maximum = 1; + return S_OK; }
static HRESULT WINAPI transform_GetStreamCount(IMFTransform *iface, DWORD *inputs, DWORD *outputs) { TRACE("iface %p, inputs %p, outputs %p.\n", iface, inputs, outputs); - *inputs = *outputs = 1; + + if (inputs) + *inputs = 1; + if (outputs) + *outputs = 1; + return S_OK; }
diff --git a/dlls/winegstreamer/video_processor.c b/dlls/winegstreamer/video_processor.c index 6f227bc4033..91999c6aaf2 100644 --- a/dlls/winegstreamer/video_processor.c +++ b/dlls/winegstreamer/video_processor.c @@ -170,14 +170,28 @@ static HRESULT WINAPI video_processor_GetStreamLimits(IMFTransform *iface, DWORD { TRACE("iface %p, input_minimum %p, input_maximum %p, output_minimum %p, output_maximum %p.\n", iface, input_minimum, input_maximum, output_minimum, output_maximum); - *input_minimum = *input_maximum = *output_minimum = *output_maximum = 1; + + if (input_minimum) + *input_minimum = 1; + if (input_maximum) + *input_maximum = 1; + if (output_minimum) + *output_minimum = 1; + if (output_maximum) + *output_maximum = 1; + return S_OK; }
static HRESULT WINAPI video_processor_GetStreamCount(IMFTransform *iface, DWORD *inputs, DWORD *outputs) { TRACE("iface %p, inputs %p, outputs %p.\n", iface, inputs, outputs); - *inputs = *outputs = 1; + + if (inputs) + *inputs = 1; + if (outputs) + *outputs = 1; + return S_OK; }
@@ -249,6 +263,9 @@ static HRESULT WINAPI video_processor_GetAttributes(IMFTransform *iface, IMFAttr
FIXME("iface %p, attributes %p stub!\n", iface, attributes);
+ if (!attributes) + return E_POINTER; + IMFAttributes_AddRef((*attributes = impl->attributes)); return S_OK; } @@ -265,6 +282,11 @@ static HRESULT WINAPI video_processor_GetOutputStreamAttributes(IMFTransform *if
FIXME("iface %p, id %#lx, attributes %p stub!\n", iface, id, attributes);
+ if (!attributes) + return E_POINTER; + if (id) + return MF_E_INVALIDSTREAMNUMBER; + IMFAttributes_AddRef((*attributes = impl->output_attributes)); return S_OK; } diff --git a/dlls/winegstreamer/wma_decoder.c b/dlls/winegstreamer/wma_decoder.c index e2a7a770826..f490aef3e61 100644 --- a/dlls/winegstreamer/wma_decoder.c +++ b/dlls/winegstreamer/wma_decoder.c @@ -177,15 +177,31 @@ static ULONG WINAPI transform_Release(IMFTransform *iface) static HRESULT WINAPI transform_GetStreamLimits(IMFTransform *iface, DWORD *input_minimum, DWORD *input_maximum, DWORD *output_minimum, DWORD *output_maximum) { - FIXME("iface %p, input_minimum %p, input_maximum %p, output_minimum %p, output_maximum %p stub!\n", + TRACE("iface %p, input_minimum %p, input_maximum %p, output_minimum %p, output_maximum %p.\n", iface, input_minimum, input_maximum, output_minimum, output_maximum); - return E_NOTIMPL; + + if (input_minimum) + *input_minimum = 1; + if (input_maximum) + *input_maximum = 1; + if (output_minimum) + *output_minimum = 1; + if (output_maximum) + *output_maximum = 1; + + return S_OK; }
static HRESULT WINAPI transform_GetStreamCount(IMFTransform *iface, DWORD *inputs, DWORD *outputs) { - FIXME("iface %p, inputs %p, outputs %p stub!\n", iface, inputs, outputs); - return E_NOTIMPL; + TRACE("iface %p, inputs %p, outputs %p.\n", iface, inputs, outputs); + + if (inputs) + *inputs = 1; + if (outputs) + *outputs = 1; + + return S_OK; }
static HRESULT WINAPI transform_GetStreamIDs(IMFTransform *iface, DWORD input_size, DWORD *inputs,