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