Add support for ICM_GETINFO in iccvid codec (based on msrle32).
diff --git a/dlls/iccvid/iccvid.c b/dlls/iccvid/iccvid.c index e1b1ad7..773b851 100644 --- a/dlls/iccvid/iccvid.c +++ b/dlls/iccvid/iccvid.c
@@ -47,13 +47,15 @@ #include "winuser.h" #include "commdlg.h" #include "vfw.h" - #include "mmsystem.h" +#include "iccvid_private.h" #include "wine/debug.h" WINE_DEFAULT_DEBUG_CHANNEL(iccvid); +static HINSTANCE ICCVID_hModule; + #define ICCVID_MAGIC mmioFOURCC('c', 'v', 'i', 'd') #define DBUG 0 @@ -910,8 +912,27 @@ return 1; } +static LRESULT ICCVID_GetInfo( ICCVID_Info *info, ICINFO *icinfo, DWORD dwSize ) +{ + if (!icinfo) return sizeof(ICINFO); + if (dwSize < sizeof(ICINFO)) return 0; + + icinfo->dwSize = sizeof(ICINFO); + icinfo->fccType = ICTYPE_VIDEO; + icinfo->fccHandler = info ? info->dwMagic : ICCVID_MAGIC; + icinfo->dwFlags = 0; + icinfo->dwVersion = 0x00010000; /* Version 1.0 build 0 */ + icinfo->dwVersionICM = 0x01040000; /* Version 1.4 build 0 */ + + LoadStringW(ICCVID_hModule, IDS_NAME, icinfo->szName, sizeof(icinfo->szName)/sizeof(WCHAR)); + LoadStringW(ICCVID_hModule, IDS_DESCRIPTION, icinfo->szDescription, sizeof(icinfo->szDescription)/sizeof(WCHAR)); + /* msvfw32 will fill icinfo->szDriver for us */ + + return sizeof(ICINFO); +} + LRESULT WINAPI ICCVID_DriverProc( DWORD dwDriverId, HDRVR hdrvr, UINT msg, - LONG lParam1, LONG lParam2) + LPARAM lParam1, LPARAM lParam2) { ICCVID_Info *info = (ICCVID_Info *) dwDriverId; @@ -939,6 +960,9 @@ } return (LRESULT) info; + case ICM_GETINFO: + return ICCVID_GetInfo( info, (ICINFO *)lParam1, (DWORD)lParam2 ); + case ICM_DECOMPRESS_QUERY: return ICCVID_DecompressQuery( info, (LPBITMAPINFO) lParam1, (LPBITMAPINFO) lParam2 ); @@ -963,3 +987,20 @@ } return 0; } + +BOOL WINAPI DllMain(HINSTANCE hModule, DWORD dwReason, LPVOID lpReserved) +{ + TRACE("(%p,%ld,%p)\n", hModule, dwReason, lpReserved); + + switch (dwReason) + { + case DLL_PROCESS_ATTACH: + DisableThreadLibraryCalls(hModule); + ICCVID_hModule = hModule; + break; + + case DLL_PROCESS_DETACH: + break; + } + return TRUE; +}