[AVIFIL32] Sync with Wine 3.0. CORE-14225
authorAmine Khaldi <amine.khaldi@reactos.org>
Thu, 18 Jan 2018 23:04:19 +0000 (00:04 +0100)
committerAmine Khaldi <amine.khaldi@reactos.org>
Thu, 18 Jan 2018 23:04:19 +0000 (00:04 +0100)
dll/win32/avifil32/CMakeLists.txt
dll/win32/avifil32/avifil32.idl
dll/win32/avifil32/avifile_ifaces.idl [deleted file]
dll/win32/avifil32/avifile_private.h
dll/win32/avifil32/factory.c
dll/win32/avifil32/getframe.c
media/doc/README.WINE

index 303cc83..19fc0d3 100644 (file)
@@ -5,7 +5,6 @@ add_definitions(-D_WIN32_WINNT=0x600)
 add_definitions(-D__WINESRC__ -DENTRY_PREFIX=avifil32_)
 include_directories(${REACTOS_SOURCE_DIR}/sdk/include/reactos/wine)
 spec2def(avifil32.dll avifil32.spec ADD_IMPORTLIB)
 add_definitions(-D__WINESRC__ -DENTRY_PREFIX=avifil32_)
 include_directories(${REACTOS_SOURCE_DIR}/sdk/include/reactos/wine)
 spec2def(avifil32.dll avifil32.spec ADD_IMPORTLIB)
