"Dmitry Timoshkov" <[EMAIL PROTECTED]> writes:
> "Michael "Guennewig"" <[EMAIL PROTECTED]> wrote:
>
>> Changelog:
>> - Implemented Mo* methods in msdmo.dll
>> - Added stubs for DMORegister, DMOUnregister, DMOEnum, DMOGetTypes,
>> DMOGetName.
>> - Added version resources.
>
> Please use a usual Wine scheme for defining version resources,
> see existing resources for details.
Adapted it and also added "rsrc.res" to ".cvsignore". So here is the
new resulting patch.
Michael G�nnewig
Index: dlls/msdmo/.cvsignore
===================================================================
RCS file: /home/wine/wine/dlls/msdmo/.cvsignore,v
retrieving revision 1.3
diff -d -u -r1.3 .cvsignore
--- dlls/msdmo/.cvsignore 12 Dec 2002 22:04:06 -0000 1.3
+++ dlls/msdmo/.cvsignore 20 Jul 2003 17:47:38 -0000
@@ -2,3 +2,4 @@
msdmo.dll.dbg.c
msdmo.spec.c
msdmo.spec.def
+rsrc.res
\ No newline at end of file
Index: dlls/msdmo/Makefile.in
===================================================================
RCS file: /home/wine/wine/dlls/msdmo/Makefile.in,v
retrieving revision 1.6
diff -d -u -r1.6 Makefile.in
--- dlls/msdmo/Makefile.in 17 May 2002 03:37:13 -0000 1.6
+++ dlls/msdmo/Makefile.in 20 Jul 2003 17:47:38 -0000
@@ -3,6 +3,7 @@
SRCDIR = @srcdir@
VPATH = @srcdir@
MODULE = msdmo.dll
+IMPORTS = ole32 kernel32
LDDLLFLAGS = @LDDLLFLAGS@
SYMBOLFILE = $(MODULE).tmp.o
@@ -11,6 +12,9 @@
dmoreg.c \
dmort.c \
msdmo_main.c
+
+RC_SRCS = \
+ rsrc.rc
@MAKE_DLL_RULES@
Index: dlls/msdmo/dmoreg.c
===================================================================
RCS file: /home/wine/wine/dlls/msdmo/dmoreg.c,v
retrieving revision 1.2
diff -d -u -r1.2 dmoreg.c
--- dlls/msdmo/dmoreg.c 22 Mar 2002 19:19:23 -0000 1.2
+++ dlls/msdmo/dmoreg.c 20 Jul 2003 17:47:39 -0000
@@ -1 +1,83 @@
-/* Code removed because of Microsoft EULA concerns. */
+/*
+ * Copyright (C) 2003 Michael G�nnewig
+ *
+ * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#define COM_NO_WINDOWS_H
+#include "winbase.h"
+#include "objbase.h"
+#include "mediaobj.h"
+#include "dmoreg.h"
+
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(msdmo);
+
+/***********************************************************************/
+
+HRESULT WINAPI DMORegister(LPCWSTR a, REFCLSID b, REFGUID c, DWORD d, DWORD e,
+ const DMO_PARTIAL_MEDIATYPE* f,
+ DWORD g, const DMO_PARTIAL_MEDIATYPE* h)
+{
+ FIXME("(%p,%p,%p,%lu,%lu,%p,%lu,%p),stub!\n",a,b,c,d,e,f,g,h);
+
+ return E_NOTIMPL;
+}
+
+HRESULT WINAPI DMOUnregister(REFCLSID a,REFGUID b)
+{
+ FIXME("(%p,%p),stub!\n",a,b);
+
+ return E_NOTIMPL;
+}
+
+HRESULT WINAPI DMOEnum(REFGUID guidCategory, DWORD dwFlags, DWORD cInTypes,
+ const DMO_PARTIAL_MEDIATYPE*pInTypes, DWORD cOutTypes,
+ const DMO_PARTIAL_MEDIATYPE*pOutTypes,IEnumDMO**ppEnum)
+{
+ FIXME("(%s,0x%lX,%lu,%p,%lu,%p,%p),stub!\n",debugstr_guid(guidCategory),
+ dwFlags,cInTypes,pInTypes,cOutTypes,pOutTypes,ppEnum);
+
+ if (guidCategory == NULL || ppEnum == NULL)
+ return E_FAIL;
+ if (dwFlags != 0 && dwFlags != DMO_ENUMF_INCLUDE_KEYED)
+ return E_FAIL;
+
+ *ppEnum = NULL;
+
+ return E_NOTIMPL;
+}
+
+HRESULT WINAPI DMOGetTypes(REFCLSID a, unsigned long b, unsigned long* c,
+ DMO_PARTIAL_MEDIATYPE* d, unsigned long e,
+ unsigned long* f, DMO_PARTIAL_MEDIATYPE* g)
+{
+ FIXME("(%p,%lu,%p,%p,%lu,%p,%p),stub!\n",a,b,c,d,e,f,g);
+
+ return E_NOTIMPL;
+}
+
+HRESULT WINAPI DMOGetName(REFCLSID pclsid, WCHAR* pstr)
+{
+ FIXME("(%s,%p),stub!\n", debugstr_guid(pclsid), pstr);
+
+ if (pclsid == NULL || pstr == NULL)
+ return E_FAIL;
+
+ pstr[0] = '\0';
+
+ return E_NOTIMPL;
+}
Index: dlls/msdmo/dmort.c
===================================================================
RCS file: /home/wine/wine/dlls/msdmo/dmort.c,v
retrieving revision 1.2
diff -d -u -r1.2 dmort.c
--- dlls/msdmo/dmort.c 22 Mar 2002 19:19:23 -0000 1.2
+++ dlls/msdmo/dmort.c 20 Jul 2003 17:47:40 -0000
@@ -1 +1,178 @@
-/* Code removed because of Microsoft EULA concerns. */
+/*
+ * Copyright (C) 2003 Michael G�nnewig
+ *
+ * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#define COM_NO_WINDOWS_H
+#include "winbase.h"
+#include "objbase.h"
+#include "mediaobj.h"
+#include "dmort.h"
+
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(msdmo);
+
+/***********************************************************************
+ * MoCreateMediaType (MSDMO.@)
+ */
+HRESULT WINAPI MoCreateMediaType(DMO_MEDIA_TYPE** ppmedia, DWORD cbFormat)
+{
+ HRESULT hr;
+
+ TRACE("(%p,%lu)\n", ppmedia, cbFormat);
+
+ if (ppmedia == NULL)
+ return E_POINTER;
+
+ *ppmedia = CoTaskMemAlloc(sizeof(DMO_MEDIA_TYPE));
+ if (*ppmedia == NULL)
+ return E_OUTOFMEMORY;
+
+ hr = MoInitMediaType(*ppmedia, cbFormat);
+ if (FAILED(hr)) {
+ CoTaskMemFree(*ppmedia);
+ *ppmedia = NULL;
+ }
+
+ return hr;
+}
+
+/***********************************************************************
+ * MoInitMediaType (MSDMO.@)
+ */
+HRESULT WINAPI MoInitMediaType(DMO_MEDIA_TYPE* pmedia, DWORD cbFormat)
+{
+ TRACE("(%p,%lu)\n", pmedia,cbFormat);
+
+ if (pmedia == NULL)
+ return E_POINTER;
+
+ memset(pmedia, 0, sizeof(DMO_MEDIA_TYPE));
+
+ if (cbFormat > 0) {
+ pmedia->pbFormat = CoTaskMemAlloc(cbFormat);
+ if (pmedia->pbFormat == NULL)
+ return E_OUTOFMEMORY;
+
+ pmedia->cbFormat = cbFormat;
+ }
+
+ return S_OK;
+}
+
+/***********************************************************************
+ * MoDeleteMediaType (MSDMO.@)
+ */
+HRESULT WINAPI MoDeleteMediaType(DMO_MEDIA_TYPE* pmedia)
+{
+ TRACE("(%p)\n", pmedia);
+
+ if (pmedia == NULL)
+ return E_POINTER;
+
+ MoFreeMediaType(pmedia);
+ CoTaskMemFree(pmedia);
+
+ return S_OK;
+}
+
+/***********************************************************************
+ * MoFreeMediaType (MSDMO.@)
+ */
+HRESULT WINAPI MoFreeMediaType(DMO_MEDIA_TYPE* pmedia)
+{
+ TRACE("(%p)\n", pmedia);
+
+ if (pmedia == NULL)
+ return E_POINTER;
+
+ if (pmedia->pUnk != NULL) {
+ IUnknown_Release(pmedia->pUnk);
+ pmedia->pUnk = NULL;
+ }
+
+ if (pmedia->pbFormat != NULL) {
+ CoTaskMemFree(pmedia->pbFormat);
+ pmedia->pbFormat = NULL;
+ }
+
+ return S_OK;
+}
+
+/***********************************************************************
+ * MoDuplicateMediaType (MSDMO.@)
+ */
+HRESULT WINAPI MoDuplicateMediaType(DMO_MEDIA_TYPE** ppdst,
+ const DMO_MEDIA_TYPE* psrc)
+{
+ HRESULT hr;
+
+ TRACE("(%p,%p)\n", ppdst, psrc);
+
+ if (ppdst == NULL || psrc == NULL)
+ return E_POINTER;
+
+ *ppdst = CoTaskMemAlloc(sizeof(DMO_MEDIA_TYPE));
+ if (*ppdst == NULL)
+ return E_OUTOFMEMORY;
+
+ hr = MoCopyMediaType(*ppdst, psrc);
+ if (FAILED(hr)) {
+ MoFreeMediaType(*ppdst);
+ *ppdst = NULL;
+ }
+
+ return hr;
+}
+
+/***********************************************************************
+ * MoCopyMediaType (MSDMO.@)
+ */
+HRESULT WINAPI MoCopyMediaType(DMO_MEDIA_TYPE* pdst,
+ const DMO_MEDIA_TYPE* psrc)
+{
+ TRACE("(%p,%p)\n", pdst, psrc);
+
+ if (pdst == NULL || psrc == NULL)
+ return E_POINTER;
+
+ memcpy(&pdst->majortype, &psrc->majortype, sizeof(psrc->majortype));
+ memcpy(&pdst->subtype, &psrc->subtype, sizeof(psrc->subtype));
+ memcpy(&pdst->formattype, &psrc->formattype, sizeof(psrc->formattype));
+
+ pdst->bFixedSizeSamples = psrc->bFixedSizeSamples;
+ pdst->bTemporalCompression = psrc->bTemporalCompression;
+ pdst->lSampleSize = psrc->lSampleSize;
+ pdst->cbFormat = psrc->cbFormat;
+
+ if (psrc->pbFormat != NULL && psrc->cbFormat > 0) {
+ pdst->pbFormat = CoTaskMemAlloc(psrc->cbFormat);
+ if (pdst->pbFormat == NULL)
+ return E_OUTOFMEMORY;
+
+ memcpy(pdst->pbFormat, psrc->pbFormat, psrc->cbFormat);
+ } else
+ pdst->pbFormat = NULL;
+
+ if (psrc->pUnk != NULL) {
+ pdst->pUnk = psrc->pUnk;
+ IUnknown_AddRef(pdst->pUnk);
+ } else
+ pdst->pUnk = NULL;
+
+ return S_OK;
+}
Index: dlls/msdmo/msdmo.spec
===================================================================
RCS file: /home/wine/wine/dlls/msdmo/msdmo.spec,v
retrieving revision 1.6
diff -d -u -r1.6 msdmo.spec
--- dlls/msdmo/msdmo.spec 21 Jun 2002 19:15:47 -0000 1.6
+++ dlls/msdmo/msdmo.spec 20 Jul 2003 17:47:40 -0000
@@ -1,15 +1,15 @@
-@ stub DMOEnum
-@ stub DMOGetName
-@ stub DMOGetTypes
-@ stub DMOGuidToStrA
-@ stub DMOGuidToStrW
-@ stub DMORegister
-@ stub DMOStrToGuidA
-@ stub DMOStrToGuidW
-@ stub DMOUnregister
-@ stub MoCopyMediaType
-@ stub MoCreateMediaType
-@ stub MoDeleteMediaType
-@ stub MoDuplicateMediaType
-@ stub MoFreeMediaType
-@ stub MoInitMediaType
+@ stdcall DMOEnum(ptr long long ptr long ptr ptr)
+@ stdcall DMOGetName(ptr wstr)
+@ stdcall DMOGetTypes(ptr long ptr ptr long ptr ptr)
+@ stub DMOGuidToStrA
+@ stub DMOGuidToStrW
+@ stdcall DMORegister(wstr ptr ptr long long ptr long ptr)
+@ stub DMOStrToGuidA
+@ stub DMOStrToGuidW
+@ stdcall DMOUnregister(ptr ptr)
+@ stdcall MoCopyMediaType(ptr ptr)
+@ stdcall MoCreateMediaType(ptr long)
+@ stdcall MoDeleteMediaType(ptr)
+@ stdcall MoDuplicateMediaType(ptr ptr)
+@ stdcall MoFreeMediaType(ptr)
+@ stdcall MoInitMediaType(ptr long)