[PATCH 1/2] xaudio2_7: Move APO implementations to a new file

Andrew Eikum aeikum at codeweavers.com
Tue Oct 27 14:33:56 CDT 2015


Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>
---
 dlls/xaudio2_7/Makefile.in      |   1 +
 dlls/xaudio2_7/xapofx.c         | 560 ++++++++++++++++++++++++++++++++++++++++
 dlls/xaudio2_7/xaudio_dll.c     | 510 +-----------------------------------
 dlls/xaudio2_7/xaudio_private.h |   2 +
 4 files changed, 564 insertions(+), 509 deletions(-)
 create mode 100644 dlls/xaudio2_7/xapofx.c

diff --git a/dlls/xaudio2_7/Makefile.in b/dlls/xaudio2_7/Makefile.in
index acca92b..c403a61 100644
--- a/dlls/xaudio2_7/Makefile.in
+++ b/dlls/xaudio2_7/Makefile.in
@@ -4,6 +4,7 @@ EXTRALIBS = $(OPENAL_LIBS)
 
 C_SRCS = \
 	compat.c \
+	xapofx.c \
 	xaudio_dll.c
 
 IDL_SRCS = xaudio_classes.idl
diff --git a/dlls/xaudio2_7/xapofx.c b/dlls/xaudio2_7/xapofx.c
new file mode 100644
index 0000000..c23c336
--- /dev/null
+++ b/dlls/xaudio2_7/xapofx.c
@@ -0,0 +1,560 @@
+/*
+ * Copyright (c) 2015 Andrew Eikum for CodeWeavers
+ *
+ * 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 "config.h"
+
+#include <stdarg.h>
+
+#define NONAMELESSUNION
+#define COBJMACROS
+
+#include "xaudio_private.h"
+#include "xapofx.h"
+
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(xaudio2);
+
+typedef struct _VUMeterImpl {
+    IXAPO IXAPO_iface;
+    IXAPOParameters IXAPOParameters_iface;
+
+    LONG ref;
+
+    DWORD version;
+} VUMeterImpl;
+
+static VUMeterImpl *VUMeterImpl_from_IXAPO(IXAPO *iface)
+{
+    return CONTAINING_RECORD(iface, VUMeterImpl, IXAPO_iface);
+}
+
+static VUMeterImpl *VUMeterImpl_from_IXAPOParameters(IXAPOParameters *iface)
+{
+    return CONTAINING_RECORD(iface, VUMeterImpl, IXAPOParameters_iface);
+}
+
+static HRESULT WINAPI VUMXAPO_QueryInterface(IXAPO *iface, REFIID riid,
+        void **ppvObject)
+{
+    VUMeterImpl *This = VUMeterImpl_from_IXAPO(iface);
+
+    TRACE("%p, %s, %p\n", This, wine_dbgstr_guid(riid), ppvObject);
+
+    if(IsEqualGUID(riid, &IID_IUnknown) ||
+            IsEqualGUID(riid, &IID_IXAPO) ||
+            IsEqualGUID(riid, &IID_IXAPO27))
+        *ppvObject = &This->IXAPO_iface;
+    else if(IsEqualGUID(riid, &IID_IXAPOParameters))
+        *ppvObject = &This->IXAPOParameters_iface;
+    else
+        *ppvObject = NULL;
+
+    if(*ppvObject){
+        IUnknown_AddRef((IUnknown*)*ppvObject);
+        return S_OK;
+    }
+
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI VUMXAPO_AddRef(IXAPO *iface)
+{
+    VUMeterImpl *This = VUMeterImpl_from_IXAPO(iface);
+    ULONG ref = InterlockedIncrement(&This->ref);
+    TRACE("(%p)->(): Refcount now %u\n", This, ref);
+    return ref;
+}
+
+static ULONG WINAPI VUMXAPO_Release(IXAPO *iface)
+{
+    VUMeterImpl *This = VUMeterImpl_from_IXAPO(iface);
+    ULONG ref = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p)->(): Refcount now %u\n", This, ref);
+
+    if(!ref)
+        HeapFree(GetProcessHeap(), 0, This);
+
+    return ref;
+}
+
+static HRESULT WINAPI VUMXAPO_GetRegistrationProperties(IXAPO *iface,
+    XAPO_REGISTRATION_PROPERTIES **props)
+{
+    VUMeterImpl *This = VUMeterImpl_from_IXAPO(iface);
+    TRACE("%p, %p\n", This, props);
+    /* TODO: check for version == 20 and use XAPO20_REGISTRATION_PROPERTIES */
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI VUMXAPO_IsInputFormatSupported(IXAPO *iface,
+        const WAVEFORMATEX *output_fmt, const WAVEFORMATEX *input_fmt,
+        WAVEFORMATEX **supported_fmt)
+{
+    VUMeterImpl *This = VUMeterImpl_from_IXAPO(iface);
+    TRACE("%p, %p, %p, %p\n", This, output_fmt, input_fmt, supported_fmt);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI VUMXAPO_IsOutputFormatSupported(IXAPO *iface,
+        const WAVEFORMATEX *input_fmt, const WAVEFORMATEX *output_fmt,
+        WAVEFORMATEX **supported_fmt)
+{
+    VUMeterImpl *This = VUMeterImpl_from_IXAPO(iface);
+    TRACE("%p, %p, %p, %p\n", This, input_fmt, output_fmt, supported_fmt);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI VUMXAPO_Initialize(IXAPO *iface, const void *data,
+        UINT32 data_len)
+{
+    VUMeterImpl *This = VUMeterImpl_from_IXAPO(iface);
+    TRACE("%p, %p, %u\n", This, data, data_len);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI VUMXAPO_Reset(IXAPO *iface)
+{
+    VUMeterImpl *This = VUMeterImpl_from_IXAPO(iface);
+    TRACE("%p\n", This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI VUMXAPO_LockForProcess(IXAPO *iface,
+        UINT32 in_params_count,
+        const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS *in_params,
+        UINT32 out_params_count,
+        const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS *out_params)
+{
+    VUMeterImpl *This = VUMeterImpl_from_IXAPO(iface);
+    TRACE("%p, %u, %p, %u, %p\n", This, in_params_count, in_params,
+            out_params_count, out_params);
+    return E_NOTIMPL;
+}
+
+static void WINAPI VUMXAPO_UnlockForProcess(IXAPO *iface)
+{
+    VUMeterImpl *This = VUMeterImpl_from_IXAPO(iface);
+    TRACE("%p\n", This);
+}
+
+static void WINAPI VUMXAPO_Process(IXAPO *iface, UINT32 in_params_count,
+        const XAPO_PROCESS_BUFFER_PARAMETERS *in_params,
+        UINT32 out_params_count,
+        const XAPO_PROCESS_BUFFER_PARAMETERS *out_params, BOOL enabled)
+{
+    VUMeterImpl *This = VUMeterImpl_from_IXAPO(iface);
+    TRACE("%p, %u, %p, %u, %p, %u\n", This, in_params_count, in_params,
+            out_params_count, out_params, enabled);
+}
+
+static UINT32 WINAPI VUMXAPO_CalcInputFrames(IXAPO *iface, UINT32 output_frames)
+{
+    VUMeterImpl *This = VUMeterImpl_from_IXAPO(iface);
+    TRACE("%p, %u\n", This, output_frames);
+    return 0;
+}
+
+static UINT32 WINAPI VUMXAPO_CalcOutputFrames(IXAPO *iface, UINT32 input_frames)
+{
+    VUMeterImpl *This = VUMeterImpl_from_IXAPO(iface);
+    TRACE("%p, %u\n", This, input_frames);
+    return 0;
+}
+
+static const IXAPOVtbl VUMXAPO_Vtbl = {
+    VUMXAPO_QueryInterface,
+    VUMXAPO_AddRef,
+    VUMXAPO_Release,
+    VUMXAPO_GetRegistrationProperties,
+    VUMXAPO_IsInputFormatSupported,
+    VUMXAPO_IsOutputFormatSupported,
+    VUMXAPO_Initialize,
+    VUMXAPO_Reset,
+    VUMXAPO_LockForProcess,
+    VUMXAPO_UnlockForProcess,
+    VUMXAPO_Process,
+    VUMXAPO_CalcInputFrames,
+    VUMXAPO_CalcOutputFrames
+};
+
+static HRESULT WINAPI VUMXAPOParams_QueryInterface(IXAPOParameters *iface,
+        REFIID riid, void **ppvObject)
+{
+    VUMeterImpl *This = VUMeterImpl_from_IXAPOParameters(iface);
+    return VUMXAPO_QueryInterface(&This->IXAPO_iface, riid, ppvObject);
+}
+
+static ULONG WINAPI VUMXAPOParams_AddRef(IXAPOParameters *iface)
+{
+    VUMeterImpl *This = VUMeterImpl_from_IXAPOParameters(iface);
+    return VUMXAPO_AddRef(&This->IXAPO_iface);
+}
+
+static ULONG WINAPI VUMXAPOParams_Release(IXAPOParameters *iface)
+{
+    VUMeterImpl *This = VUMeterImpl_from_IXAPOParameters(iface);
+    return VUMXAPO_Release(&This->IXAPO_iface);
+}
+
+static void WINAPI VUMXAPOParams_SetParameters(IXAPOParameters *iface,
+        const void *params, UINT32 params_len)
+{
+    VUMeterImpl *This = VUMeterImpl_from_IXAPOParameters(iface);
+    TRACE("%p, %p, %u\n", This, params, params_len);
+}
+
+static void WINAPI VUMXAPOParams_GetParameters(IXAPOParameters *iface,
+        void *params, UINT32 params_len)
+{
+    VUMeterImpl *This = VUMeterImpl_from_IXAPOParameters(iface);
+    TRACE("%p, %p, %u\n", This, params, params_len);
+}
+
+static const IXAPOParametersVtbl VUMXAPOParameters_Vtbl = {
+    VUMXAPOParams_QueryInterface,
+    VUMXAPOParams_AddRef,
+    VUMXAPOParams_Release,
+    VUMXAPOParams_SetParameters,
+    VUMXAPOParams_GetParameters
+};
+
+typedef struct _ReverbImpl {
+    IXAPO IXAPO_iface;
+    IXAPOParameters IXAPOParameters_iface;
+
+    LONG ref;
+
+    DWORD version;
+} ReverbImpl;
+
+static ReverbImpl *ReverbImpl_from_IXAPO(IXAPO *iface)
+{
+    return CONTAINING_RECORD(iface, ReverbImpl, IXAPO_iface);
+}
+
+static ReverbImpl *ReverbImpl_from_IXAPOParameters(IXAPOParameters *iface)
+{
+    return CONTAINING_RECORD(iface, ReverbImpl, IXAPOParameters_iface);
+}
+
+static HRESULT WINAPI RVBXAPO_QueryInterface(IXAPO *iface, REFIID riid, void **ppvObject)
+{
+    ReverbImpl *This = ReverbImpl_from_IXAPO(iface);
+
+    TRACE("%p, %s, %p\n", This, wine_dbgstr_guid(riid), ppvObject);
+
+    if(IsEqualGUID(riid, &IID_IUnknown) ||
+            IsEqualGUID(riid, &IID_IXAPO) ||
+            IsEqualGUID(riid, &IID_IXAPO27))
+        *ppvObject = &This->IXAPO_iface;
+    else if(IsEqualGUID(riid, &IID_IXAPOParameters))
+        *ppvObject = &This->IXAPOParameters_iface;
+    else
+        *ppvObject = NULL;
+
+    if(*ppvObject){
+        IUnknown_AddRef((IUnknown*)*ppvObject);
+        return S_OK;
+    }
+
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI RVBXAPO_AddRef(IXAPO *iface)
+{
+    ReverbImpl *This = ReverbImpl_from_IXAPO(iface);
+    ULONG ref = InterlockedIncrement(&This->ref);
+    TRACE("(%p)->(): Refcount now %u\n", This, ref);
+    return ref;
+}
+
+static ULONG WINAPI RVBXAPO_Release(IXAPO *iface)
+{
+    ReverbImpl *This = ReverbImpl_from_IXAPO(iface);
+    ULONG ref = InterlockedDecrement(&This->ref);
+
+    TRACE("(%p)->(): Refcount now %u\n", This, ref);
+
+    if(!ref)
+        HeapFree(GetProcessHeap(), 0, This);
+
+    return ref;
+}
+
+static HRESULT WINAPI RVBXAPO_GetRegistrationProperties(IXAPO *iface,
+    XAPO_REGISTRATION_PROPERTIES **props)
+{
+    ReverbImpl *This = ReverbImpl_from_IXAPO(iface);
+    TRACE("%p, %p\n", This, props);
+    /* TODO: check for version == 20 and use XAPO20_REGISTRATION_PROPERTIES */
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI RVBXAPO_IsInputFormatSupported(IXAPO *iface,
+        const WAVEFORMATEX *output_fmt, const WAVEFORMATEX *input_fmt,
+        WAVEFORMATEX **supported_fmt)
+{
+    ReverbImpl *This = ReverbImpl_from_IXAPO(iface);
+    TRACE("%p, %p, %p, %p\n", This, output_fmt, input_fmt, supported_fmt);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI RVBXAPO_IsOutputFormatSupported(IXAPO *iface,
+        const WAVEFORMATEX *input_fmt, const WAVEFORMATEX *output_fmt,
+        WAVEFORMATEX **supported_fmt)
+{
+    ReverbImpl *This = ReverbImpl_from_IXAPO(iface);
+    TRACE("%p, %p, %p, %p\n", This, input_fmt, output_fmt, supported_fmt);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI RVBXAPO_Initialize(IXAPO *iface, const void *data,
+        UINT32 data_len)
+{
+    ReverbImpl *This = ReverbImpl_from_IXAPO(iface);
+    TRACE("%p, %p, %u\n", This, data, data_len);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI RVBXAPO_Reset(IXAPO *iface)
+{
+    ReverbImpl *This = ReverbImpl_from_IXAPO(iface);
+    TRACE("%p\n", This);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI RVBXAPO_LockForProcess(IXAPO *iface, UINT32 in_params_count,
+        const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS *in_params,
+        UINT32 out_params_count,
+        const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS *out_params)
+{
+    ReverbImpl *This = ReverbImpl_from_IXAPO(iface);
+    TRACE("%p, %u, %p, %u, %p\n", This, in_params_count, in_params,
+            out_params_count, out_params);
+    return E_NOTIMPL;
+}
+
+static void WINAPI RVBXAPO_UnlockForProcess(IXAPO *iface)
+{
+    ReverbImpl *This = ReverbImpl_from_IXAPO(iface);
+    TRACE("%p\n", This);
+}
+
+static void WINAPI RVBXAPO_Process(IXAPO *iface, UINT32 in_params_count,
+        const XAPO_PROCESS_BUFFER_PARAMETERS *in_params,
+        UINT32 out_params_count,
+        const XAPO_PROCESS_BUFFER_PARAMETERS *out_params, BOOL enabled)
+{
+    ReverbImpl *This = ReverbImpl_from_IXAPO(iface);
+    TRACE("%p, %u, %p, %u, %p, %u\n", This, in_params_count, in_params,
+            out_params_count, out_params, enabled);
+}
+
+static UINT32 WINAPI RVBXAPO_CalcInputFrames(IXAPO *iface, UINT32 output_frames)
+{
+    ReverbImpl *This = ReverbImpl_from_IXAPO(iface);
+    TRACE("%p, %u\n", This, output_frames);
+    return 0;
+}
+
+static UINT32 WINAPI RVBXAPO_CalcOutputFrames(IXAPO *iface, UINT32 input_frames)
+{
+    ReverbImpl *This = ReverbImpl_from_IXAPO(iface);
+    TRACE("%p, %u\n", This, input_frames);
+    return 0;
+}
+
+static const IXAPOVtbl RVBXAPO_Vtbl = {
+    RVBXAPO_QueryInterface,
+    RVBXAPO_AddRef,
+    RVBXAPO_Release,
+    RVBXAPO_GetRegistrationProperties,
+    RVBXAPO_IsInputFormatSupported,
+    RVBXAPO_IsOutputFormatSupported,
+    RVBXAPO_Initialize,
+    RVBXAPO_Reset,
+    RVBXAPO_LockForProcess,
+    RVBXAPO_UnlockForProcess,
+    RVBXAPO_Process,
+    RVBXAPO_CalcInputFrames,
+    RVBXAPO_CalcOutputFrames
+};
+
+static HRESULT WINAPI RVBXAPOParams_QueryInterface(IXAPOParameters *iface,
+        REFIID riid, void **ppvObject)
+{
+    ReverbImpl *This = ReverbImpl_from_IXAPOParameters(iface);
+    return RVBXAPO_QueryInterface(&This->IXAPO_iface, riid, ppvObject);
+}
+
+static ULONG WINAPI RVBXAPOParams_AddRef(IXAPOParameters *iface)
+{
+    ReverbImpl *This = ReverbImpl_from_IXAPOParameters(iface);
+    return RVBXAPO_AddRef(&This->IXAPO_iface);
+}
+
+static ULONG WINAPI RVBXAPOParams_Release(IXAPOParameters *iface)
+{
+    ReverbImpl *This = ReverbImpl_from_IXAPOParameters(iface);
+    return RVBXAPO_Release(&This->IXAPO_iface);
+}
+
+static void WINAPI RVBXAPOParams_SetParameters(IXAPOParameters *iface,
+        const void *params, UINT32 params_len)
+{
+    ReverbImpl *This = ReverbImpl_from_IXAPOParameters(iface);
+    TRACE("%p, %p, %u\n", This, params, params_len);
+}
+
+static void WINAPI RVBXAPOParams_GetParameters(IXAPOParameters *iface, void *params,
+        UINT32 params_len)
+{
+    ReverbImpl *This = ReverbImpl_from_IXAPOParameters(iface);
+    TRACE("%p, %p, %u\n", This, params, params_len);
+}
+
+static const IXAPOParametersVtbl RVBXAPOParameters_Vtbl = {
+    RVBXAPOParams_QueryInterface,
+    RVBXAPOParams_AddRef,
+    RVBXAPOParams_Release,
+    RVBXAPOParams_SetParameters,
+    RVBXAPOParams_GetParameters
+};
+
+struct xapo_cf {
+    IClassFactory IClassFactory_iface;
+    LONG ref;
+    DWORD version;
+    const CLSID *class;
+};
+
+struct xapo_cf *xapo_impl_from_IClassFactory(IClassFactory *iface)
+{
+    return CONTAINING_RECORD(iface, struct xapo_cf, IClassFactory_iface);
+}
+
+static HRESULT WINAPI xapocf_QueryInterface(IClassFactory *iface, REFIID riid, void **ppobj)
+{
+    if(IsEqualGUID(riid, &IID_IUnknown)
+            || IsEqualGUID(riid, &IID_IClassFactory))
+    {
+        IClassFactory_AddRef(iface);
+        *ppobj = iface;
+        return S_OK;
+    }
+
+    *ppobj = NULL;
+    WARN("(%p)->(%s, %p): interface not found\n", iface, debugstr_guid(riid), ppobj);
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI xapocf_AddRef(IClassFactory *iface)
+{
+    struct xapo_cf *This = xapo_impl_from_IClassFactory(iface);
+    ULONG ref = InterlockedIncrement(&This->ref);
+    TRACE("(%p)->(): Refcount now %u\n", This, ref);
+    return ref;
+}
+
+static ULONG WINAPI xapocf_Release(IClassFactory *iface)
+{
+    struct xapo_cf *This = xapo_impl_from_IClassFactory(iface);
+    ULONG ref = InterlockedDecrement(&This->ref);
+    TRACE("(%p)->(): Refcount now %u\n", This, ref);
+    if (!ref)
+        HeapFree(GetProcessHeap(), 0, This);
+    return ref;
+}
+
+static HRESULT WINAPI xapocf_CreateInstance(IClassFactory *iface, IUnknown *pOuter,
+        REFIID riid, void **ppobj)
+{
+    struct xapo_cf *This = xapo_impl_from_IClassFactory(iface);
+    HRESULT hr;
+
+    TRACE("(%p)->(%p,%s,%p)\n", This, pOuter, debugstr_guid(riid), ppobj);
+
+    *ppobj = NULL;
+
+    if(pOuter)
+        return CLASS_E_NOAGGREGATION;
+
+    if(IsEqualGUID(This->class, &CLSID_AudioVolumeMeter)){
+        VUMeterImpl *object;
+
+        object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object));
+        if(!object)
+            return E_OUTOFMEMORY;
+
+        object->IXAPO_iface.lpVtbl = &VUMXAPO_Vtbl;
+        object->IXAPOParameters_iface.lpVtbl = &VUMXAPOParameters_Vtbl;
+        object->version = This->version;
+
+        hr = IXAPO_QueryInterface(&object->IXAPO_iface, riid, ppobj);
+        if(FAILED(hr)){
+            HeapFree(GetProcessHeap(), 0, object);
+            return hr;
+        }
+    }else if(IsEqualGUID(This->class, &CLSID_AudioReverb)){
+        ReverbImpl *object;
+
+        object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object));
+        if(!object)
+            return E_OUTOFMEMORY;
+
+        object->IXAPO_iface.lpVtbl = &RVBXAPO_Vtbl;
+        object->IXAPOParameters_iface.lpVtbl = &RVBXAPOParameters_Vtbl;
+        object->version = This->version;
+
+        hr = IXAPO_QueryInterface(&object->IXAPO_iface, riid, ppobj);
+        if(FAILED(hr)){
+            HeapFree(GetProcessHeap(), 0, object);
+            return hr;
+        }
+    }else
+        return E_INVALIDARG;
+
+    return S_OK;
+}
+
+static HRESULT WINAPI xapocf_LockServer(IClassFactory *iface, BOOL dolock)
+{
+    FIXME("(static)->(%d): stub!\n", dolock);
+    return S_OK;
+}
+
+static const IClassFactoryVtbl xapo_Vtbl =
+{
+    xapocf_QueryInterface,
+    xapocf_AddRef,
+    xapocf_Release,
+    xapocf_CreateInstance,
+    xapocf_LockServer
+};
+
+IClassFactory *make_xapo_factory(REFCLSID clsid, DWORD version)
+{
+    struct xapo_cf *ret = HeapAlloc(GetProcessHeap(), 0, sizeof(struct xapo_cf));
+    ret->IClassFactory_iface.lpVtbl = &xapo_Vtbl;
+    ret->version = version;
+    ret->class = clsid;
+    ret->ref = 0;
+    return &ret->IClassFactory_iface;
+}
diff --git a/dlls/xaudio2_7/xaudio_dll.c b/dlls/xaudio2_7/xaudio_dll.c
index d55d39e..08814f1 100644
--- a/dlls/xaudio2_7/xaudio_dll.c
+++ b/dlls/xaudio2_7/xaudio_dll.c
@@ -1794,414 +1794,6 @@ static const IXAudio2Vtbl XAudio2_Vtbl =
     IXAudio2Impl_SetDebugConfiguration
 };
 
-typedef struct _VUMeterImpl {
-    IXAPO IXAPO_iface;
-    IXAPOParameters IXAPOParameters_iface;
-
-    LONG ref;
-
-    DWORD version;
-} VUMeterImpl;
-
-static VUMeterImpl *VUMeterImpl_from_IXAPO(IXAPO *iface)
-{
-    return CONTAINING_RECORD(iface, VUMeterImpl, IXAPO_iface);
-}
-
-static VUMeterImpl *VUMeterImpl_from_IXAPOParameters(IXAPOParameters *iface)
-{
-    return CONTAINING_RECORD(iface, VUMeterImpl, IXAPOParameters_iface);
-}
-
-static HRESULT WINAPI VUMXAPO_QueryInterface(IXAPO *iface, REFIID riid,
-        void **ppvObject)
-{
-    VUMeterImpl *This = VUMeterImpl_from_IXAPO(iface);
-
-    TRACE("%p, %s, %p\n", This, wine_dbgstr_guid(riid), ppvObject);
-
-    if(IsEqualGUID(riid, &IID_IUnknown) ||
-            IsEqualGUID(riid, &IID_IXAPO) ||
-            IsEqualGUID(riid, &IID_IXAPO27))
-        *ppvObject = &This->IXAPO_iface;
-    else if(IsEqualGUID(riid, &IID_IXAPOParameters))
-        *ppvObject = &This->IXAPOParameters_iface;
-    else
-        *ppvObject = NULL;
-
-    if(*ppvObject){
-        IUnknown_AddRef((IUnknown*)*ppvObject);
-        return S_OK;
-    }
-
-    return E_NOINTERFACE;
-}
-
-static ULONG WINAPI VUMXAPO_AddRef(IXAPO *iface)
-{
-    VUMeterImpl *This = VUMeterImpl_from_IXAPO(iface);
-    ULONG ref = InterlockedIncrement(&This->ref);
-    TRACE("(%p)->(): Refcount now %u\n", This, ref);
-    return ref;
-}
-
-static ULONG WINAPI VUMXAPO_Release(IXAPO *iface)
-{
-    VUMeterImpl *This = VUMeterImpl_from_IXAPO(iface);
-    ULONG ref = InterlockedDecrement(&This->ref);
-
-    TRACE("(%p)->(): Refcount now %u\n", This, ref);
-
-    if(!ref)
-        HeapFree(GetProcessHeap(), 0, This);
-
-    return ref;
-}
-
-static HRESULT WINAPI VUMXAPO_GetRegistrationProperties(IXAPO *iface,
-    XAPO_REGISTRATION_PROPERTIES **props)
-{
-    VUMeterImpl *This = VUMeterImpl_from_IXAPO(iface);
-    TRACE("%p, %p\n", This, props);
-    /* TODO: check for version == 20 and use XAPO20_REGISTRATION_PROPERTIES */
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI VUMXAPO_IsInputFormatSupported(IXAPO *iface,
-        const WAVEFORMATEX *output_fmt, const WAVEFORMATEX *input_fmt,
-        WAVEFORMATEX **supported_fmt)
-{
-    VUMeterImpl *This = VUMeterImpl_from_IXAPO(iface);
-    TRACE("%p, %p, %p, %p\n", This, output_fmt, input_fmt, supported_fmt);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI VUMXAPO_IsOutputFormatSupported(IXAPO *iface,
-        const WAVEFORMATEX *input_fmt, const WAVEFORMATEX *output_fmt,
-        WAVEFORMATEX **supported_fmt)
-{
-    VUMeterImpl *This = VUMeterImpl_from_IXAPO(iface);
-    TRACE("%p, %p, %p, %p\n", This, input_fmt, output_fmt, supported_fmt);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI VUMXAPO_Initialize(IXAPO *iface, const void *data,
-        UINT32 data_len)
-{
-    VUMeterImpl *This = VUMeterImpl_from_IXAPO(iface);
-    TRACE("%p, %p, %u\n", This, data, data_len);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI VUMXAPO_Reset(IXAPO *iface)
-{
-    VUMeterImpl *This = VUMeterImpl_from_IXAPO(iface);
-    TRACE("%p\n", This);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI VUMXAPO_LockForProcess(IXAPO *iface,
-        UINT32 in_params_count,
-        const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS *in_params,
-        UINT32 out_params_count,
-        const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS *out_params)
-{
-    VUMeterImpl *This = VUMeterImpl_from_IXAPO(iface);
-    TRACE("%p, %u, %p, %u, %p\n", This, in_params_count, in_params,
-            out_params_count, out_params);
-    return E_NOTIMPL;
-}
-
-static void WINAPI VUMXAPO_UnlockForProcess(IXAPO *iface)
-{
-    VUMeterImpl *This = VUMeterImpl_from_IXAPO(iface);
-    TRACE("%p\n", This);
-}
-
-static void WINAPI VUMXAPO_Process(IXAPO *iface, UINT32 in_params_count,
-        const XAPO_PROCESS_BUFFER_PARAMETERS *in_params,
-        UINT32 out_params_count,
-        const XAPO_PROCESS_BUFFER_PARAMETERS *out_params, BOOL enabled)
-{
-    VUMeterImpl *This = VUMeterImpl_from_IXAPO(iface);
-    TRACE("%p, %u, %p, %u, %p, %u\n", This, in_params_count, in_params,
-            out_params_count, out_params, enabled);
-}
-
-static UINT32 WINAPI VUMXAPO_CalcInputFrames(IXAPO *iface, UINT32 output_frames)
-{
-    VUMeterImpl *This = VUMeterImpl_from_IXAPO(iface);
-    TRACE("%p, %u\n", This, output_frames);
-    return 0;
-}
-
-static UINT32 WINAPI VUMXAPO_CalcOutputFrames(IXAPO *iface, UINT32 input_frames)
-{
-    VUMeterImpl *This = VUMeterImpl_from_IXAPO(iface);
-    TRACE("%p, %u\n", This, input_frames);
-    return 0;
-}
-
-static const IXAPOVtbl VUMXAPO_Vtbl = {
-    VUMXAPO_QueryInterface,
-    VUMXAPO_AddRef,
-    VUMXAPO_Release,
-    VUMXAPO_GetRegistrationProperties,
-    VUMXAPO_IsInputFormatSupported,
-    VUMXAPO_IsOutputFormatSupported,
-    VUMXAPO_Initialize,
-    VUMXAPO_Reset,
-    VUMXAPO_LockForProcess,
-    VUMXAPO_UnlockForProcess,
-    VUMXAPO_Process,
-    VUMXAPO_CalcInputFrames,
-    VUMXAPO_CalcOutputFrames
-};
-
-static HRESULT WINAPI VUMXAPOParams_QueryInterface(IXAPOParameters *iface,
-        REFIID riid, void **ppvObject)
-{
-    VUMeterImpl *This = VUMeterImpl_from_IXAPOParameters(iface);
-    return VUMXAPO_QueryInterface(&This->IXAPO_iface, riid, ppvObject);
-}
-
-static ULONG WINAPI VUMXAPOParams_AddRef(IXAPOParameters *iface)
-{
-    VUMeterImpl *This = VUMeterImpl_from_IXAPOParameters(iface);
-    return VUMXAPO_AddRef(&This->IXAPO_iface);
-}
-
-static ULONG WINAPI VUMXAPOParams_Release(IXAPOParameters *iface)
-{
-    VUMeterImpl *This = VUMeterImpl_from_IXAPOParameters(iface);
-    return VUMXAPO_Release(&This->IXAPO_iface);
-}
-
-static void WINAPI VUMXAPOParams_SetParameters(IXAPOParameters *iface,
-        const void *params, UINT32 params_len)
-{
-    VUMeterImpl *This = VUMeterImpl_from_IXAPOParameters(iface);
-    TRACE("%p, %p, %u\n", This, params, params_len);
-}
-
-static void WINAPI VUMXAPOParams_GetParameters(IXAPOParameters *iface,
-        void *params, UINT32 params_len)
-{
-    VUMeterImpl *This = VUMeterImpl_from_IXAPOParameters(iface);
-    TRACE("%p, %p, %u\n", This, params, params_len);
-}
-
-static const IXAPOParametersVtbl VUMXAPOParameters_Vtbl = {
-    VUMXAPOParams_QueryInterface,
-    VUMXAPOParams_AddRef,
-    VUMXAPOParams_Release,
-    VUMXAPOParams_SetParameters,
-    VUMXAPOParams_GetParameters
-};
-
-typedef struct _ReverbImpl {
-    IXAPO IXAPO_iface;
-    IXAPOParameters IXAPOParameters_iface;
-
-    LONG ref;
-
-    DWORD version;
-} ReverbImpl;
-
-static ReverbImpl *ReverbImpl_from_IXAPO(IXAPO *iface)
-{
-    return CONTAINING_RECORD(iface, ReverbImpl, IXAPO_iface);
-}
-
-static ReverbImpl *ReverbImpl_from_IXAPOParameters(IXAPOParameters *iface)
-{
-    return CONTAINING_RECORD(iface, ReverbImpl, IXAPOParameters_iface);
-}
-
-static HRESULT WINAPI RVBXAPO_QueryInterface(IXAPO *iface, REFIID riid, void **ppvObject)
-{
-    ReverbImpl *This = ReverbImpl_from_IXAPO(iface);
-
-    TRACE("%p, %s, %p\n", This, wine_dbgstr_guid(riid), ppvObject);
-
-    if(IsEqualGUID(riid, &IID_IUnknown) ||
-            IsEqualGUID(riid, &IID_IXAPO) ||
-            IsEqualGUID(riid, &IID_IXAPO27))
-        *ppvObject = &This->IXAPO_iface;
-    else if(IsEqualGUID(riid, &IID_IXAPOParameters))
-        *ppvObject = &This->IXAPOParameters_iface;
-    else
-        *ppvObject = NULL;
-
-    if(*ppvObject){
-        IUnknown_AddRef((IUnknown*)*ppvObject);
-        return S_OK;
-    }
-
-    return E_NOINTERFACE;
-}
-
-static ULONG WINAPI RVBXAPO_AddRef(IXAPO *iface)
-{
-    ReverbImpl *This = ReverbImpl_from_IXAPO(iface);
-    ULONG ref = InterlockedIncrement(&This->ref);
-    TRACE("(%p)->(): Refcount now %u\n", This, ref);
-    return ref;
-}
-
-static ULONG WINAPI RVBXAPO_Release(IXAPO *iface)
-{
-    ReverbImpl *This = ReverbImpl_from_IXAPO(iface);
-    ULONG ref = InterlockedDecrement(&This->ref);
-
-    TRACE("(%p)->(): Refcount now %u\n", This, ref);
-
-    if(!ref)
-        HeapFree(GetProcessHeap(), 0, This);
-
-    return ref;
-}
-
-static HRESULT WINAPI RVBXAPO_GetRegistrationProperties(IXAPO *iface,
-    XAPO_REGISTRATION_PROPERTIES **props)
-{
-    ReverbImpl *This = ReverbImpl_from_IXAPO(iface);
-    TRACE("%p, %p\n", This, props);
-    /* TODO: check for version == 20 and use XAPO20_REGISTRATION_PROPERTIES */
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI RVBXAPO_IsInputFormatSupported(IXAPO *iface,
-        const WAVEFORMATEX *output_fmt, const WAVEFORMATEX *input_fmt,
-        WAVEFORMATEX **supported_fmt)
-{
-    ReverbImpl *This = ReverbImpl_from_IXAPO(iface);
-    TRACE("%p, %p, %p, %p\n", This, output_fmt, input_fmt, supported_fmt);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI RVBXAPO_IsOutputFormatSupported(IXAPO *iface,
-        const WAVEFORMATEX *input_fmt, const WAVEFORMATEX *output_fmt,
-        WAVEFORMATEX **supported_fmt)
-{
-    ReverbImpl *This = ReverbImpl_from_IXAPO(iface);
-    TRACE("%p, %p, %p, %p\n", This, input_fmt, output_fmt, supported_fmt);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI RVBXAPO_Initialize(IXAPO *iface, const void *data,
-        UINT32 data_len)
-{
-    ReverbImpl *This = ReverbImpl_from_IXAPO(iface);
-    TRACE("%p, %p, %u\n", This, data, data_len);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI RVBXAPO_Reset(IXAPO *iface)
-{
-    ReverbImpl *This = ReverbImpl_from_IXAPO(iface);
-    TRACE("%p\n", This);
-    return E_NOTIMPL;
-}
-
-static HRESULT WINAPI RVBXAPO_LockForProcess(IXAPO *iface, UINT32 in_params_count,
-        const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS *in_params,
-        UINT32 out_params_count,
-        const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS *out_params)
-{
-    ReverbImpl *This = ReverbImpl_from_IXAPO(iface);
-    TRACE("%p, %u, %p, %u, %p\n", This, in_params_count, in_params,
-            out_params_count, out_params);
-    return E_NOTIMPL;
-}
-
-static void WINAPI RVBXAPO_UnlockForProcess(IXAPO *iface)
-{
-    ReverbImpl *This = ReverbImpl_from_IXAPO(iface);
-    TRACE("%p\n", This);
-}
-
-static void WINAPI RVBXAPO_Process(IXAPO *iface, UINT32 in_params_count,
-        const XAPO_PROCESS_BUFFER_PARAMETERS *in_params,
-        UINT32 out_params_count,
-        const XAPO_PROCESS_BUFFER_PARAMETERS *out_params, BOOL enabled)
-{
-    ReverbImpl *This = ReverbImpl_from_IXAPO(iface);
-    TRACE("%p, %u, %p, %u, %p, %u\n", This, in_params_count, in_params,
-            out_params_count, out_params, enabled);
-}
-
-static UINT32 WINAPI RVBXAPO_CalcInputFrames(IXAPO *iface, UINT32 output_frames)
-{
-    ReverbImpl *This = ReverbImpl_from_IXAPO(iface);
-    TRACE("%p, %u\n", This, output_frames);
-    return 0;
-}
-
-static UINT32 WINAPI RVBXAPO_CalcOutputFrames(IXAPO *iface, UINT32 input_frames)
-{
-    ReverbImpl *This = ReverbImpl_from_IXAPO(iface);
-    TRACE("%p, %u\n", This, input_frames);
-    return 0;
-}
-
-static const IXAPOVtbl RVBXAPO_Vtbl = {
-    RVBXAPO_QueryInterface,
-    RVBXAPO_AddRef,
-    RVBXAPO_Release,
-    RVBXAPO_GetRegistrationProperties,
-    RVBXAPO_IsInputFormatSupported,
-    RVBXAPO_IsOutputFormatSupported,
-    RVBXAPO_Initialize,
-    RVBXAPO_Reset,
-    RVBXAPO_LockForProcess,
-    RVBXAPO_UnlockForProcess,
-    RVBXAPO_Process,
-    RVBXAPO_CalcInputFrames,
-    RVBXAPO_CalcOutputFrames
-};
-
-static HRESULT WINAPI RVBXAPOParams_QueryInterface(IXAPOParameters *iface,
-        REFIID riid, void **ppvObject)
-{
-    ReverbImpl *This = ReverbImpl_from_IXAPOParameters(iface);
-    return RVBXAPO_QueryInterface(&This->IXAPO_iface, riid, ppvObject);
-}
-
-static ULONG WINAPI RVBXAPOParams_AddRef(IXAPOParameters *iface)
-{
-    ReverbImpl *This = ReverbImpl_from_IXAPOParameters(iface);
-    return RVBXAPO_AddRef(&This->IXAPO_iface);
-}
-
-static ULONG WINAPI RVBXAPOParams_Release(IXAPOParameters *iface)
-{
-    ReverbImpl *This = ReverbImpl_from_IXAPOParameters(iface);
-    return RVBXAPO_Release(&This->IXAPO_iface);
-}
-
-static void WINAPI RVBXAPOParams_SetParameters(IXAPOParameters *iface,
-        const void *params, UINT32 params_len)
-{
-    ReverbImpl *This = ReverbImpl_from_IXAPOParameters(iface);
-    TRACE("%p, %p, %u\n", This, params, params_len);
-}
-
-static void WINAPI RVBXAPOParams_GetParameters(IXAPOParameters *iface, void *params,
-        UINT32 params_len)
-{
-    ReverbImpl *This = ReverbImpl_from_IXAPOParameters(iface);
-    TRACE("%p, %p, %u\n", This, params, params_len);
-}
-
-static const IXAPOParametersVtbl RVBXAPOParameters_Vtbl = {
-    RVBXAPOParams_QueryInterface,
-    RVBXAPOParams_AddRef,
-    RVBXAPOParams_Release,
-    RVBXAPOParams_SetParameters,
-    RVBXAPOParams_GetParameters
-};
-
 struct xaudio2_cf {
     IClassFactory IClassFactory_iface;
     LONG ref;
@@ -2379,87 +1971,6 @@ static HRESULT WINAPI XAudio2CF_CreateInstance(IClassFactory *iface, IUnknown *p
     return hr;
 }
 
-struct xapo_cf {
-    IClassFactory IClassFactory_iface;
-    LONG ref;
-    DWORD version;
-    const CLSID *class;
-};
-
-struct xapo_cf *xapo_impl_from_IClassFactory(IClassFactory *iface)
-{
-    return CONTAINING_RECORD(iface, struct xapo_cf, IClassFactory_iface);
-}
-
-static ULONG WINAPI xapo_AddRef(IClassFactory *iface)
-{
-    struct xapo_cf *This = xapo_impl_from_IClassFactory(iface);
-    ULONG ref = InterlockedIncrement(&This->ref);
-    TRACE("(%p)->(): Refcount now %u\n", This, ref);
-    return ref;
-}
-
-static ULONG WINAPI xapo_Release(IClassFactory *iface)
-{
-    struct xapo_cf *This = xapo_impl_from_IClassFactory(iface);
-    ULONG ref = InterlockedDecrement(&This->ref);
-    TRACE("(%p)->(): Refcount now %u\n", This, ref);
-    if (!ref)
-        HeapFree(GetProcessHeap(), 0, This);
-    return ref;
-}
-
-static HRESULT WINAPI xapo_CreateInstance(IClassFactory *iface, IUnknown *pOuter,
-        REFIID riid, void **ppobj)
-{
-    struct xapo_cf *This = xapo_impl_from_IClassFactory(iface);
-    HRESULT hr;
-
-    TRACE("(%p)->(%p,%s,%p)\n", This, pOuter, debugstr_guid(riid), ppobj);
-
-    *ppobj = NULL;
-
-    if(pOuter)
-        return CLASS_E_NOAGGREGATION;
-
-    if(IsEqualGUID(This->class, &CLSID_AudioVolumeMeter)){
-        VUMeterImpl *object;
-
-        object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object));
-        if(!object)
-            return E_OUTOFMEMORY;
-
-        object->IXAPO_iface.lpVtbl = &VUMXAPO_Vtbl;
-        object->IXAPOParameters_iface.lpVtbl = &VUMXAPOParameters_Vtbl;
-        object->version = This->version;
-
-        hr = IXAPO_QueryInterface(&object->IXAPO_iface, riid, ppobj);
-        if(FAILED(hr)){
-            HeapFree(GetProcessHeap(), 0, object);
-            return hr;
-        }
-    }else if(IsEqualGUID(This->class, &CLSID_AudioReverb)){
-        ReverbImpl *object;
-
-        object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object));
-        if(!object)
-            return E_OUTOFMEMORY;
-
-        object->IXAPO_iface.lpVtbl = &RVBXAPO_Vtbl;
-        object->IXAPOParameters_iface.lpVtbl = &RVBXAPOParameters_Vtbl;
-        object->version = This->version;
-
-        hr = IXAPO_QueryInterface(&object->IXAPO_iface, riid, ppobj);
-        if(FAILED(hr)){
-            HeapFree(GetProcessHeap(), 0, object);
-            return hr;
-        }
-    }else
-        return E_INVALIDARG;
-
-    return S_OK;
-}
-
 static HRESULT WINAPI XAudio2CF_LockServer(IClassFactory *iface, BOOL dolock)
 {
     FIXME("(static)->(%d): stub!\n", dolock);
@@ -2475,34 +1986,15 @@ static const IClassFactoryVtbl XAudio2CF_Vtbl =
     XAudio2CF_LockServer
 };
 
-static const IClassFactoryVtbl xapo_Vtbl =
-{
-    XAudio2CF_QueryInterface,
-    xapo_AddRef,
-    xapo_Release,
-    xapo_CreateInstance,
-    XAudio2CF_LockServer
-};
-
 static IClassFactory *make_xaudio2_factory(DWORD version)
 {
-    struct xapo_cf *ret = HeapAlloc(GetProcessHeap(), 0, sizeof(struct xaudio2_cf));
+    struct xaudio2_cf *ret = HeapAlloc(GetProcessHeap(), 0, sizeof(struct xaudio2_cf));
     ret->IClassFactory_iface.lpVtbl = &XAudio2CF_Vtbl;
     ret->version = version;
     ret->ref = 0;
     return &ret->IClassFactory_iface;
 }
 
-static IClassFactory *make_xapo_factory(REFCLSID clsid, DWORD version)
-{
-    struct xapo_cf *ret = HeapAlloc(GetProcessHeap(), 0, sizeof(struct xaudio2_cf));
-    ret->IClassFactory_iface.lpVtbl = &xapo_Vtbl;
-    ret->version = version;
-    ret->class = clsid;
-    ret->ref = 0;
-    return &ret->IClassFactory_iface;
-}
-
 HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, void **ppv)
 {
     IClassFactory *factory = NULL;
diff --git a/dlls/xaudio2_7/xaudio_private.h b/dlls/xaudio2_7/xaudio_private.h
index 7772a5b..cba8306 100644
--- a/dlls/xaudio2_7/xaudio_private.h
+++ b/dlls/xaudio2_7/xaudio_private.h
@@ -150,3 +150,5 @@ extern const IXAudio20Vtbl XAudio20_Vtbl DECLSPEC_HIDDEN;
 extern const IXAudio20SourceVoiceVtbl XAudio20SourceVoice_Vtbl DECLSPEC_HIDDEN;
 extern const IXAudio20SubmixVoiceVtbl XAudio20SubmixVoice_Vtbl DECLSPEC_HIDDEN;
 extern const IXAudio20MasteringVoiceVtbl XAudio20MasteringVoice_Vtbl DECLSPEC_HIDDEN;
+
+extern IClassFactory *make_xapo_factory(REFCLSID clsid, DWORD version);
-- 
2.6.2





More information about the wine-patches mailing list