-add_rpcproxy_files(avifil32.idl)
 
 list(APPEND SOURCE
     acmstream.c
 
 list(APPEND SOURCE
     acmstream.c
@@ -18,14 +17,12 @@ list(APPEND SOURCE
     icmstream.c
     tmpfile.c
     wavfile.c
     icmstream.c
     tmpfile.c
     wavfile.c
-    ${CMAKE_CURRENT_BINARY_DIR}/proxy.dlldata.c
     avifile_private.h)
 
 add_library(avifil32 SHARED
     ${SOURCE}
     guid.c
     rsrc.rc
     avifile_private.h)
 
 add_library(avifil32 SHARED
     ${SOURCE}
     guid.c
     rsrc.rc
-    ${CMAKE_CURRENT_BINARY_DIR}/avifil32_p.c
     ${CMAKE_CURRENT_BINARY_DIR}/avifil32.def)
 
 set_module_type(avifil32 win32dll)
     ${CMAKE_CURRENT_BINARY_DIR}/avifil32.def)
 
 set_module_type(avifil32 win32dll)
index e23c176..1f50f15 100644 (file)
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
-#pragma makedep proxy
 #pragma makedep register
 
 #pragma makedep register
 
-#include "avifile_ifaces.idl"
-
-[
-    helpstring("IAVIStream & IAVIFile Proxy"),
-    threading(both),
-    uuid(0002000d-0000-0000-c000-000000000046)
-]
-coclass PSFactoryBuffer { interface IFactoryBuffer; }
-
 [
     helpstring("Microsoft AVI Files"),
 [
     helpstring("Microsoft AVI Files"),
-    threading(both),
+    threading(apartment),
     uuid(00020000-0000-0000-C000-000000000046)
 ]
 coclass AVIFile { interface IAVIFile; }
 
 [
     helpstring("AVI Compressed Stream"),
     uuid(00020000-0000-0000-C000-000000000046)
 ]
 coclass AVIFile { interface IAVIFile; }
 
 [
     helpstring("AVI Compressed Stream"),
-    threading(both),
+    threading(apartment),
     uuid(00020001-0000-0000-c000-000000000046)
 ]
 coclass ICMStream { interface IAVIStream; }
 
 [
     helpstring("Microsoft Wave File"),
     uuid(00020001-0000-0000-c000-000000000046)
 ]
 coclass ICMStream { interface IAVIStream; }
 
 [
     helpstring("Microsoft Wave File"),
-    threading(both),
+    threading(apartment),
     uuid(00020003-0000-0000-c000-000000000046)
 ]
 coclass WAVFile { interface IAVIFile; }
 
     uuid(00020003-0000-0000-c000-000000000046)
 ]
 coclass WAVFile { interface IAVIFile; }
 
+[
+    helpstring("IAVIStream & IAVIFile Proxy"),
+    threading(apartment),
+    uuid(0002000d-0000-0000-c000-000000000046)
+]
+coclass AVIProxy { }
+
 [
     helpstring("ACM Compressed Audio Stream"),
 [
     helpstring("ACM Compressed Audio Stream"),
-    threading(both),
+    threading(apartment),
     uuid(0002000f-0000-0000-c000-000000000046)
 ]
 coclass ACMStream { interface IAVIStream; }
     uuid(0002000f-0000-0000-c000-000000000046)
 ]
 coclass ACMStream { interface IAVIStream; }
diff --git a/dll/win32/avifil32/avifile_ifaces.idl b/dll/win32/avifil32/avifile_ifaces.idl
deleted file mode 100644 (file)
index f9280e5..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Proxy support for avifil32
- *
- * Copyright 2016 Dmitry Timoshkov
- *
- * 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
- */
-
-/*
- * These interface descriptions are supposed to be used for automatic proxy
- * generation by an IDL compiler.
- *
- * While it's possible to convert include/vfw.h to an .idl, that's proved to
- * be a major waste of an effort because the resulting interface descriptions
- * can't be used for automatic proxy generation since they are not compatible
- * with IDL compiler restrictions for proxies, and fixing them up would make
- * generated vfw.h source incompatible with PSDK's equivalent.
- */
-
-import "wtypes.idl";
-import "unknwn.idl";
-
-typedef struct _AVISTREAMINFOW
-{
-    DWORD fccType;
-    DWORD fccHandler;
-    DWORD dwFlags;
-    DWORD dwCaps;
-    WORD  wPriority;
-    WORD  wLanguage;
-    DWORD dwScale;
-    DWORD dwRate;
-    DWORD dwStart;
-    DWORD dwLength;
-    DWORD dwInitialFrames;
-    DWORD dwSuggestedBufferSize;
-    DWORD dwQuality;
-    DWORD dwSampleSize;
-    RECT  rcFrame;
-    DWORD dwEditCount;
-    DWORD dwFormatChangeCount;
-    WCHAR szName[64];
-} AVISTREAMINFOW;
-
-[
-    object,
-    uuid(00020021-0000-0000-c000-000000000046)
-]
-interface IAVIStream : IUnknown
-{
-    HRESULT Create(LPARAM lParam1, LPARAM lParam2);
-    HRESULT Info(AVISTREAMINFOW *psi, LONG lSize);
-    LONG FindSample(LONG lPos, LONG lFlags);
-    HRESULT ReadFormat(LONG lPos, [out,size_is(*lpcbFormat)] char *lpFormat, [in,out] LONG *lpcbFormat);
-    HRESULT SetFormat(LONG lPos, [in,size_is(cbFormat)] char *lpFormat, LONG cbFormat);
-    HRESULT Read(LONG lStart, LONG lSamples, [out,size_is(cbBuffer)] char *lpBuffer, LONG cbBuffer, LONG *plBytes, LONG *plSamples);
-    HRESULT Write(LONG lStart, LONG lSamples, [in,size_is(cbBuffer)] char *lpBuffer, LONG cbBuffer, DWORD dwFlags, LONG *plSampWritten, LONG *plBytesWritten);
-    HRESULT Delete(LONG lStart, LONG lSamples);
-    HRESULT ReadData(DWORD fcc, [out,size_is(*lpcbBuffer)] char *lpBuffer, [in,out] LONG *lpcbBuffer);
-    HRESULT WriteData(DWORD fcc, [in,size_is(cbBuffer)] char *lpBuffer, LONG cbBuffer);
-    HRESULT SetInfo(AVISTREAMINFOW *plInfo, LONG cbInfo);
-};
-
-typedef struct _AVIFILEINFOW
-{
-    DWORD dwMaxBytesPerSec;
-    DWORD dwFlags;
-    DWORD dwCaps;
-    DWORD dwStreams;
-    DWORD dwSuggestedBufferSize;
-    DWORD dwWidth;
-    DWORD dwHeight;
-    DWORD dwScale;
-    DWORD dwRate;
-    DWORD dwLength;
-    DWORD dwEditCount;
-    WCHAR szFileType[64];
-} AVIFILEINFOW;
-
-[
-    object,
-    uuid(00020020-0000-0000-c000-000000000046)
-]
-interface IAVIFile : IUnknown
-{
-    HRESULT Info(AVIFILEINFOW *pfi, LONG lSize);
-    HRESULT GetStream(IAVIStream **ppStream, DWORD fccType, LONG lParam);
-    HRESULT CreateStream(IAVIStream **ppStream, AVISTREAMINFOW *psi);
-    HRESULT WriteData(DWORD fcc, [in,size_is(cbBuffer)] char *lpBuffer, LONG cbBuffer);
-    HRESULT ReadData(DWORD fcc, [out,size_is(*lpcbBuffer)] char *lpBuffer, [in,out] LONG *lpcbBuffer);
-    HRESULT EndRecord(void);
-    HRESULT DeleteStream(DWORD fccType, LONG lParam);
-};
index cf03c25..fed5850 100644 (file)
@@ -69,6 +69,5 @@ extern PGETFRAME AVIFILE_CreateGetFrame(PAVISTREAM pstream) DECLSPEC_HIDDEN;
 extern PAVIFILE  AVIFILE_CreateAVITempFile(int nStreams, const PAVISTREAM *ppStreams) DECLSPEC_HIDDEN;
 
 extern LPCWSTR  AVIFILE_BasenameW(LPCWSTR szFileName) DECLSPEC_HIDDEN;
 extern PAVIFILE  AVIFILE_CreateAVITempFile(int nStreams, const PAVISTREAM *ppStreams) DECLSPEC_HIDDEN;
 
 extern LPCWSTR  AVIFILE_BasenameW(LPCWSTR szFileName) DECLSPEC_HIDDEN;
-extern HRESULT WINAPI avifil32_DllGetClassObject(REFCLSID pclsid, REFIID piid, LPVOID *ppv) DECLSPEC_HIDDEN;
 
 #endif /* __AVIFILE_PRIVATE_H */
 
 #endif /* __AVIFILE_PRIVATE_H */
index 0ef0e33..5689241 100644 (file)
@@ -166,18 +166,12 @@ LPCWSTR AVIFILE_BasenameW(LPCWSTR szPath)
  */
 HRESULT WINAPI DllGetClassObject(REFCLSID pclsid, REFIID piid, LPVOID *ppv)
 {
  */
 HRESULT WINAPI DllGetClassObject(REFCLSID pclsid, REFIID piid, LPVOID *ppv)
 {
-  HRESULT hr;
-
   TRACE("(%s,%s,%p)\n", debugstr_guid(pclsid), debugstr_guid(piid), ppv);
 
   if (pclsid == NULL || piid == NULL || ppv == NULL)
     return E_FAIL;
 
   TRACE("(%s,%s,%p)\n", debugstr_guid(pclsid), debugstr_guid(piid), ppv);
 
   if (pclsid == NULL || piid == NULL || ppv == NULL)
     return E_FAIL;
 
-  hr = AVIFILE_CreateClassFactory(pclsid,piid,ppv);
-  if (SUCCEEDED(hr))
-    return hr;
-
-  return avifil32_DllGetClassObject(pclsid,piid,ppv);
+  return AVIFILE_CreateClassFactory(pclsid,piid,ppv);
 }
 
 /*****************************************************************************
 }
 
 /*****************************************************************************
index 06ac404..1229876 100644 (file)
@@ -394,6 +394,8 @@ static HRESULT WINAPI IGetFrame_fnSetFormat(IGetFrame *iface,
           lpbi->biSize + lpbi->biClrUsed * sizeof(RGBQUAD));
     if (lpbi->biBitCount <= 8)
       ICDecompressGetPalette(This->hic, This->lpInFormat, This->lpOutFormat);
           lpbi->biSize + lpbi->biClrUsed * sizeof(RGBQUAD));
     if (lpbi->biBitCount <= 8)
       ICDecompressGetPalette(This->hic, This->lpInFormat, This->lpOutFormat);
+
+    return AVIERR_OK;
   } else {
     if (bBestDisplay) {
       ICGetDisplayFormat(This->hic, This->lpInFormat,
   } else {
     if (bBestDisplay) {
       ICGetDisplayFormat(This->hic, This->lpInFormat,
@@ -403,64 +405,64 @@ static HRESULT WINAPI IGetFrame_fnSetFormat(IGetFrame *iface,
       AVIFILE_CloseCompressor(This);
       return AVIERR_NOCOMPRESSOR;
     }
       AVIFILE_CloseCompressor(This);
       return AVIERR_NOCOMPRESSOR;
     }
-  }
 
 
-  /* check output format */
-  if (This->lpOutFormat->biClrUsed == 0 &&
-      This->lpOutFormat->biBitCount <= 8)
-    This->lpOutFormat->biClrUsed = 1u << This->lpOutFormat->biBitCount;
-  if (This->lpOutFormat->biSizeImage == 0 &&
-      This->lpOutFormat->biCompression == BI_RGB) {
-    This->lpOutFormat->biSizeImage =
-      DIBWIDTHBYTES(*This->lpOutFormat) * This->lpOutFormat->biHeight;
-  }
+    /* check output format */
+    if (This->lpOutFormat->biClrUsed == 0 &&
+       This->lpOutFormat->biBitCount <= 8)
+      This->lpOutFormat->biClrUsed = 1u << This->lpOutFormat->biBitCount;
+    if (This->lpOutFormat->biSizeImage == 0 &&
+       This->lpOutFormat->biCompression == BI_RGB) {
+      This->lpOutFormat->biSizeImage =
+       DIBWIDTHBYTES(*This->lpOutFormat) * This->lpOutFormat->biHeight;
+    }
 
 
-  if (lpBits == NULL) {
-    DWORD size = This->lpOutFormat->biClrUsed * sizeof(RGBQUAD);
+    if (lpBits == NULL) {
+      DWORD size = This->lpOutFormat->biClrUsed * sizeof(RGBQUAD);
 
 
-    size += This->lpOutFormat->biSize + This->lpOutFormat->biSizeImage;
-    This->lpOutFormat = HeapReAlloc(GetProcessHeap(), 0, This->lpOutFormat, size);
-    if (This->lpOutFormat == NULL) {
-      AVIFILE_CloseCompressor(This);
-      return AVIERR_MEMORY;
+      size += This->lpOutFormat->biSize + This->lpOutFormat->biSizeImage;
+      This->lpOutFormat = HeapReAlloc(GetProcessHeap(), 0, This->lpOutFormat, size);
+      if (This->lpOutFormat == NULL) {
+       AVIFILE_CloseCompressor(This);
+       return AVIERR_MEMORY;
+      }
+      This->lpOutBuffer = DIBPTR(This->lpOutFormat);
+    } else
+      This->lpOutBuffer = lpBits;
+
+    /* for user size was irrelevant */
+    if (dx == -1)
+      dx = This->lpOutFormat->biWidth;
+    if (dy == -1)
+      dy = This->lpOutFormat->biHeight;
+
+    /* need to resize? */
+    if (x != 0 || y != 0) {
+      if (dy == This->lpOutFormat->biHeight &&
+         dx == This->lpOutFormat->biWidth)
+       This->bResize = FALSE;
+      else
+       This->bResize = TRUE;
     }
     }
-    This->lpOutBuffer = DIBPTR(This->lpOutFormat);
-  } else
-    This->lpOutBuffer = lpBits;
-
-  /* for user size was irrelevant */
-  if (dx == -1)
-    dx = This->lpOutFormat->biWidth;
-  if (dy == -1)
-    dy = This->lpOutFormat->biHeight;
-
-  /* need to resize? */
-  if (x != 0 || y != 0) {
-    if (dy == This->lpOutFormat->biHeight &&
-        dx == This->lpOutFormat->biWidth)
-      This->bResize = FALSE;
-    else
-      This->bResize = TRUE;
-  }
 
 
-  if (This->bResize) {
-    This->x  = x;
-    This->y  = y;
-    This->dx = dx;
-    This->dy = dy;
-
-    if (ICDecompressExBegin(This->hic,0,This->lpInFormat,This->lpInBuffer,0,
-                            0,This->lpInFormat->biWidth,
-                            This->lpInFormat->biHeight,This->lpOutFormat,
-                            This->lpOutBuffer, x, y, dx, dy) == ICERR_OK)
+    if (This->bResize) {
+      This->x  = x;
+      This->y  = y;
+      This->dx = dx;
+      This->dy = dy;
+
+      if (ICDecompressExBegin(This->hic,0,This->lpInFormat,This->lpInBuffer,0,
+                             0,This->lpInFormat->biWidth,
+                             This->lpInFormat->biHeight,This->lpOutFormat,
+                             This->lpOutBuffer, x, y, dx, dy) == ICERR_OK)
+       return AVIERR_OK;
+    } else if (ICDecompressBegin(This->hic, This->lpInFormat,
+                                This->lpOutFormat) == ICERR_OK)
       return AVIERR_OK;
       return AVIERR_OK;
-  } else if (ICDecompressBegin(This->hic, This->lpInFormat,
-                               This->lpOutFormat) == ICERR_OK)
-    return AVIERR_OK;
 
 
-  AVIFILE_CloseCompressor(This);
+    AVIFILE_CloseCompressor(This);
 
 
-  return AVIERR_COMPRESSOR;
+    return AVIERR_COMPRESSOR;
+  }
 }
 
 static const struct IGetFrameVtbl igetframeVtbl = {
 }
 
 static const struct IGetFrameVtbl igetframeVtbl = {
index 3d7771d..239c5fd 100644 (file)
@@ -48,7 +48,7 @@ reactos/dll/win32/advpack             # Synced to WineStaging-2.9
 reactos/dll/win32/atl                 # Synced to Wine-3.0
 reactos/dll/win32/atl80               # Synced to Wine-3.0
 reactos/dll/win32/atl100              # Synced to Wine-3.0
 reactos/dll/win32/atl                 # Synced to Wine-3.0
 reactos/dll/win32/atl80               # Synced to Wine-3.0
 reactos/dll/win32/atl100              # Synced to Wine-3.0
-reactos/dll/win32/avifil32            # Synced to WineStaging-2.9
+reactos/dll/win32/avifil32            # Synced to Wine-3.0
 reactos/dll/win32/bcrypt              # Synced to WineStaging-1.9.23
 reactos/dll/win32/browseui            # Out of sync
 reactos/dll/win32/cabinet             # Synced to WineStaging-2.9
 reactos/dll/win32/bcrypt              # Synced to WineStaging-1.9.23
 reactos/dll/win32/browseui            # Out of sync
 reactos/dll/win32/cabinet             # Synced to WineStaging-2.9