Signed-off-by: Derek Lesho dlesho@codeweavers.com --- dlls/winegstreamer/audioconvert.c | 52 ++++++++++++++++++++++++++++--- 1 file changed, 48 insertions(+), 4 deletions(-)
diff --git a/dlls/winegstreamer/audioconvert.c b/dlls/winegstreamer/audioconvert.c index f156c06e413..82e23eeb4ef 100644 --- a/dlls/winegstreamer/audioconvert.c +++ b/dlls/winegstreamer/audioconvert.c @@ -447,16 +447,60 @@ static HRESULT WINAPI audio_converter_SetOutputType(IMFTransform *iface, DWORD i
static HRESULT WINAPI audio_converter_GetInputCurrentType(IMFTransform *iface, DWORD id, IMFMediaType **type) { - FIXME("%p, %u, %p.\n", iface, id, type); + struct audio_converter *converter = impl_audio_converter_from_IMFTransform(iface); + IMFMediaType *ret; + HRESULT hr;
- return E_NOTIMPL; + TRACE("%p, %u, %p.\n", converter, id, type); + + if (id != 0) + return MF_E_INVALIDSTREAMNUMBER; + + if (FAILED(hr = MFCreateMediaType(&ret))) + return hr; + + EnterCriticalSection(&converter->cs); + + if (converter->input_type) + hr = IMFMediaType_CopyAllItems(converter->input_type, (IMFAttributes *)ret); + else + hr = MF_E_TRANSFORM_TYPE_NOT_SET; + + LeaveCriticalSection(&converter->cs); + + if (SUCCEEDED(hr)) + *type = ret; + + return hr; }
static HRESULT WINAPI audio_converter_GetOutputCurrentType(IMFTransform *iface, DWORD id, IMFMediaType **type) { - FIXME("%p, %u, %p.\n", iface, id, type); + struct audio_converter *converter = impl_audio_converter_from_IMFTransform(iface); + IMFMediaType *ret; + HRESULT hr;
- return E_NOTIMPL; + TRACE("%p, %u, %p.\n", converter, id, type); + + if (id != 0) + return MF_E_INVALIDSTREAMNUMBER; + + if (FAILED(hr = MFCreateMediaType(&ret))) + return hr; + + EnterCriticalSection(&converter->cs); + + if (converter->output_type) + hr = IMFMediaType_CopyAllItems(converter->output_type, (IMFAttributes *)ret); + else + hr = MF_E_TRANSFORM_TYPE_NOT_SET; + + LeaveCriticalSection(&converter->cs); + + if (SUCCEEDED(hr)) + *type = ret; + + return hr; }
static HRESULT WINAPI audio_converter_GetInputStatus(IMFTransform *iface, DWORD id, DWORD *flags)