Aric Stewart : strmbase: Implement BasicAudio.
Alexandre Julliard
julliard at winehq.org
Mon Apr 30 14:13:07 CDT 2012
Module: wine
Branch: master
Commit: a01d6be69fb33d91eae1d03bcac3ae6eb1095870
URL: http://source.winehq.org/git/wine.git/?a=commit;h=a01d6be69fb33d91eae1d03bcac3ae6eb1095870
Author: Aric Stewart <aric at codeweavers.com>
Date: Fri Apr 27 13:47:39 2012 -0500
strmbase: Implement BasicAudio.
---
dlls/strmbase/Makefile.in | 1 +
dlls/strmbase/audio.c | 86 +++++++++++++++++++++++++++++++++++++++++++++
include/wine/strmbase.h | 16 ++++++++
3 files changed, 103 insertions(+), 0 deletions(-)
diff --git a/dlls/strmbase/Makefile.in b/dlls/strmbase/Makefile.in
index f89c2c0..3ac7c56 100644
--- a/dlls/strmbase/Makefile.in
+++ b/dlls/strmbase/Makefile.in
@@ -1,6 +1,7 @@
MODULE = libstrmbase.a
C_SRCS = \
+ audio.c \
dispatch.c \
dllfunc.c \
enumpins.c \
diff --git a/dlls/strmbase/audio.c b/dlls/strmbase/audio.c
new file mode 100644
index 0000000..be99583
--- /dev/null
+++ b/dlls/strmbase/audio.c
@@ -0,0 +1,86 @@
+/*
+ * Generic Implementation of strmbase audio classes
+ *
+ * Copyright 2012 Aric Stewart, 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
+ */
+
+#define COBJMACROS
+
+#include <assert.h>
+#include "dshow.h"
+#include "uuids.h"
+#include "vfwmsgs.h"
+#include "wine/debug.h"
+#include "wine/unicode.h"
+#include "wine/strmbase.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(strmbase);
+
+static inline BasicAudio *impl_from_IBasicAudio(IBasicAudio *iface)
+{
+ return CONTAINING_RECORD(iface, BasicAudio, IBasicAudio_iface);
+}
+
+HRESULT WINAPI BasicAudio_Init(BasicAudio *pBasicAudio, const IBasicAudioVtbl *lpVtbl)
+{
+ pBasicAudio->IBasicAudio_iface.lpVtbl = lpVtbl;
+ BaseDispatch_Init(&pBasicAudio->baseDispatch, &IID_IBasicAudio);
+
+ return S_OK;
+}
+
+HRESULT WINAPI BasicAudio_Destroy(BasicAudio *pBasicAudio)
+{
+ return BaseDispatch_Destroy(&pBasicAudio->baseDispatch);
+}
+
+HRESULT WINAPI BasicAudioImpl_GetTypeInfoCount(IBasicAudio *iface, UINT *pctinfo)
+{
+ BasicAudio *This = impl_from_IBasicAudio(iface);
+
+ return BaseDispatchImpl_GetTypeInfoCount(&This->baseDispatch, pctinfo);
+}
+
+HRESULT WINAPI BasicAudioImpl_GetTypeInfo(IBasicAudio *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
+{
+ BasicAudio *This = impl_from_IBasicAudio(iface);
+
+ return BaseDispatchImpl_GetTypeInfo(&This->baseDispatch, &IID_NULL, iTInfo, lcid, ppTInfo);
+}
+
+HRESULT WINAPI BasicAudioImpl_GetIDsOfNames(IBasicAudio *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
+{
+ BasicAudio *This = impl_from_IBasicAudio(iface);
+
+ return BaseDispatchImpl_GetIDsOfNames(&This->baseDispatch, riid, rgszNames, cNames, lcid, rgDispId);
+}
+
+HRESULT WINAPI BasicAudioImpl_Invoke(IBasicAudio *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExepInfo, UINT *puArgErr)
+{
+ BasicAudio *This = impl_from_IBasicAudio(iface);
+ HRESULT hr = S_OK;
+ ITypeInfo *pTypeInfo;
+
+ hr = BaseDispatchImpl_GetTypeInfo(&This->baseDispatch, riid, 1, lcid, &pTypeInfo);
+ if (SUCCEEDED(hr))
+ {
+ hr = ITypeInfo_Invoke(pTypeInfo, &This->IBasicAudio_iface, dispIdMember, wFlags, pDispParams, pVarResult, pExepInfo, puArgErr);
+ ITypeInfo_Release(pTypeInfo);
+ }
+
+ return hr;
+}
diff --git a/include/wine/strmbase.h b/include/wine/strmbase.h
index 3e749a5..da6475d 100644
--- a/include/wine/strmbase.h
+++ b/include/wine/strmbase.h
@@ -635,6 +635,22 @@ HRESULT WINAPI BaseRendererImpl_ClearPendingSample(BaseRenderer *iface);
HRESULT WINAPI BaseRenderer_Init(BaseRenderer *This, const IBaseFilterVtbl *Vtbl, IUnknown *pUnkOuter, const CLSID *pClsid, DWORD_PTR DebugInfo, const BaseRendererFuncTable* pBaseFuncsTable);
+#ifdef __IBasicAudio_FWD_DEFINED__
+typedef struct tagBasicAudio
+{
+ IBasicAudio IBasicAudio_iface;
+ BaseDispatch baseDispatch;
+} BasicAudio;
+
+HRESULT WINAPI BasicAudio_Init(BasicAudio *This, const IBasicAudioVtbl *Vtbl);
+HRESULT WINAPI BasicAudio_Destroy(BasicAudio *pBasicAudio);
+
+HRESULT WINAPI BasicAudioImpl_GetTypeInfoCount(IBasicAudio *iface, UINT*pctinfo);
+HRESULT WINAPI BasicAudioImpl_GetTypeInfo(IBasicAudio *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
+HRESULT WINAPI BasicAudioImpl_GetIDsOfNames(IBasicAudio *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
+HRESULT WINAPI BasicAudioImpl_Invoke(IBasicAudio *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExepInfo, UINT *puArgErr);
+#endif
+
/* Dll Functions */
BOOL WINAPI STRMBASE_DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpv);
HRESULT WINAPI STRMBASE_DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv);
More information about the wine-cvs
mailing list