Derek Lesho : winegstreamer: Implement Get(Input/Output)CurrentType functions for audio converter transform.
Module: wine Branch: master Commit: f7230992cc2eda2651901843bdaac30d119d078f URL: https://source.winehq.org/git/wine.git/?a=commit;h=f7230992cc2eda2651901843b... Author: Derek Lesho <dlesho(a)codeweavers.com> Date: Thu Dec 3 16:55:54 2020 -0500 winegstreamer: Implement Get(Input/Output)CurrentType functions for audio converter transform. Signed-off-by: Derek Lesho <dlesho(a)codeweavers.com> Signed-off-by: Zebediah Figura <zfigura(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/winegstreamer/audioconvert.c | 56 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 52 insertions(+), 4 deletions(-) diff --git a/dlls/winegstreamer/audioconvert.c b/dlls/winegstreamer/audioconvert.c index 7fb0dee99f6..c5762bfdc60 100644 --- a/dlls/winegstreamer/audioconvert.c +++ b/dlls/winegstreamer/audioconvert.c @@ -423,16 +423,64 @@ 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; + else + IMFMediaType_Release(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; + else + IMFMediaType_Release(ret); + + return hr; } static HRESULT WINAPI audio_converter_GetInputStatus(IMFTransform *iface, DWORD id, DWORD *flags)
participants (1)
-
Alexandre Julliard