https://git.reactos.org/?p=reactos.git;a=commitdiff;h=f1713a3c601deb2196e678...
commit f1713a3c601deb2196e67825e1958abef72c4666 Author: Amine Khaldi amine.khaldi@reactos.org AuthorDate: Fri Jan 19 00:04:19 2018 +0100 Commit: Amine Khaldi amine.khaldi@reactos.org CommitDate: Fri Jan 19 00:04:19 2018 +0100
[AVIFIL32] Sync with Wine 3.0. CORE-14225 --- dll/win32/avifil32/CMakeLists.txt | 3 - dll/win32/avifil32/avifil32.idl | 25 ++++---- dll/win32/avifil32/avifile_ifaces.idl | 105 ---------------------------------- dll/win32/avifil32/avifile_private.h | 1 - dll/win32/avifil32/factory.c | 8 +-- dll/win32/avifil32/getframe.c | 102 +++++++++++++++++---------------- media/doc/README.WINE | 2 +- 7 files changed, 65 insertions(+), 181 deletions(-)
diff --git a/dll/win32/avifil32/CMakeLists.txt b/dll/win32/avifil32/CMakeLists.txt index 303cc83b04..19fc0d3324 100644 --- a/dll/win32/avifil32/CMakeLists.txt +++ b/dll/win32/avifil32/CMakeLists.txt @@ -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_rpcproxy_files(avifil32.idl)
list(APPEND SOURCE acmstream.c @@ -18,14 +17,12 @@ list(APPEND SOURCE 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 - ${CMAKE_CURRENT_BINARY_DIR}/avifil32_p.c ${CMAKE_CURRENT_BINARY_DIR}/avifil32.def)
set_module_type(avifil32 win32dll) diff --git a/dll/win32/avifil32/avifil32.idl b/dll/win32/avifil32/avifil32.idl index e23c176051..1f50f154ae 100644 --- a/dll/win32/avifil32/avifil32.idl +++ b/dll/win32/avifil32/avifil32.idl @@ -18,42 +18,39 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
-#pragma makedep proxy #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"), - threading(both), + threading(apartment), 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"), - threading(both), + threading(apartment), 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"), - threading(both), + threading(apartment), 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 index f9280e5728..0000000000 --- a/dll/win32/avifil32/avifile_ifaces.idl +++ /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); -}; diff --git a/dll/win32/avifil32/avifile_private.h b/dll/win32/avifil32/avifile_private.h index cf03c2572e..fed58504a5 100644 --- a/dll/win32/avifil32/avifile_private.h +++ b/dll/win32/avifil32/avifile_private.h @@ -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 HRESULT WINAPI avifil32_DllGetClassObject(REFCLSID pclsid, REFIID piid, LPVOID *ppv) DECLSPEC_HIDDEN;
#endif /* __AVIFILE_PRIVATE_H */ diff --git a/dll/win32/avifil32/factory.c b/dll/win32/avifil32/factory.c index 0ef0e338a9..5689241d67 100644 --- a/dll/win32/avifil32/factory.c +++ b/dll/win32/avifil32/factory.c @@ -166,18 +166,12 @@ LPCWSTR AVIFILE_BasenameW(LPCWSTR szPath) */ 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;
- hr = AVIFILE_CreateClassFactory(pclsid,piid,ppv); - if (SUCCEEDED(hr)) - return hr; - - return avifil32_DllGetClassObject(pclsid,piid,ppv); + return AVIFILE_CreateClassFactory(pclsid,piid,ppv); }
/***************************************************************************** diff --git a/dll/win32/avifil32/getframe.c b/dll/win32/avifil32/getframe.c index 06ac404528..1229876506 100644 --- a/dll/win32/avifil32/getframe.c +++ b/dll/win32/avifil32/getframe.c @@ -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); + + return AVIERR_OK; } 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; } - }
- /* 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; - } 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 = { diff --git a/media/doc/README.WINE b/media/doc/README.WINE index 3d7771da6c..239c5fd0d8 100644 --- a/media/doc/README.WINE +++ b/media/doc/README.WINE @@ -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/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