From: Rémi Bernon rbernon@codeweavers.com
Superseded by the standard ResamplerMediaObject transform.
Signed-off-by: Rémi Bernon rbernon@codeweavers.com --- dlls/winegstreamer/Makefile.in | 1 - dlls/winegstreamer/audioconvert.c | 584 ------------------- dlls/winegstreamer/gst_private.h | 1 - dlls/winegstreamer/mfplat.c | 13 - dlls/winegstreamer/winegstreamer_classes.idl | 6 - 5 files changed, 605 deletions(-) delete mode 100644 dlls/winegstreamer/audioconvert.c
diff --git a/dlls/winegstreamer/Makefile.in b/dlls/winegstreamer/Makefile.in index f365608ed6a..e7bffa92df0 100644 --- a/dlls/winegstreamer/Makefile.in +++ b/dlls/winegstreamer/Makefile.in @@ -7,7 +7,6 @@ EXTRAINCL = $(GSTREAMER_CFLAGS) EXTRALIBS = $(GSTREAMER_LIBS) $(PTHREAD_LIBS)
C_SRCS = \ - audioconvert.c \ h264_decoder.c \ main.c \ media_source.c \ diff --git a/dlls/winegstreamer/audioconvert.c b/dlls/winegstreamer/audioconvert.c deleted file mode 100644 index d5723cdf58f..00000000000 --- a/dlls/winegstreamer/audioconvert.c +++ /dev/null @@ -1,584 +0,0 @@ -/* GStreamer Audio Converter - * - * Copyright 2020 Derek Lesho - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "gst_private.h" - -#include "mfapi.h" -#include "mferror.h" -#include "ks.h" -#include "ksmedia.h" - -#include "wine/debug.h" - -WINE_DEFAULT_DEBUG_CHANNEL(mfplat); - -struct audio_converter -{ - IMFTransform IMFTransform_iface; - LONG refcount; - IMFMediaType *input_type; - IMFMediaType *output_type; - CRITICAL_SECTION cs; -}; - -static struct audio_converter *impl_audio_converter_from_IMFTransform(IMFTransform *iface) -{ - return CONTAINING_RECORD(iface, struct audio_converter, IMFTransform_iface); -} - -static HRESULT WINAPI audio_converter_QueryInterface(IMFTransform *iface, REFIID riid, void **obj) -{ - TRACE("%p, %s, %p.\n", iface, debugstr_guid(riid), obj); - - if (IsEqualIID(riid, &IID_IMFTransform) || - IsEqualIID(riid, &IID_IUnknown)) - { - *obj = iface; - IMFTransform_AddRef(iface); - return S_OK; - } - - WARN("Unsupported %s.\n", debugstr_guid(riid)); - *obj = NULL; - return E_NOINTERFACE; -} - -static ULONG WINAPI audio_converter_AddRef(IMFTransform *iface) -{ - struct audio_converter *transform = impl_audio_converter_from_IMFTransform(iface); - ULONG refcount = InterlockedIncrement(&transform->refcount); - - TRACE("%p, refcount %lu.\n", iface, refcount); - - return refcount; -} - -static ULONG WINAPI audio_converter_Release(IMFTransform *iface) -{ - struct audio_converter *transform = impl_audio_converter_from_IMFTransform(iface); - ULONG refcount = InterlockedDecrement(&transform->refcount); - - TRACE("%p, refcount %lu.\n", iface, refcount); - - if (!refcount) - { - transform->cs.DebugInfo->Spare[0] = 0; - DeleteCriticalSection(&transform->cs); - free(transform); - } - - return refcount; -} - -static HRESULT WINAPI audio_converter_GetStreamLimits(IMFTransform *iface, DWORD *input_minimum, DWORD *input_maximum, - DWORD *output_minimum, DWORD *output_maximum) -{ - TRACE("%p, %p, %p, %p, %p.\n", iface, input_minimum, input_maximum, output_minimum, output_maximum); - - *input_minimum = *input_maximum = *output_minimum = *output_maximum = 1; - - return S_OK; -} - -static HRESULT WINAPI audio_converter_GetStreamCount(IMFTransform *iface, DWORD *inputs, DWORD *outputs) -{ - TRACE("%p, %p, %p.\n", iface, inputs, outputs); - - *inputs = *outputs = 1; - - return S_OK; -} - -static HRESULT WINAPI audio_converter_GetStreamIDs(IMFTransform *iface, DWORD input_size, DWORD *inputs, - DWORD output_size, DWORD *outputs) -{ - TRACE("%p, %lu, %p, %lu, %p.\n", iface, input_size, inputs, output_size, outputs); - - return E_NOTIMPL; -} - -static HRESULT WINAPI audio_converter_GetInputStreamInfo(IMFTransform *iface, DWORD id, MFT_INPUT_STREAM_INFO *info) -{ - FIXME("%p, %lu, %p.\n", iface, id, info); - - return E_NOTIMPL; -} - -static HRESULT WINAPI audio_converter_GetOutputStreamInfo(IMFTransform *iface, DWORD id, MFT_OUTPUT_STREAM_INFO *info) -{ - FIXME("%p. %lu, %p.\n", iface, id, info); - - return E_NOTIMPL; -} - -static HRESULT WINAPI audio_converter_GetAttributes(IMFTransform *iface, IMFAttributes **attributes) -{ - FIXME("%p, %p.\n", iface, attributes); - - return E_NOTIMPL; -} - -static HRESULT WINAPI audio_converter_GetInputStreamAttributes(IMFTransform *iface, DWORD id, - IMFAttributes **attributes) -{ - FIXME("%p, %lu, %p.\n", iface, id, attributes); - - return E_NOTIMPL; -} - -static HRESULT WINAPI audio_converter_GetOutputStreamAttributes(IMFTransform *iface, DWORD id, - IMFAttributes **attributes) -{ - FIXME("%p, %lu, %p.\n", iface, id, attributes); - - return E_NOTIMPL; -} - -static HRESULT WINAPI audio_converter_DeleteInputStream(IMFTransform *iface, DWORD id) -{ - TRACE("%p, %lu.\n", iface, id); - - return E_NOTIMPL; -} - -static HRESULT WINAPI audio_converter_AddInputStreams(IMFTransform *iface, DWORD streams, DWORD *ids) -{ - TRACE("%p, %lu, %p.\n", iface, streams, ids); - - return E_NOTIMPL; -} - -static HRESULT WINAPI audio_converter_GetInputAvailableType(IMFTransform *iface, DWORD id, DWORD index, - IMFMediaType **type) -{ - IMFMediaType *ret; - HRESULT hr; - - TRACE("%p, %lu, %lu, %p.\n", iface, id, index, type); - - if (id != 0) - return MF_E_INVALIDSTREAMNUMBER; - - if (index >= 2) - return MF_E_NO_MORE_TYPES; - - if (FAILED(hr = MFCreateMediaType(&ret))) - return hr; - - if (FAILED(hr = IMFMediaType_SetGUID(ret, &MF_MT_MAJOR_TYPE, &MFMediaType_Audio))) - { - IMFMediaType_Release(ret); - return hr; - } - - if (FAILED(hr = IMFMediaType_SetGUID(ret, &MF_MT_SUBTYPE, index ? &MFAudioFormat_Float : &MFAudioFormat_PCM))) - { - IMFMediaType_Release(ret); - return hr; - } - - *type = ret; - - return S_OK; -} - -static HRESULT WINAPI audio_converter_GetOutputAvailableType(IMFTransform *iface, DWORD id, DWORD index, - IMFMediaType **type) -{ - IMFMediaType *output_type; - HRESULT hr; - - static const struct - { - const GUID *subtype; - DWORD depth; - } - formats[] = - { - {&MFAudioFormat_PCM, 16}, - {&MFAudioFormat_PCM, 24}, - {&MFAudioFormat_PCM, 32}, - {&MFAudioFormat_Float, 32}, - }; - - static const DWORD rates[] = {44100, 48000}; - static const DWORD channel_cnts[] = {1, 2, 6}; - const GUID *subtype; - DWORD rate, channels, bps; - - TRACE("%p, %lu, %lu, %p.\n", iface, id, index, type); - - if (id != 0) - return MF_E_INVALIDSTREAMNUMBER; - - if (index >= ARRAY_SIZE(formats) * 2/*rates*/ * 3/*layouts*/) - return MF_E_NO_MORE_TYPES; - - if (FAILED(hr = MFCreateMediaType(&output_type))) - return hr; - - subtype = formats[index / 6].subtype; - bps = formats[index / 6].depth; - rate = rates[index % 2]; - channels = channel_cnts[(index / 2) % 3]; - - if (FAILED(hr = IMFMediaType_SetGUID(output_type, &MF_MT_MAJOR_TYPE, &MFMediaType_Audio))) - goto fail; - if (FAILED(hr = IMFMediaType_SetGUID(output_type, &MF_MT_SUBTYPE, subtype))) - goto fail; - if (FAILED(hr = IMFMediaType_SetUINT32(output_type, &MF_MT_AUDIO_SAMPLES_PER_SECOND, rate))) - goto fail; - if (FAILED(hr = IMFMediaType_SetUINT32(output_type, &MF_MT_AUDIO_NUM_CHANNELS, channels))) - goto fail; - if (FAILED(hr = IMFMediaType_SetUINT32(output_type, &MF_MT_AUDIO_BITS_PER_SAMPLE, bps))) - goto fail; - - if (FAILED(hr = IMFMediaType_SetUINT32(output_type, &MF_MT_AUDIO_BLOCK_ALIGNMENT, channels * bps / 8))) - goto fail; - if (FAILED(hr = IMFMediaType_SetUINT32(output_type, &MF_MT_AUDIO_AVG_BYTES_PER_SECOND, rate * channels * bps / 8))) - goto fail; - if (FAILED(hr = IMFMediaType_SetUINT32(output_type, &MF_MT_AUDIO_CHANNEL_MASK, - channels == 1 ? KSAUDIO_SPEAKER_MONO : - channels == 2 ? KSAUDIO_SPEAKER_STEREO : - /*channels == 6*/ KSAUDIO_SPEAKER_5POINT1))) - goto fail; - if (FAILED(hr = IMFMediaType_SetUINT32(output_type, &MF_MT_ALL_SAMPLES_INDEPENDENT, TRUE))) - goto fail; - - *type = output_type; - - return S_OK; -fail: - IMFMediaType_Release(output_type); - return hr; -} - -static HRESULT WINAPI audio_converter_SetInputType(IMFTransform *iface, DWORD id, IMFMediaType *type, DWORD flags) -{ - GUID major_type, subtype; - UINT32 unused; - HRESULT hr; - - struct audio_converter *converter = impl_audio_converter_from_IMFTransform(iface); - - TRACE("%p, %lu, %p, %#lx.\n", iface, id, type, flags); - - if (id != 0) - return MF_E_INVALIDSTREAMNUMBER; - - if (!type) - { - if (flags & MFT_SET_TYPE_TEST_ONLY) - return S_OK; - - EnterCriticalSection(&converter->cs); - - if (converter->input_type) - { - IMFMediaType_Release(converter->input_type); - converter->input_type = NULL; - } - - LeaveCriticalSection(&converter->cs); - - return S_OK; - } - - if (FAILED(IMFMediaType_GetGUID(type, &MF_MT_MAJOR_TYPE, &major_type))) - return MF_E_INVALIDTYPE; - if (FAILED(IMFMediaType_GetGUID(type, &MF_MT_SUBTYPE, &subtype))) - return MF_E_INVALIDTYPE; - if (FAILED(IMFMediaType_GetUINT32(type, &MF_MT_AUDIO_SAMPLES_PER_SECOND, &unused))) - return MF_E_INVALIDTYPE; - if (FAILED(IMFMediaType_GetUINT32(type, &MF_MT_AUDIO_NUM_CHANNELS, &unused))) - return MF_E_INVALIDTYPE; - if (IsEqualGUID(&subtype, &MFAudioFormat_PCM) && FAILED(IMFMediaType_GetUINT32(type, &MF_MT_AUDIO_BITS_PER_SAMPLE, &unused))) - return MF_E_INVALIDTYPE; - - if (!(IsEqualGUID(&major_type, &MFMediaType_Audio))) - return MF_E_INVALIDTYPE; - - if (!IsEqualGUID(&subtype, &MFAudioFormat_PCM) && !IsEqualGUID(&subtype, &MFAudioFormat_Float)) - return MF_E_INVALIDTYPE; - - if (flags & MFT_SET_TYPE_TEST_ONLY) - return S_OK; - - EnterCriticalSection(&converter->cs); - - hr = S_OK; - - if (!converter->input_type) - hr = MFCreateMediaType(&converter->input_type); - - if (SUCCEEDED(hr)) - hr = IMFMediaType_CopyAllItems(type, (IMFAttributes *) converter->input_type); - - if (FAILED(hr)) - { - IMFMediaType_Release(converter->input_type); - converter->input_type = NULL; - } - - LeaveCriticalSection(&converter->cs); - - return hr; -} - -static HRESULT WINAPI audio_converter_SetOutputType(IMFTransform *iface, DWORD id, IMFMediaType *type, DWORD flags) -{ - struct audio_converter *converter = impl_audio_converter_from_IMFTransform(iface); - GUID major_type, subtype; - UINT32 unused; - HRESULT hr; - - TRACE("%p, %lu, %p, %#lx.\n", iface, id, type, flags); - - if (id != 0) - return MF_E_INVALIDSTREAMNUMBER; - - if (!converter->input_type) - return MF_E_TRANSFORM_TYPE_NOT_SET; - - if (!type) - { - if (flags & MFT_SET_TYPE_TEST_ONLY) - return S_OK; - - EnterCriticalSection(&converter->cs); - - if (converter->output_type) - { - IMFMediaType_Release(converter->output_type); - converter->output_type = NULL; - } - - LeaveCriticalSection(&converter->cs); - - return S_OK; - } - - if (FAILED(IMFMediaType_GetGUID(type, &MF_MT_MAJOR_TYPE, &major_type))) - return MF_E_INVALIDTYPE; - if (FAILED(IMFMediaType_GetGUID(type, &MF_MT_SUBTYPE, &subtype))) - return MF_E_INVALIDTYPE; - if (FAILED(IMFMediaType_GetUINT32(type, &MF_MT_AUDIO_NUM_CHANNELS, &unused))) - return MF_E_INVALIDTYPE; - if (IsEqualGUID(&subtype, &MFAudioFormat_PCM) && FAILED(IMFMediaType_GetUINT32(type, &MF_MT_AUDIO_BITS_PER_SAMPLE, &unused))) - return MF_E_INVALIDTYPE; - if (FAILED(IMFMediaType_GetUINT32(type, &MF_MT_AUDIO_SAMPLES_PER_SECOND, &unused))) - return MF_E_INVALIDTYPE; - - if (!(IsEqualGUID(&major_type, &MFMediaType_Audio))) - return MF_E_INVALIDTYPE; - - if (!IsEqualGUID(&subtype, &MFAudioFormat_PCM) && !IsEqualGUID(&subtype, &MFAudioFormat_Float)) - return MF_E_INVALIDTYPE; - - if (flags & MFT_SET_TYPE_TEST_ONLY) - return S_OK; - - EnterCriticalSection(&converter->cs); - - hr = S_OK; - - if (!converter->output_type) - hr = MFCreateMediaType(&converter->output_type); - - if (SUCCEEDED(hr)) - hr = IMFMediaType_CopyAllItems(type, (IMFAttributes *) converter->output_type); - - if (FAILED(hr)) - { - IMFMediaType_Release(converter->output_type); - converter->output_type = NULL; - } - - LeaveCriticalSection(&converter->cs); - - return hr; -} - -static HRESULT WINAPI audio_converter_GetInputCurrentType(IMFTransform *iface, DWORD id, IMFMediaType **type) -{ - struct audio_converter *converter = impl_audio_converter_from_IMFTransform(iface); - IMFMediaType *ret; - HRESULT hr; - - TRACE("%p, %lu, %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) -{ - struct audio_converter *converter = impl_audio_converter_from_IMFTransform(iface); - IMFMediaType *ret; - HRESULT hr; - - TRACE("%p, %lu, %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) -{ - FIXME("%p, %lu, %p.\n", iface, id, flags); - - return E_NOTIMPL; -} - -static HRESULT WINAPI audio_converter_GetOutputStatus(IMFTransform *iface, DWORD *flags) -{ - FIXME("%p, %p.\n", iface, flags); - - return E_NOTIMPL; -} - -static HRESULT WINAPI audio_converter_SetOutputBounds(IMFTransform *iface, LONGLONG lower, LONGLONG upper) -{ - FIXME("%p, %s, %s.\n", iface, wine_dbgstr_longlong(lower), wine_dbgstr_longlong(upper)); - - return E_NOTIMPL; -} - -static HRESULT WINAPI audio_converter_ProcessEvent(IMFTransform *iface, DWORD id, IMFMediaEvent *event) -{ - TRACE("%p, %lu, %p.\n", iface, id, event); - - return E_NOTIMPL; -} - -static HRESULT WINAPI audio_converter_ProcessMessage(IMFTransform *iface, MFT_MESSAGE_TYPE message, ULONG_PTR param) -{ - TRACE("%p, %u, %Iu.\n", iface, message, param); - - switch(message) - { - case MFT_MESSAGE_NOTIFY_BEGIN_STREAMING: - return S_OK; - default: - FIXME("Unhandled message type %x.\n", message); - return E_NOTIMPL; - } -} - -static HRESULT WINAPI audio_converter_ProcessInput(IMFTransform *iface, DWORD id, IMFSample *sample, DWORD flags) -{ - FIXME("%p, %lu, %p, %#lx.\n", iface, id, sample, flags); - - return E_NOTIMPL; -} - -static HRESULT WINAPI audio_converter_ProcessOutput(IMFTransform *iface, DWORD flags, DWORD count, - MFT_OUTPUT_DATA_BUFFER *samples, DWORD *status) -{ - FIXME("%p, %#lx, %lu, %p, %p.\n", iface, flags, count, samples, status); - - return E_NOTIMPL; -} - -static const IMFTransformVtbl audio_converter_vtbl = -{ - audio_converter_QueryInterface, - audio_converter_AddRef, - audio_converter_Release, - audio_converter_GetStreamLimits, - audio_converter_GetStreamCount, - audio_converter_GetStreamIDs, - audio_converter_GetInputStreamInfo, - audio_converter_GetOutputStreamInfo, - audio_converter_GetAttributes, - audio_converter_GetInputStreamAttributes, - audio_converter_GetOutputStreamAttributes, - audio_converter_DeleteInputStream, - audio_converter_AddInputStreams, - audio_converter_GetInputAvailableType, - audio_converter_GetOutputAvailableType, - audio_converter_SetInputType, - audio_converter_SetOutputType, - audio_converter_GetInputCurrentType, - audio_converter_GetOutputCurrentType, - audio_converter_GetInputStatus, - audio_converter_GetOutputStatus, - audio_converter_SetOutputBounds, - audio_converter_ProcessEvent, - audio_converter_ProcessMessage, - audio_converter_ProcessInput, - audio_converter_ProcessOutput, -}; - -HRESULT audio_converter_create(REFIID riid, void **ret) -{ - struct audio_converter *object; - - TRACE("%s %p\n", debugstr_guid(riid), ret); - - if (!(object = calloc(1, sizeof(*object)))) - return E_OUTOFMEMORY; - - object->IMFTransform_iface.lpVtbl = &audio_converter_vtbl; - object->refcount = 1; - - InitializeCriticalSection(&object->cs); - object->cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": audio_converter_lock"); - - *ret = &object->IMFTransform_iface; - return S_OK; -} diff --git a/dlls/winegstreamer/gst_private.h b/dlls/winegstreamer/gst_private.h index c539084fa89..065849e9a8c 100644 --- a/dlls/winegstreamer/gst_private.h +++ b/dlls/winegstreamer/gst_private.h @@ -139,7 +139,6 @@ HRESULT wg_transform_read_quartz(struct wg_transform *transform, struct wg_sampl HRESULT winegstreamer_stream_handler_create(REFIID riid, void **obj);
HRESULT h264_decoder_create(REFIID riid, void **ret); -HRESULT audio_converter_create(REFIID riid, void **ret);
struct wm_stream { diff --git a/dlls/winegstreamer/mfplat.c b/dlls/winegstreamer/mfplat.c index ee0a5d25056..779387009c2 100644 --- a/dlls/winegstreamer/mfplat.c +++ b/dlls/winegstreamer/mfplat.c @@ -397,8 +397,6 @@ failed:
static const GUID CLSID_GStreamerByteStreamHandler = {0x317df618, 0x5e5a, 0x468a, {0x9f, 0x15, 0xd8, 0x27, 0xa9, 0xa0, 0x81, 0x62}};
-static const GUID CLSID_WINEAudioConverter = {0x6a170414,0xaad9,0x4693,{0xb8,0x06,0x3a,0x0c,0x47,0xc5,0x70,0xd6}}; - static const struct class_object { const GUID *clsid; @@ -408,7 +406,6 @@ class_objects[] = { { &CLSID_VideoProcessorMFT, &video_processor_create }, { &CLSID_GStreamerByteStreamHandler, &winegstreamer_stream_handler_create }, - { &CLSID_WINEAudioConverter, &audio_converter_create }, { &CLSID_MSH264DecoderMFT, &h264_decoder_create }, };
@@ -536,16 +533,6 @@ HRESULT mfplat_DllRegisterServer(void) } mfts[] = { - { - CLSID_WINEAudioConverter, - MFT_CATEGORY_AUDIO_EFFECT, - L"Audio Converter", - MFT_ENUM_FLAG_SYNCMFT, - ARRAY_SIZE(resampler_types), - resampler_types, - ARRAY_SIZE(resampler_types), - resampler_types, - }, { CLSID_WMADecMediaObject, MFT_CATEGORY_AUDIO_DECODER, diff --git a/dlls/winegstreamer/winegstreamer_classes.idl b/dlls/winegstreamer/winegstreamer_classes.idl index 77a9f801fa3..bed1fc5281a 100644 --- a/dlls/winegstreamer/winegstreamer_classes.idl +++ b/dlls/winegstreamer/winegstreamer_classes.idl @@ -69,12 +69,6 @@ coclass VideoProcessorMFT {} ] coclass GStreamerByteStreamHandler {}
-[ - threading(both), - uuid(6a170414-aad9-4693-b806-3a0c47c570d6) -] -coclass WINEAudioConverter { } - [ threading(both), uuid(2eeb4adf-4578-4d10-bca7-bb955f56320a)