From b0d8e3052641f8396da3d0ccafb55bd75622f062 Mon Sep 17 00:00:00 2001 From: The Wine Synchronizer Date: Wed, 25 Apr 2007 08:21:59 +0000 Subject: [PATCH] Autosyncing with Wine HEAD svn path=/trunk/; revision=26499 --- reactos/dll/win32/msvfw32/Makefile.in | 22 - reactos/dll/win32/msvfw32/drawdib.c | 110 ++-- reactos/dll/win32/msvfw32/mciwnd.c | 41 +- reactos/dll/win32/msvfw32/msvfw32.rbuild | 13 +- reactos/dll/win32/msvfw32/msvfw32.rc | 5 - reactos/dll/win32/msvfw32/msvfw32.spec | 16 +- reactos/dll/win32/msvfw32/msvfw32_De.rc | 52 ++ reactos/dll/win32/msvfw32/msvfw32_En.rc | 51 ++ reactos/dll/win32/msvfw32/msvfw32_Fr.rc | 51 ++ reactos/dll/win32/msvfw32/msvfw32_Hu.rc | 51 ++ reactos/dll/win32/msvfw32/msvfw32_Ko.rc | 52 ++ reactos/dll/win32/msvfw32/msvfw32_No.rc | 51 ++ reactos/dll/win32/msvfw32/msvfw32_Pl.rc | 52 ++ reactos/dll/win32/msvfw32/msvfw32_Tr.rc | 53 ++ reactos/dll/win32/msvfw32/msvfw32_ros.diff | 14 + reactos/dll/win32/msvfw32/msvideo.spec | 4 +- reactos/dll/win32/msvfw32/msvideo16.c | 54 +- reactos/dll/win32/msvfw32/msvideo_main.c | 600 ++++++++++++++++---- reactos/dll/win32/msvfw32/msvideo_private.h | 31 +- reactos/dll/win32/msvfw32/rsrc.rc | 30 + reactos/dll/win32/msvfw32/vfw16.h | 2 +- 21 files changed, 1127 insertions(+), 228 deletions(-) delete mode 100644 reactos/dll/win32/msvfw32/Makefile.in delete mode 100644 reactos/dll/win32/msvfw32/msvfw32.rc create mode 100644 reactos/dll/win32/msvfw32/msvfw32_De.rc create mode 100644 reactos/dll/win32/msvfw32/msvfw32_En.rc create mode 100644 reactos/dll/win32/msvfw32/msvfw32_Fr.rc create mode 100644 reactos/dll/win32/msvfw32/msvfw32_Hu.rc create mode 100644 reactos/dll/win32/msvfw32/msvfw32_Ko.rc create mode 100644 reactos/dll/win32/msvfw32/msvfw32_No.rc create mode 100644 reactos/dll/win32/msvfw32/msvfw32_Pl.rc create mode 100644 reactos/dll/win32/msvfw32/msvfw32_Tr.rc create mode 100644 reactos/dll/win32/msvfw32/msvfw32_ros.diff create mode 100644 reactos/dll/win32/msvfw32/rsrc.rc diff --git a/reactos/dll/win32/msvfw32/Makefile.in b/reactos/dll/win32/msvfw32/Makefile.in deleted file mode 100644 index b52a912c7be..00000000000 --- a/reactos/dll/win32/msvfw32/Makefile.in +++ /dev/null @@ -1,22 +0,0 @@ -TOPSRCDIR = @top_srcdir@ -TOPOBJDIR = ../.. -SRCDIR = @srcdir@ -VPATH = @srcdir@ -MODULE = msvfw32.dll -IMPORTS = winmm comctl32 version user32 gdi32 advapi32 kernel32 ntdll -ALTNAMES = msvideo.dll -EXTRALIBS = $(LIBUNICODE) - -SPEC_SRCS16 = $(ALTNAMES:.dll=.spec) - -C_SRCS = \ - mciwnd.c \ - msvideo_main.c \ - drawdib.c - -C_SRCS16 = \ - msvideo16.c - -@MAKE_DLL_RULES@ - -### Dependencies: diff --git a/reactos/dll/win32/msvfw32/drawdib.c b/reactos/dll/win32/msvfw32/drawdib.c index fa4c92ff35a..734f0e20b49 100644 --- a/reactos/dll/win32/msvfw32/drawdib.c +++ b/reactos/dll/win32/msvfw32/drawdib.c @@ -13,18 +13,22 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA * * FIXME: Some flags are ignored * * Handle palettes */ +#include +#include #include -#include "msvideo_private.h" +#include "windef.h" +#include "winbase.h" #include "wingdi.h" #include "winuser.h" +#include "vfw.h" #include "wine/debug.h" @@ -49,7 +53,7 @@ typedef struct tagWINE_HDD { struct tagWINE_HDD* next; } WINE_HDD; -int num_colours(LPBITMAPINFOHEADER lpbi) +static int num_colours(const BITMAPINFOHEADER *lpbi) { if(lpbi->biClrUsed) return lpbi->biClrUsed; @@ -131,16 +135,10 @@ BOOL VFWAPI DrawDibEnd(HDRAWDIB hdd) whdd->hpal = 0; /* Do not free this */ whdd->hdc = 0; - if (whdd->lpbi) - { - HeapFree(GetProcessHeap(), 0, whdd->lpbi); - whdd->lpbi = NULL; - } - if (whdd->lpbiOut) - { - HeapFree(GetProcessHeap(), 0, whdd->lpbiOut); - whdd->lpbiOut = NULL; - } + HeapFree(GetProcessHeap(), 0, whdd->lpbi); + whdd->lpbi = NULL; + HeapFree(GetProcessHeap(), 0, whdd->lpbiOut); + whdd->lpbiOut = NULL; whdd->begun = FALSE; @@ -184,10 +182,10 @@ BOOL VFWAPI DrawDibBegin(HDRAWDIB hdd, BOOL ret = TRUE; WINE_HDD *whdd; - TRACE("(%p,%p,%d,%d,%p,%d,%d,0x%08lx)\n", + TRACE("(%p,%p,%d,%d,%p,%d,%d,0x%08x)\n", hdd, hdc, dxDst, dyDst, lpbi, dxSrc, dySrc, (DWORD)wFlags); - TRACE("lpbi: %ld,%ld/%ld,%d,%d,%ld,%ld,%ld,%ld,%ld,%ld\n", + TRACE("lpbi: %d,%d/%d,%d,%d,%d,%d,%d,%d,%d,%d\n", lpbi->biSize, lpbi->biWidth, lpbi->biHeight, lpbi->biPlanes, lpbi->biBitCount, lpbi->biCompression, lpbi->biSizeImage, lpbi->biXPelsPerMeter, lpbi->biYPelsPerMeter, lpbi->biClrUsed, @@ -208,7 +206,7 @@ BOOL VFWAPI DrawDibBegin(HDRAWDIB hdd, whdd->hic = ICOpen(ICTYPE_VIDEO, lpbi->biCompression, ICMODE_DECOMPRESS); if (!whdd->hic) { - WARN("Could not open IC. biCompression == 0x%08lx\n", lpbi->biCompression); + WARN("Could not open IC. biCompression == 0x%08x\n", lpbi->biCompression); ret = FALSE; } @@ -236,8 +234,8 @@ BOOL VFWAPI DrawDibBegin(HDRAWDIB hdd, if (ICDecompressBegin(whdd->hic, lpbi, whdd->lpbiOut) != ICERR_OK) ret = FALSE; - TRACE("biSizeImage == %ld\n", whdd->lpbiOut->biSizeImage); - TRACE("biCompression == %ld\n", whdd->lpbiOut->biCompression); + TRACE("biSizeImage == %d\n", whdd->lpbiOut->biSizeImage); + TRACE("biCompression == %d\n", whdd->lpbiOut->biCompression); TRACE("biBitCount == %d\n", whdd->lpbiOut->biBitCount); } } @@ -256,13 +254,17 @@ BOOL VFWAPI DrawDibBegin(HDRAWDIB hdd, /*whdd->lpvbuf = HeapAlloc(GetProcessHeap(), 0, whdd->lpbiOut->biSizeImage);*/ whdd->hMemDC = CreateCompatibleDC(hdc); - TRACE("Creating: %ld, %p\n", whdd->lpbiOut->biSize, whdd->lpvbits); + TRACE("Creating: %d, %p\n", whdd->lpbiOut->biSize, whdd->lpvbits); whdd->hDib = CreateDIBSection(whdd->hMemDC, (BITMAPINFO *)whdd->lpbiOut, DIB_RGB_COLORS, &(whdd->lpvbits), 0, 0); - if (!whdd->hDib) + if (whdd->hDib) { - TRACE("Error: %ld\n", GetLastError()); + TRACE("Created: %p,%p\n", whdd->hDib, whdd->lpvbits); + } + else + { + ret = FALSE; + TRACE("Error: %d\n", GetLastError()); } - TRACE("Created: %p,%p\n", whdd->hDib, whdd->lpvbits); whdd->hOldDib = SelectObject(whdd->hMemDC, whdd->hDib); } @@ -282,11 +284,8 @@ BOOL VFWAPI DrawDibBegin(HDRAWDIB hdd, { if (whdd->hic) ICClose(whdd->hic); - if (whdd->lpbiOut) - { - HeapFree(GetProcessHeap(), 0, whdd->lpbiOut); - whdd->lpbiOut = NULL; - } + HeapFree(GetProcessHeap(), 0, whdd->lpbiOut); + whdd->lpbiOut = NULL; } return ret; @@ -305,14 +304,16 @@ BOOL VFWAPI DrawDibDraw(HDRAWDIB hdd, HDC hdc, WINE_HDD *whdd; BOOL ret = TRUE; - TRACE("(%p,%p,%d,%d,%d,%d,%p,%p,%d,%d,%d,%d,0x%08lx)\n", + TRACE("(%p,%p,%d,%d,%d,%d,%p,%p,%d,%d,%d,%d,0x%08x)\n", hdd, hdc, xDst, yDst, dxDst, dyDst, lpbi, lpBits, xSrc, ySrc, dxSrc, dySrc, (DWORD)wFlags); whdd = MSVIDEO_GetHddPtr(hdd); if (!whdd) return FALSE; - if (wFlags & ~(DDF_SAME_HDC | DDF_SAME_DRAW | DDF_NOTKEYFRAME | DDF_UPDATE | DDF_DONTDRAW)) - FIXME("wFlags == 0x%08lx not handled\n", (DWORD)wFlags); + TRACE("whdd=%p\n", whdd); + + if (wFlags & ~(DDF_SAME_HDC | DDF_SAME_DRAW | DDF_NOTKEYFRAME | DDF_UPDATE | DDF_DONTDRAW | DDF_BACKGROUNDPAL)) + FIXME("wFlags == 0x%08x not handled\n", (DWORD)wFlags); if (!lpBits) { @@ -341,15 +342,17 @@ BOOL VFWAPI DrawDibDraw(HDRAWDIB hdd, HDC hdc, if (!(wFlags & DDF_UPDATE)) { + DWORD biSizeImage = lpbi->biSizeImage; + /* biSizeImage may be set to 0 for BI_RGB (uncompressed) bitmaps */ - if ((lpbi->biCompression == BI_RGB) && (lpbi->biSizeImage == 0)) - lpbi->biSizeImage = ((lpbi->biWidth * lpbi->biBitCount + 31) / 32) * 4 * lpbi->biHeight; + if ((lpbi->biCompression == BI_RGB) && (biSizeImage == 0)) + biSizeImage = ((lpbi->biWidth * lpbi->biBitCount + 31) / 32) * 4 * lpbi->biHeight; if (lpbi->biCompression) { DWORD flags = 0; - TRACE("Compression == 0x%08lx\n", lpbi->biCompression); + TRACE("Compression == 0x%08x\n", lpbi->biCompression); if (wFlags & DDF_NOTKEYFRAME) flags |= ICDECOMPRESS_NOTKEYFRAME; @@ -358,11 +361,16 @@ BOOL VFWAPI DrawDibDraw(HDRAWDIB hdd, HDC hdc, } else { - memcpy(whdd->lpvbits, lpBits, lpbi->biSizeImage); + memcpy(whdd->lpvbits, lpBits, biSizeImage); } } if (!(wFlags & DDF_DONTDRAW) && whdd->hpal) - SelectPalette(hdc, whdd->hpal, FALSE); + { + if ((wFlags & DDF_BACKGROUNDPAL) && ! (wFlags & DDF_SAME_HDC)) + SelectPalette(hdc, whdd->hpal, TRUE); + else + SelectPalette(hdc, whdd->hpal, FALSE); + } if (!(StretchBlt(whdd->hdc, xDst, yDst, dxDst, dyDst, whdd->hMemDC, xSrc, ySrc, dxSrc, dySrc, SRCCOPY))) ret = FALSE; @@ -374,7 +382,7 @@ BOOL VFWAPI DrawDibDraw(HDRAWDIB hdd, HDC hdc, * DrawDibStart [MSVFW32.@] */ BOOL VFWAPI DrawDibStart(HDRAWDIB hdd, DWORD rate) { - FIXME("(%p, %ld), stub\n", hdd, rate); + FIXME("(%p, %d), stub\n", hdd, rate); return TRUE; } @@ -386,6 +394,15 @@ BOOL VFWAPI DrawDibStop(HDRAWDIB hdd) { return TRUE; } +/*********************************************************************** + * DrawDibChangePalette [MSVFW32.@] + */ +BOOL VFWAPI DrawDibChangePalette(HDRAWDIB hdd, int iStart, int iLen, LPPALETTEENTRY lppe) +{ + FIXME("(%p, 0x%08x, 0x%08x, %p), stub\n", hdd, iStart, iLen, lppe); + return TRUE; +} + /*********************************************************************** * DrawDibSetPalette [MSVFW32.@] */ @@ -409,6 +426,15 @@ BOOL VFWAPI DrawDibSetPalette(HDRAWDIB hdd, HPALETTE hpal) return TRUE; } +/*********************************************************************** + * DrawDibGetBuffer [MSVFW32.@] + */ +LPVOID VFWAPI DrawDibGetBuffer(HDRAWDIB hdd, LPBITMAPINFOHEADER lpbi, DWORD dwSize, DWORD dwFlags) +{ + FIXME("(%p, %p, 0x%08x, 0x%08x), stub\n", hdd, lpbi, dwSize, dwFlags); + return NULL; +} + /*********************************************************************** * DrawDibGetPalette [MSVFW32.@] */ @@ -455,6 +481,18 @@ UINT VFWAPI DrawDibRealize(HDRAWDIB hdd, HDC hdc, BOOL fBackground) return ret; } +/*********************************************************************** + * DrawDibTime [MSVFW32.@] + */ +BOOL VFWAPI DrawDibTime(HDRAWDIB hdd, LPDRAWDIBTIME lpddtime) +{ + FIXME("(%p, %p) stub\n", hdd, lpddtime); + return FALSE; +} + +/*********************************************************************** + * DrawDibProfileDisplay [MSVFW32.@] + */ DWORD VFWAPI DrawDibProfileDisplay(LPBITMAPINFOHEADER lpbi) { FIXME("(%p) stub\n", lpbi); diff --git a/reactos/dll/win32/msvfw32/mciwnd.c b/reactos/dll/win32/msvfw32/mciwnd.c index 9260c01e719..dc2343729d1 100644 --- a/reactos/dll/win32/msvfw32/mciwnd.c +++ b/reactos/dll/win32/msvfw32/mciwnd.c @@ -14,7 +14,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA * * FIXME: * Add support for all remaining MCI_ commands and MCIWNDM_ messages. @@ -104,7 +104,7 @@ BOOL VFWAPIV MCIWndRegisterClass(void) HWND VFWAPIV MCIWndCreateW(HWND hwndParent, HINSTANCE hInstance, DWORD dwStyle, LPCWSTR szFile) { - TRACE("%p %p %lx %s\n", hwndParent, hInstance, dwStyle, debugstr_w(szFile)); + TRACE("%p %p %x %s\n", hwndParent, hInstance, dwStyle, debugstr_w(szFile)); MCIWndRegisterClass(); @@ -244,7 +244,7 @@ static void MCIWND_UpdateState(MCIWndInfo *mwi) strcatW(buffer, r_braceW); } - TRACE("=> '%s'\n", debugstr_w(buffer)); + TRACE("=> %s\n", debugstr_w(buffer)); SetWindowTextW(mwi->hWnd, buffer); } @@ -429,6 +429,21 @@ static LRESULT mci_get_devcaps(MCIWndInfo *mwi, UINT cap) return mci_devcaps.dwReturn; } +static LRESULT MCIWND_KeyDown(MCIWndInfo *mwi, UINT key) +{ + TRACE("%p, key %04x\n", mwi->hWnd, key); + + switch(key) + { + case VK_ESCAPE: + SendMessageW(mwi->hWnd, MCI_STOP, 0, 0); + return 0; + + default: + return 0; + } +} + static LRESULT WINAPI MCIWndProc(HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam) { MCIWndInfo *mwi; @@ -477,6 +492,9 @@ static LRESULT WINAPI MCIWndProc(HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lPa case WM_COMMAND: return MCIWND_Command(mwi, wParam, lParam); + case WM_KEYDOWN: + return MCIWND_KeyDown(mwi, wParam); + case WM_NCACTIVATE: if (mwi->uTimer) { @@ -735,7 +753,7 @@ end_of_mci_open: MCIWND_notify_error(mwi); return 0; } - TRACE("MCIWNDM_GETLENGTH: %ld\n", mci_status.dwReturn); + TRACE("MCIWNDM_GETLENGTH: %d\n", mci_status.dwReturn); return mci_status.dwReturn; } @@ -752,7 +770,7 @@ end_of_mci_open: MCIWND_notify_error(mwi); return 0; } - TRACE("MCIWNDM_GETSTART: %ld\n", mci_status.dwReturn); + TRACE("MCIWNDM_GETSTART: %d\n", mci_status.dwReturn); return mci_status.dwReturn; } @@ -1010,7 +1028,7 @@ end_of_mci_open: return mwi->lasterror; case MCIWNDM_RETURNSTRINGW: - strncpyW((LPWSTR)lParam, mwi->return_string, wParam); + lstrcpynW((LPWSTR)lParam, mwi->return_string, wParam); TRACE("MCIWNDM_RETURNTRINGW %s\n", debugstr_wn((LPWSTR)lParam, wParam)); return mwi->lasterror; @@ -1048,7 +1066,7 @@ end_of_mci_open: return 0; case MCIWNDM_GETSTYLES: - TRACE("MCIWNDM_GETSTYLES: %08lx\n", mwi->dwStyle & 0xffff); + TRACE("MCIWNDM_GETSTYLES: %08x\n", mwi->dwStyle & 0xffff); return mwi->dwStyle & 0xffff; case MCIWNDM_GETDEVICEA: @@ -1095,7 +1113,7 @@ end_of_mci_open: case MCIWNDM_GETFILENAMEW: TRACE("MCIWNDM_GETFILENAMEW: %s\n", debugstr_w(mwi->lpName)); if (mwi->lpName) - strncpyW((LPWSTR)lParam, mwi->lpName, wParam); + lstrcpynW((LPWSTR)lParam, mwi->lpName, wParam); return 0; case MCIWNDM_GETTIMEFORMATA: @@ -1328,11 +1346,8 @@ end_of_mci_open: mwi->mode = MCI_MODE_NOT_READY; mwi->position = -1; - if (mwi->lpName) - { - HeapFree(GetProcessHeap(), 0, mwi->lpName); - mwi->lpName = NULL; - } + HeapFree(GetProcessHeap(), 0, mwi->lpName); + mwi->lpName = NULL; MCIWND_UpdateState(mwi); GetClientRect(hWnd, &rc); diff --git a/reactos/dll/win32/msvfw32/msvfw32.rbuild b/reactos/dll/win32/msvfw32/msvfw32.rbuild index 14541f73489..710af09b8fa 100644 --- a/reactos/dll/win32/msvfw32/msvfw32.rbuild +++ b/reactos/dll/win32/msvfw32/msvfw32.rbuild @@ -1,22 +1,25 @@ + . include/reactos/wine + 0x600 0x501 0x501 wine winmm - gdi32 comctl32 - kernel32 - advapi32 + version user32 + gdi32 + advapi32 + kernel32 ntdll - drawdib.c mciwnd.c - msvfw32.rc msvideo_main.c + drawdib.c + rsrc.rc msvfw32.spec diff --git a/reactos/dll/win32/msvfw32/msvfw32.rc b/reactos/dll/win32/msvfw32/msvfw32.rc deleted file mode 100644 index 75c98f04be1..00000000000 --- a/reactos/dll/win32/msvfw32/msvfw32.rc +++ /dev/null @@ -1,5 +0,0 @@ -#define REACTOS_VERSION_DLL -#define REACTOS_STR_FILE_DESCRIPTION "MSvideo support\0" -#define REACTOS_STR_INTERNAL_NAME "msvfw32\0" -#define REACTOS_STR_ORIGINAL_FILENAME "msvfw32.dll\0" -#include diff --git a/reactos/dll/win32/msvfw32/msvfw32.spec b/reactos/dll/win32/msvfw32/msvfw32.spec index 9590f91bf3a..3fdd2f63eea 100644 --- a/reactos/dll/win32/msvfw32/msvfw32.spec +++ b/reactos/dll/win32/msvfw32/msvfw32.spec @@ -4,11 +4,11 @@ 2 stdcall VideoForWindowsVersion() @ stdcall DrawDibBegin(long long long long ptr long long long) -@ stub DrawDibChangePalette +@ stdcall DrawDibChangePalette(long long long ptr) @ stdcall DrawDibClose(long) @ stdcall DrawDibDraw(long long long long long long ptr ptr long long long long long) @ stdcall DrawDibEnd(long) -@ stub DrawDibGetBuffer +@ stdcall DrawDibGetBuffer(long ptr long long) @ stdcall DrawDibGetPalette(long) @ stdcall DrawDibOpen() @ stdcall DrawDibProfileDisplay(ptr) @@ -16,8 +16,8 @@ @ stdcall DrawDibSetPalette(long long) @ stdcall DrawDibStart(long long) @ stdcall DrawDibStop(long) -@ stub DrawDibTime -@ stub GetOpenFileNamePreview +@ stdcall DrawDibTime(long ptr) +@ stdcall GetOpenFileNamePreview(ptr) GetOpenFileNamePreviewA @ stdcall GetOpenFileNamePreviewA(ptr) @ stdcall GetOpenFileNamePreviewW(ptr) @ stdcall GetSaveFileNamePreviewA(ptr) @@ -40,10 +40,10 @@ @ stdcall ICOpen(long long long) @ stdcall ICOpenFunction(long long long ptr) @ stdcall ICRemove(long long long) -@ stdcall ICSendMessage(long long long long) -@ stub ICSeqCompressFrame -@ stub ICSeqCompressFrameEnd -@ stub ICSeqCompressFrameStart +@ stdcall ICSendMessage(long long ptr ptr) +@ stdcall ICSeqCompressFrame(ptr long ptr ptr ptr) +@ stdcall ICSeqCompressFrameEnd(ptr) +@ stdcall ICSeqCompressFrameStart(ptr ptr) @ cdecl MCIWndCreate (long long long str) MCIWndCreateA @ cdecl MCIWndCreateA (long long long str) @ cdecl MCIWndCreateW (long long long wstr) diff --git a/reactos/dll/win32/msvfw32/msvfw32_De.rc b/reactos/dll/win32/msvfw32/msvfw32_De.rc new file mode 100644 index 00000000000..29b5f4b7187 --- /dev/null +++ b/reactos/dll/win32/msvfw32/msvfw32_De.rc @@ -0,0 +1,52 @@ +/* + * Copyright 2005 Dmitry Timoshkov + * Copyright 2005 Henning Gerhardt + * + * 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 + */ + +LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL + +ICM_CHOOSE_COMPRESSOR DIALOG DISCARDABLE 36, 24, 187, 95 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Video Compression" +FONT 8, "MS Shell Dlg" +{ + DEFPUSHBUTTON "OK",IDOK,129,2,49,14 + PUSHBUTTON "Abbrechen",IDCANCEL,129,18,49,14 + + LTEXT "&Komprimierer:",-1,9,6,105,8 + COMBOBOX 880,9,16,111,67,CBS_DROPDOWNLIST|WS_VSCROLL|WS_TABSTOP + + PUSHBUTTON "Kon&figurieren...",882,129,36,49,14 + PUSHBUTTON "&Über...",883,129,52,49,14 + + SCROLLBAR 884,9,44,111,9,WS_TABSTOP + + LTEXT "Komprimierungsqualität:",886,9,34,80,8 + + CONTROL "&Key Frame aller",887,"Button",BS_AUTOCHECKBOX|WS_TABSTOP,9,60,66,12 + EDITTEXT 888,78,60,22,12 + LTEXT "frames",889,103,62,26,10 + + CONTROL "&Datenrate",894,"Button",BS_AUTOCHECKBOX|WS_TABSTOP,9,76,66,12 + EDITTEXT 895,78,76,22,12 + LTEXT "KB/sec",896,102,78,26,10 +} + +STRINGTABLE DISCARDABLE +{ + IDS_FULLFRAMES "Vollständige Frames (Unkomprimiert)" +} diff --git a/reactos/dll/win32/msvfw32/msvfw32_En.rc b/reactos/dll/win32/msvfw32/msvfw32_En.rc new file mode 100644 index 00000000000..1a563dd9780 --- /dev/null +++ b/reactos/dll/win32/msvfw32/msvfw32_En.rc @@ -0,0 +1,51 @@ +/* + * Copyright 2005 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 + */ + +LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT + +ICM_CHOOSE_COMPRESSOR DIALOG DISCARDABLE 36, 24, 187, 95 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Video Compression" +FONT 8, "MS Shell Dlg" +{ + DEFPUSHBUTTON "OK",IDOK,129,2,49,14 + PUSHBUTTON "Cancel",IDCANCEL,129,18,49,14 + + LTEXT "&Compressor:",-1,9,6,105,8 + COMBOBOX 880,9,16,111,67,CBS_DROPDOWNLIST|WS_VSCROLL|WS_TABSTOP + + PUSHBUTTON "Con&figure...",882,129,36,49,14 + PUSHBUTTON "&About...",883,129,52,49,14 + + SCROLLBAR 884,9,44,111,9,WS_TABSTOP + + LTEXT "Compression &Quality:",886,9,34,80,8 + + CONTROL "&Key Frame Every",887,"Button",BS_AUTOCHECKBOX|WS_TABSTOP,9,60,66,12 + EDITTEXT 888,78,60,22,12 + LTEXT "frames",889,103,62,26,10 + + CONTROL "&Data Rate",894,"Button",BS_AUTOCHECKBOX|WS_TABSTOP,9,76,66,12 + EDITTEXT 895,78,76,22,12 + LTEXT "KB/sec",896,102,78,26,10 +} + +STRINGTABLE DISCARDABLE +{ + IDS_FULLFRAMES "Full Frames (Uncompressed)" +} diff --git a/reactos/dll/win32/msvfw32/msvfw32_Fr.rc b/reactos/dll/win32/msvfw32/msvfw32_Fr.rc new file mode 100644 index 00000000000..9318ee4b760 --- /dev/null +++ b/reactos/dll/win32/msvfw32/msvfw32_Fr.rc @@ -0,0 +1,51 @@ +/* + * Copyright 2006 Jonathan Ernst + * + * 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 + */ + +LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL + +ICM_CHOOSE_COMPRESSOR DIALOG DISCARDABLE 36, 24, 187, 95 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Compression vidéo" +FONT 8, "MS Shell Dlg" +{ + DEFPUSHBUTTON "OK",IDOK,129,2,49,14 + PUSHBUTTON "Annuler",IDCANCEL,129,18,49,14 + + LTEXT "&Compresseur :",-1,9,6,105,8 + COMBOBOX 880,9,16,111,67,CBS_DROPDOWNLIST|WS_VSCROLL|WS_TABSTOP + + PUSHBUTTON "Con&figurer...",882,129,36,49,14 + PUSHBUTTON "À &propos",883,129,52,49,14 + + SCROLLBAR 884,9,44,111,9,WS_TABSTOP + + LTEXT "&Qualité de compression :",886,9,34,80,8 + + CONTROL "Image &clé toutes les",887,"Button",BS_AUTOCHECKBOX|WS_TABSTOP,9,60,66,12 + EDITTEXT 888,78,60,22,12 + LTEXT "images",889,103,62,26,10 + + CONTROL "&Débit de données",894,"Button",BS_AUTOCHECKBOX|WS_TABSTOP,9,76,66,12 + EDITTEXT 895,78,76,22,12 + LTEXT "Kio/sec",896,102,78,26,10 +} + +STRINGTABLE DISCARDABLE +{ + IDS_FULLFRAMES "Images complètes (non compressées)" +} diff --git a/reactos/dll/win32/msvfw32/msvfw32_Hu.rc b/reactos/dll/win32/msvfw32/msvfw32_Hu.rc new file mode 100644 index 00000000000..aa0eefcfc1c --- /dev/null +++ b/reactos/dll/win32/msvfw32/msvfw32_Hu.rc @@ -0,0 +1,51 @@ +/* + * Copyright 2006 Andras Kovacs + * + * 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 + */ + +LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT + +ICM_CHOOSE_COMPRESSOR DIALOG DISCARDABLE 36, 24, 187, 95 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Video tömörítés" +FONT 8, "MS Shell Dlg" +{ + DEFPUSHBUTTON "OK",IDOK,129,2,49,14 + PUSHBUTTON "Mégse",IDCANCEL,129,18,49,14 + + LTEXT "&Tömörítõ:",-1,9,6,105,8 + COMBOBOX 880,9,16,111,67,CBS_DROPDOWNLIST|WS_VSCROLL|WS_TABSTOP + + PUSHBUTTON "Beállí&tás...",882,129,36,49,14 + PUSHBUTTON "&About...",883,129,52,49,14 + + SCROLLBAR 884,9,44,111,9,WS_TABSTOP + + LTEXT "Tömörítési minõsé&g:",886,9,34,80,8 + + CONTROL "&Kulcs képkocka minden",887,"Button",BS_AUTOCHECKBOX|WS_TABSTOP,9,60,66,12 + EDITTEXT 888,78,60,22,12 + LTEXT "képkockánként",889,103,62,26,10 + + CONTROL "A&dat arány",894,"Button",BS_AUTOCHECKBOX|WS_TABSTOP,9,76,66,12 + EDITTEXT 895,78,76,22,12 + LTEXT "KB/sec",896,102,78,26,10 +} + +STRINGTABLE DISCARDABLE +{ + IDS_FULLFRAMES "Teljes képkockák (tömörítetlen)" +} diff --git a/reactos/dll/win32/msvfw32/msvfw32_Ko.rc b/reactos/dll/win32/msvfw32/msvfw32_Ko.rc new file mode 100644 index 00000000000..20533db059d --- /dev/null +++ b/reactos/dll/win32/msvfw32/msvfw32_Ko.rc @@ -0,0 +1,52 @@ +/* + * Copyright 2005 Dmitry Timoshkov + * Copyright 2005,2006 YunSong Hwang + * + * 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 + */ + +LANGUAGE LANG_KOREAN, SUBLANG_NEUTRAL + +ICM_CHOOSE_COMPRESSOR DIALOG DISCARDABLE 36, 24, 187, 95 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "ºñµð¿À ¾ÐÃà" +FONT 8, "MS Shell Dlg" +{ + DEFPUSHBUTTON "È®ÀÎ",IDOK,129,2,49,14 + PUSHBUTTON "Ãë¼Ò",IDCANCEL,129,18,49,14 + + LTEXT "¾ÐÃà(&C):",-1,9,6,105,8 + COMBOBOX 880,9,16,111,67,CBS_DROPDOWNLIST|WS_VSCROLL|WS_TABSTOP + + PUSHBUTTON "¼³Á¤(&F)...",882,129,36,49,14 + PUSHBUTTON "Á¤º¸(&A)...",883,129,52,49,14 + + SCROLLBAR 884,9,44,111,9,WS_TABSTOP + + LTEXT "¾ÐÃà ǰÁú(&Q):",886,9,34,80,8 + + CONTROL "¸ðµç Ű ÇÁ·¹ÀÓ(&K)",887,"Button",BS_AUTOCHECKBOX|WS_TABSTOP,9,60,66,12 + EDITTEXT 888,78,60,22,12 + LTEXT "ÇÁ·¹ÀÓ",889,103,62,26,10 + + CONTROL "µ¥ÀÌŸ Àü¼ÛÀ²(&D)",894,"Button",BS_AUTOCHECKBOX|WS_TABSTOP,9,76,66,12 + EDITTEXT 895,78,76,22,12 + LTEXT "KB/sec",896,102,78,26,10 +} + +STRINGTABLE DISCARDABLE +{ + IDS_FULLFRAMES "Àüä ÇÁ·¹ÀÓ(ºñ¾ÐÃà)" +} diff --git a/reactos/dll/win32/msvfw32/msvfw32_No.rc b/reactos/dll/win32/msvfw32/msvfw32_No.rc new file mode 100644 index 00000000000..9be9e5114f1 --- /dev/null +++ b/reactos/dll/win32/msvfw32/msvfw32_No.rc @@ -0,0 +1,51 @@ +/* + * Copyright 2005 Alexander N. Sørnes + * + * 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 + */ + +LANGUAGE LANG_NORWEGIAN, SUBLANG_NORWEGIAN_BOKMAL + +ICM_CHOOSE_COMPRESSOR DIALOG DISCARDABLE 36, 24, 187, 95 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Videokomprimering" +FONT 8, "MS Shell Dlg" +{ + DEFPUSHBUTTON "OK",IDOK,129,2,49,14 + PUSHBUTTON "Avbryt",IDCANCEL,129,18,49,14 + + LTEXT "&Komprimerer:",-1,9,6,105,8 + COMBOBOX 880,9,16,111,67,CBS_DROPDOWNLIST|WS_VSCROLL|WS_TABSTOP + + PUSHBUTTON "&Oppsett . . .",882,129,36,49,14 + PUSHBUTTON "O&m . . .",883,129,52,49,14 + + SCROLLBAR 884,9,44,111,9,WS_TABSTOP + + LTEXT "Komprimeringskvalite&t:",886,9,34,80,8 + + CONTROL "Nø&kkelbilde for hvert",887,"Button",BS_AUTOCHECKBOX|WS_TABSTOP,9,60,66,12 + EDITTEXT 888,78,60,22,12 + LTEXT "bilde",889,103,62,26,10 + + CONTROL "&Datahastighet",894,"Button",BS_AUTOCHECKBOX|WS_TABSTOP,9,76,66,12 + EDITTEXT 895,78,76,22,12 + LTEXT "KB/s",896,102,78,26,10 +} + +STRINGTABLE DISCARDABLE +{ + IDS_FULLFRAMES "Fulle bilder (ukomprimert)" +} diff --git a/reactos/dll/win32/msvfw32/msvfw32_Pl.rc b/reactos/dll/win32/msvfw32/msvfw32_Pl.rc new file mode 100644 index 00000000000..8c481820d18 --- /dev/null +++ b/reactos/dll/win32/msvfw32/msvfw32_Pl.rc @@ -0,0 +1,52 @@ +/* + * Copyright 2005 Dmitry Timoshkov + * Copyright 2006 Mikolaj Zalewski + * + * 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 + */ + +LANGUAGE LANG_POLISH, SUBLANG_DEFAULT + +ICM_CHOOSE_COMPRESSOR DIALOG DISCARDABLE 36, 24, 207, 95 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Kompresja wideo" +FONT 8, "MS Shell Dlg" +{ + DEFPUSHBUTTON "&OK",IDOK,146,2,52,14 + PUSHBUTTON "&Anuluj",IDCANCEL,146,18,52,14 + + LTEXT "Typ &kompresji:",-1,9,6,128,8 + COMBOBOX 880,9,16,128,67,CBS_DROPDOWNLIST|WS_VSCROLL|WS_TABSTOP + + PUSHBUTTON "Kon&figuruj...",882,146,36,52,14 + PUSHBUTTON "&Informacje...",883,146,52,52,14 + + SCROLLBAR 884,9,44,128,9,WS_TABSTOP + + LTEXT "&Jakoœæ kompresji:",886,9,34,97,8 + + CONTROL "&Ramka kluczowa co",887,"Button",BS_AUTOCHECKBOX|WS_TABSTOP,9,60,81,12 + EDITTEXT 888,88,60,22,12 + LTEXT "ramek",889,114,62,31,10 + + CONTROL "&Strumieñ",894,"Button",BS_AUTOCHECKBOX|WS_TABSTOP,9,76,81,12 + EDITTEXT 895,88,76,22,12 + LTEXT "KB/sec",896,114,78,31,10 +} + +STRINGTABLE DISCARDABLE +{ + IDS_FULLFRAMES "Pe³ne ramki (bez kompresji)" +} diff --git a/reactos/dll/win32/msvfw32/msvfw32_Tr.rc b/reactos/dll/win32/msvfw32/msvfw32_Tr.rc new file mode 100644 index 00000000000..b9da7c20f0b --- /dev/null +++ b/reactos/dll/win32/msvfw32/msvfw32_Tr.rc @@ -0,0 +1,53 @@ +/* + * Turkish Resources + * + * Copyright 2006 Fatih Aþýcý + * + * 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 + */ + +LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT + +ICM_CHOOSE_COMPRESSOR DIALOG DISCARDABLE 36, 24, 187, 95 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Vidyo Sýkýþtýrma" +FONT 8, "MS Shell Dlg" +{ + DEFPUSHBUTTON "Tamam",IDOK,129,2,49,14 + PUSHBUTTON "Ýptal",IDCANCEL,129,18,49,14 + + LTEXT "&Sýkýþtýrýcý:",-1,9,6,105,8 + COMBOBOX 880,9,16,111,67,CBS_DROPDOWNLIST|WS_VSCROLL|WS_TABSTOP + + PUSHBUTTON "Ya&pýlandýr...",882,129,36,49,14 + PUSHBUTTON "&Hakkýnda...",883,129,52,49,14 + + SCROLLBAR 884,9,44,111,9,WS_TABSTOP + + LTEXT "Sýkýþtýrma &Kalitesi:",886,9,34,80,8 + + CONTROL "&Key Frame Every",887,"Button",BS_AUTOCHECKBOX|WS_TABSTOP,9,60,66,12 + EDITTEXT 888,78,60,22,12 + LTEXT "frames",889,103,62,26,10 + + CONTROL "&Veri Oraný",894,"Button",BS_AUTOCHECKBOX|WS_TABSTOP,9,76,66,12 + EDITTEXT 895,78,76,22,12 + LTEXT "KB/sec",896,102,78,26,10 +} + +STRINGTABLE DISCARDABLE +{ + IDS_FULLFRAMES "Tüm Çerçeveler (Sýkýþtýrýlmamýþ)" +} diff --git a/reactos/dll/win32/msvfw32/msvfw32_ros.diff b/reactos/dll/win32/msvfw32/msvfw32_ros.diff new file mode 100644 index 00000000000..331b478ad6d --- /dev/null +++ b/reactos/dll/win32/msvfw32/msvfw32_ros.diff @@ -0,0 +1,14 @@ +Index: msvideo_private.h +=================================================================== +--- msvideo_private.h (revision 25690) ++++ msvideo_private.h (working copy) +@@ -19,6 +19,9 @@ + #ifndef __WINE_MSVIDEO_PRIVATE_H + #define __WINE_MSVIDEO_PRIVATE_H + ++/* Installable Compressor Manager */ ++#define ICVERSION 0x0104 ++ + #define ICM_CHOOSE_COMPRESSOR 1 + #define IDC_COMP_LIST 880 + #define IDS_FULLFRAMES 901 diff --git a/reactos/dll/win32/msvfw32/msvideo.spec b/reactos/dll/win32/msvfw32/msvideo.spec index a6f9a876f20..b44fcde69c9 100644 --- a/reactos/dll/win32/msvfw32/msvideo.spec +++ b/reactos/dll/win32/msvfw32/msvideo.spec @@ -1,4 +1,6 @@ +#1 pascal WEP(word) 2 pascal VideoForWindowsVersion() VideoForWindowsVersion +3 pascal DllEntryPoint(long word word word long word) VIDEO_LibMain 20 stub VIDEOGETNUMDEVS 21 stub VIDEOGETERRORTEXT 22 pascal VideoCapDriverDescAndVer(word ptr word ptr word) VideoCapDriverDescAndVer16 @@ -64,5 +66,3 @@ 251 stub _MCIWNDREGISTERCLASS 252 stub GETOPENFILENAMEPREVIEW 253 stub GETSAVEFILENAMEPREVIEW - -300 pascal DllEntryPoint(long word word word long word) VIDEO_LibMain diff --git a/reactos/dll/win32/msvfw32/msvideo16.c b/reactos/dll/win32/msvfw32/msvideo16.c index 2d5596e9b9f..00e08890596 100644 --- a/reactos/dll/win32/msvfw32/msvideo16.c +++ b/reactos/dll/win32/msvfw32/msvideo16.c @@ -16,18 +16,21 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -#define COM_NO_WINDOWS_H +#include #include #include -#include "msvideo_private.h" +#include "windef.h" +#include "winbase.h" #include "winver.h" #include "winnls.h" #include "winreg.h" +#include "winuser.h" #include "vfw16.h" +#include "msvideo_private.h" #include "wine/debug.h" WINE_DEFAULT_DEBUG_CHANNEL(msvideo); @@ -118,7 +121,7 @@ BOOL16 VFWAPI DrawDibStart16(HDRAWDIB16 hdd, DWORD rate) /************************************************************************* * DrawDibStop [MSVIDEO.119] */ -BOOL16 DrawDibStop16(HDRAWDIB16 hdd) +BOOL16 VFWAPI DrawDibStop16(HDRAWDIB16 hdd) { return DrawDibStop(HDRAWDIB_32(hdd)); } @@ -151,7 +154,7 @@ LRESULT VFWAPIV ICMessage16( HIC16 hic, UINT16 msg, UINT16 cb, VA_LIST16 valist lpData = HeapAlloc(GetProcessHeap(), 0, cb); - TRACE("0x%08lx, %u, %u, ...)\n", (DWORD) hic, msg, cb); + TRACE("0x%08x, %u, %u, ...)\n", (DWORD) hic, msg, cb); for (i = 0; i < cb / sizeof(WORD); i++) { @@ -172,7 +175,7 @@ LRESULT VFWAPI ICGetInfo16(HIC16 hic, ICINFO16 * picinfo, DWORD cb) { LRESULT ret; - TRACE("(0x%08lx,%p,%ld)\n", (DWORD) hic, picinfo, cb); + TRACE("(0x%08x,%p,%d)\n", (DWORD) hic, picinfo, cb); ret = ICSendMessage16(hic, ICM_GETINFO, (DWORD) picinfo, cb); TRACE(" -> 0x%08lx\n", ret); return ret; @@ -203,7 +206,7 @@ DWORD VFWAPIV ICCompress16(HIC16 hic, DWORD dwFlags, ICCOMPRESS iccmp; SEGPTR seg_iccmp; - TRACE("(0x%08lx,%ld,%p,%p,%p,%p,...)\n", (DWORD) hic, dwFlags, + TRACE("(0x%08x,%d,%p,%p,%p,%p,...)\n", (DWORD) hic, dwFlags, lpbiOutput, lpData, lpbiInput, lpBits); iccmp.dwFlags = dwFlags; @@ -237,7 +240,7 @@ DWORD VFWAPIV ICDecompress16(HIC16 hic, DWORD dwFlags, SEGPTR segptr; DWORD ret; - TRACE("(0x%08lx,%ld,%p,%p,%p,%p)\n", (DWORD) hic, dwFlags, lpbiFormat, + TRACE("(0x%08x,%d,%p,%p,%p,%p)\n", (DWORD) hic, dwFlags, lpbiFormat, lpData, lpbi, lpBits); icd.dwFlags = dwFlags; @@ -276,7 +279,7 @@ DWORD VFWAPIV ICDrawBegin16(HIC16 hic, /* [in] */ ICDRAWBEGIN16 icdb; SEGPTR seg_icdb; - TRACE ("(0x%08lx,%ld,0x%08lx,0x%08lx,0x%08lx,%u,%u,%u,%u,%p,%u,%u,%u,%u,%ld,%ld)\n", + TRACE ("(0x%08x,%d,0x%08x,0x%08x,0x%08x,%u,%u,%u,%u,%p,%u,%u,%u,%u,%d,%d)\n", (DWORD) hic, dwFlags, (DWORD) hpal, (DWORD) hwnd, (DWORD) hdc, xDst, yDst, dxDst, dyDst, lpbi, xSrc, ySrc, dxSrc, dySrc, dwRate, dwScale); @@ -315,7 +318,7 @@ DWORD VFWAPIV ICDraw16(HIC16 hic, DWORD dwFlags, ICDRAW icd; SEGPTR seg_icd; - TRACE("(0x%08lx,0x%08lx,%p,%p,%ld,%ld)\n", (DWORD) hic, dwFlags, + TRACE("(0x%08x,0x%08x,%p,%p,%d,%d)\n", (DWORD) hic, dwFlags, lpFormat, lpData, cbData, lTime); icd.dwFlags = dwFlags; icd.lpFormat = lpFormat; @@ -670,12 +673,12 @@ BOOL16 VFWAPI ICInfo16(DWORD fccType, DWORD fccHandler, ICINFO16 *lpicinfo) static LRESULT CALLBACK IC_Callback3216(HIC hic, HDRVR hdrv, UINT msg, DWORD lp1, DWORD lp2) { WINE_HIC* whic; - LRESULT ret = 0; WORD args[8]; whic = MSVIDEO_GetHicPtr(hic); if (whic) { + DWORD ret = 0; switch (msg) { case DRV_OPEN: @@ -698,9 +701,9 @@ static LRESULT CALLBACK IC_Callback3216(HIC hic, HDRVR hdrv, UINT msg, DWORD l UnMapLS(lp2); break; } + return ret; } - else ret = ICERR_BADHANDLE; - return ret; + else return ICERR_BADHANDLE; } /*********************************************************************** @@ -730,6 +733,7 @@ LRESULT VFWAPI ICSendMessage16(HIC16 hic, UINT16 msg, DWORD lParam1, DWORD lPara if (whic->driverproc16) { WORD args[8]; + DWORD result; /* FIXME: original code was passing hdrv first and hic second */ /* but this doesn't match what IC_Callback3216 does */ @@ -741,7 +745,8 @@ LRESULT VFWAPI ICSendMessage16(HIC16 hic, UINT16 msg, DWORD lParam1, DWORD lPara args[2] = LOWORD(lParam1); args[1] = HIWORD(lParam2); args[0] = LOWORD(lParam2); - WOWCallback16Ex( (DWORD)whic->driverproc16, WCB16_PASCAL, sizeof(args), args, &ret ); + WOWCallback16Ex( (DWORD)whic->driverproc16, WCB16_PASCAL, sizeof(args), args, &result ); + ret = result; } else { @@ -762,6 +767,7 @@ LRESULT VFWAPI ICSendMessage16(HIC16 hic, UINT16 msg, DWORD lParam1, DWORD lPara DWORD WINAPI VideoCapDriverDescAndVer16(WORD nr, LPSTR buf1, WORD buf1len, LPSTR buf2, WORD buf2len) { + static const char version_info_spec[] = "\\StringFileInfo\\040904E4\\FileDescription"; DWORD verhandle; DWORD infosize; UINT subblocklen; @@ -787,7 +793,7 @@ DWORD WINAPI VideoCapDriverDescAndVer16(WORD nr, LPSTR buf1, WORD buf1len, if (strncasecmp(buf, "vid", 3)) continue; if (nr--) continue; fnLen = sizeof(fn); - lRet = RegQueryValueExA(hKey, buf, 0, 0, fn, &fnLen); + lRet = RegQueryValueExA(hKey, buf, 0, 0, (LPBYTE)fn, &fnLen); if (lRet == ERROR_SUCCESS) found = TRUE; break; } @@ -821,37 +827,37 @@ DWORD WINAPI VideoCapDriverDescAndVer16(WORD nr, LPSTR buf1, WORD buf1len, infobuf = HeapAlloc(GetProcessHeap(), 0, infosize); if (GetFileVersionInfoA(fn, verhandle, infosize, infobuf)) { - char vbuf[200]; /* Yes, two space behind : */ /* FIXME: test for buflen */ - sprintf(vbuf, "Version: %d.%d.%d.%d\n", + snprintf(buf2, buf2len, "Version: %d.%d.%d.%d\n", ((WORD*)infobuf)[0x0f], ((WORD*)infobuf)[0x0e], ((WORD*)infobuf)[0x11], ((WORD*)infobuf)[0x10] ); - TRACE("version of %s is %s\n", fn, vbuf); - strncpy(buf2, vbuf, buf2len); + TRACE("version of %s is %s\n", fn, buf2); } else { TRACE("GetFileVersionInfoA failed for %s.\n", fn); - strncpy(buf2, fn, buf2len); /* msvideo.dll appears to copy fn*/ + lstrcpynA(buf2, fn, buf2len); /* msvideo.dll appears to copy fn*/ } /* FIXME: language problem? */ if (VerQueryValueA( infobuf, - "\\StringFileInfo\\040904E4\\FileDescription", + version_info_spec, &subblock, &subblocklen )) { + UINT copylen = min(subblocklen,buf1len-1); + memcpy(buf1, subblock, copylen); + buf1[copylen] = '\0'; TRACE("VQA returned %s\n", (LPCSTR)subblock); - strncpy(buf1, subblock, buf1len); } else { TRACE("VQA did not return on query \\StringFileInfo\\040904E4\\FileDescription?\n"); - strncpy(buf1, fn, buf1len); /* msvideo.dll appears to copy fn*/ + lstrcpynA(buf1, fn, buf1len); /* msvideo.dll appears to copy fn*/ } HeapFree(GetProcessHeap(), 0, infobuf); return 0; @@ -884,7 +890,7 @@ static LRESULT CALLBACK IC_CallTo16(HDRVR hdrv, HIC hic, UINT msg, LPARAM lp1, } /************************************************************************** - * DllEntryPoint (MSVIDEO.300) + * DllEntryPoint (MSVIDEO.3) * * MSVIDEO DLL entry point * diff --git a/reactos/dll/win32/msvfw32/msvideo_main.c b/reactos/dll/win32/msvfw32/msvideo_main.c index 0d918edb32c..76516879f55 100644 --- a/reactos/dll/win32/msvfw32/msvideo_main.c +++ b/reactos/dll/win32/msvfw32/msvideo_main.c @@ -2,6 +2,7 @@ * Copyright 1998 Marcus Meissner * Copyright 2000 Bradley Baetz * Copyright 2003 Michael Günnewig + * Copyright 2005 Dmitry Timoshkov * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -15,7 +16,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA * * FIXME: This all assumes 32 bit codecs * Win95 appears to prefer 32 bit codecs, even from 16 bit code. @@ -25,17 +26,19 @@ * - no thread safety */ +#include #include #include -#include "msvideo_private.h" +#include "windef.h" +#include "winbase.h" +#include "winreg.h" #include "winnls.h" #include "wingdi.h" #include "winuser.h" -#include "winreg.h" - -#include "windowsx.h" - +#include "commdlg.h" +#include "vfw.h" +#include "msvideo_private.h" #include "wine/debug.h" /* Drivers32 settings */ @@ -78,7 +81,7 @@ HMODULE MSVFW32_hModule; BOOL WINAPI DllMain( HINSTANCE hinst, DWORD reason, LPVOID reserved ) { - TRACE("%p,%lx,%p\n", hinst, reason, reserved); + TRACE("%p,%x,%p\n", hinst, reason, reserved); switch(reason) { @@ -116,14 +119,15 @@ static BOOL enum_drivers(DWORD fccType, enum_handler_t handler, void* param) lRet = RegOpenKeyExA(HKEY_LOCAL_MACHINE, HKLM_DRIVERS32, 0, KEY_QUERY_VALUE, &hKey); if (lRet == ERROR_SUCCESS) { - RegQueryInfoKeyA( hKey, 0, 0, 0, &cnt, 0, 0, 0, 0, 0, 0, 0); - for (i = 0; i < cnt; i++) + DWORD numkeys; + RegQueryInfoKeyA( hKey, 0, 0, 0, &numkeys, 0, 0, 0, 0, 0, 0, 0); + for (i = 0; i < numkeys; i++) { bufLen = sizeof(buf) / sizeof(buf[0]); lRet = RegEnumKeyExA(hKey, i, buf, &bufLen, 0, 0, 0, &lastWrite); if (lRet != ERROR_SUCCESS) continue; if (strncasecmp(buf, fccTypeStr, 5) || buf[9] != '=') continue; - if ((result = handler(buf, i, param))) break; + if ((result = handler(buf, cnt++, param))) break; } RegCloseKey( hKey ); } @@ -132,10 +136,11 @@ static BOOL enum_drivers(DWORD fccType, enum_handler_t handler, void* param) /* if that didn't work, go through the values in system.ini */ if (GetPrivateProfileSectionA("drivers32", buf, sizeof(buf), "system.ini")) { - for (s = buf; *s; cnt++, s += strlen(s) + 1) + for (s = buf; *s; s += strlen(s) + 1) { + TRACE("got %s\n", s); if (strncasecmp(s, fccTypeStr, 5) || s[9] != '=') continue; - if ((result = handler(s, cnt, param))) break; + if ((result = handler(s, cnt++, param))) break; } } @@ -175,11 +180,10 @@ static BOOL ICInfo_enum_handler(const char *drv, int nr, void *param) if ((lpicinfo->fccHandler != nr) && (lpicinfo->fccHandler != fccHandler)) return FALSE; - lpicinfo->fccType = mmioStringToFOURCCA(drv, 0); lpicinfo->fccHandler = fccHandler; lpicinfo->dwFlags = 0; lpicinfo->dwVersion = 0; - lpicinfo->dwVersionICM = 0x104; + lpicinfo->dwVersionICM = ICVERSION; lpicinfo->szName[0] = 0; lpicinfo->szDescription[0] = 0; MultiByteToWideChar(CP_ACP, 0, drv + 10, -1, lpicinfo->szDriver, @@ -200,9 +204,10 @@ static BOOL ICInfo_enum_handler(const char *drv, int nr, void *param) */ BOOL VFWAPI ICInfo( DWORD fccType, DWORD fccHandler, ICINFO *lpicinfo) { - TRACE("(%s,%s/%08lx,%p)\n", + TRACE("(%s,%s/%08x,%p)\n", wine_dbgstr_fcc(fccType), wine_dbgstr_fcc(fccHandler), fccHandler, lpicinfo); + lpicinfo->fccType = fccType; lpicinfo->fccHandler = fccHandler; return enum_drivers(fccType, ICInfo_enum_handler, lpicinfo); } @@ -258,8 +263,8 @@ BOOL VFWAPI ICInstall(DWORD fccType, DWORD fccHandler, LPARAM lParam, LPSTR szDe reg_driver_list = driver; return TRUE; - oom: - if (driver) HeapFree(GetProcessHeap(), 0, driver); +oom: + HeapFree(GetProcessHeap(), 0, driver); return FALSE; } @@ -269,7 +274,8 @@ BOOL VFWAPI ICInstall(DWORD fccType, DWORD fccHandler, LPARAM lParam, LPSTR szDe BOOL VFWAPI ICRemove(DWORD fccType, DWORD fccHandler, UINT wFlags) { reg_driver** pdriver; - + reg_driver* drv; + TRACE("(%s,%s,0x%08x)\n", wine_dbgstr_fcc(fccType), wine_dbgstr_fcc(fccHandler), wFlags); /* Check if a driver is already registered */ @@ -283,10 +289,10 @@ BOOL VFWAPI ICRemove(DWORD fccType, DWORD fccHandler, UINT wFlags) return FALSE; /* Remove the driver from the list */ + drv = *pdriver; *pdriver = (*pdriver)->next; - if ((*pdriver)->name) - HeapFree(GetProcessHeap(), 0, (*pdriver)->name); - HeapFree(GetProcessHeap(), 0, *pdriver); + HeapFree(GetProcessHeap(), 0, drv->name); + HeapFree(GetProcessHeap(), 0, drv); return TRUE; } @@ -343,20 +349,7 @@ HIC VFWAPI ICOpen(DWORD fccType, DWORD fccHandler, UINT wMode) hdrv = OpenDriver(codecname, drv32W, (LPARAM)&icopen); if (!hdrv) - { - if (fccType == streamtypeVIDEO) - { - codecname[0] = 'v'; - codecname[1] = 'i'; - codecname[2] = 'd'; - codecname[3] = 'c'; - - fccType = ICTYPE_VIDEO; - hdrv = OpenDriver(codecname, drv32W, (LPARAM)&icopen); - } - if (!hdrv) - return 0; - } + return 0; } else { /* The driver has been registered at runtime with its name */ hdrv = OpenDriver(driver->name, NULL, (LPARAM)&icopen); @@ -400,13 +393,13 @@ HIC MSVIDEO_OpenFunction(DWORD fccType, DWORD fccHandler, UINT wMode, ICOPEN icopen; WINE_HIC* whic; - TRACE("(%s,%s,%d,%p,%08lx)\n", + TRACE("(%s,%s,%d,%p,%08x)\n", wine_dbgstr_fcc(fccType), wine_dbgstr_fcc(fccHandler), wMode, lpfnHandler, lpfnHandler16); icopen.dwSize = sizeof(ICOPEN); icopen.fccType = fccType; icopen.fccHandler = fccHandler; - icopen.dwVersion = 0x00001000; /* FIXME */ + icopen.dwVersion = ICVERSION; icopen.dwFlags = wMode; icopen.dwError = 0; icopen.pV1Reserved = NULL; @@ -436,9 +429,9 @@ HIC MSVIDEO_OpenFunction(DWORD fccType, DWORD fccHandler, UINT wMode, /* return value is not checked */ MSVIDEO_SendMessage(whic, DRV_ENABLE, 0L, 0L); - whic->driverId = (DWORD)MSVIDEO_SendMessage(whic, DRV_OPEN, 0, (DWORD)&icopen); + whic->driverId = (DWORD)MSVIDEO_SendMessage(whic, DRV_OPEN, 0, (DWORD_PTR)&icopen); /* FIXME: What should we put here? */ - whic->hdrv = (HDRVR)0; + whic->hdrv = NULL; if (whic->driverId == 0) { @@ -468,7 +461,7 @@ LRESULT VFWAPI ICGetInfo(HIC hic, ICINFO *picinfo, DWORD cb) LRESULT ret; WINE_HIC* whic = MSVIDEO_GetHicPtr(hic); - TRACE("(%p,%p,%ld)\n", hic, picinfo, cb); + TRACE("(%p,%p,%d)\n", hic, picinfo, cb); whic = MSVIDEO_GetHicPtr(hic); if (!whic) return ICERR_BADHANDLE; @@ -477,11 +470,11 @@ LRESULT VFWAPI ICGetInfo(HIC hic, ICINFO *picinfo, DWORD cb) /* (WS) The field szDriver should be initialized because the driver * is not obliged and often will not do it. Some applications, like * VirtualDub, rely on this field and will occasionally crash if it - * goes unitialized. + * goes uninitialized. */ if (cb >= sizeof(ICINFO)) picinfo->szDriver[0] = '\0'; - ret = ICSendMessage(hic, ICM_GETINFO, (DWORD)picinfo, cb); + ret = ICSendMessage(hic, ICM_GETINFO, (DWORD_PTR)picinfo, cb); /* (WS) When szDriver was not supplied by the driver itself, apparently * Windows will set its value equal to the driver file name. This can @@ -517,7 +510,7 @@ static HIC try_driver(driver_info_t *info) if ((hic = ICOpen(info->fccType, info->fccHandler, info->wMode))) { - if (!ICSendMessage(hic, info->querymsg, (DWORD)info->lpbiIn, (DWORD)info->lpbiOut)) + if (!ICSendMessage(hic, info->querymsg, (DWORD_PTR)info->lpbiIn, (DWORD_PTR)info->lpbiOut)) return hic; ICClose(hic); } @@ -610,14 +603,14 @@ HIC VFWAPI ICGetDisplayFormat( if (ICDecompressQuery(tmphic,lpbiIn,NULL) != 0) goto errout; /* no, sorry */ - ICDecompressGetFormat(tmphic,lpbiIn,lpbiOut); + ICSendMessage(tmphic, ICM_DECOMPRESS_GET_FORMAT, (DWORD_PTR)lpbiIn, (DWORD_PTR)lpbiOut); if (lpbiOut->biCompression != 0) { - FIXME("Ooch, how come decompressor outputs compressed data (%ld)??\n", + FIXME("Ooch, how come decompressor outputs compressed data (%d)??\n", lpbiOut->biCompression); } if (lpbiOut->biSize < sizeof(*lpbiOut)) { - FIXME("Ooch, size of output BIH is too small (%ld)\n", + FIXME("Ooch, size of output BIH is too small (%d)\n", lpbiOut->biSize); lpbiOut->biSize = sizeof(*lpbiOut); } @@ -655,7 +648,7 @@ ICCompress( { ICCOMPRESS iccmp; - TRACE("(%p,%ld,%p,%p,%p,%p,...)\n",hic,dwFlags,lpbiOutput,lpData,lpbiInput,lpBits); + TRACE("(%p,%d,%p,%p,%p,%p,...)\n",hic,dwFlags,lpbiOutput,lpData,lpbiInput,lpBits); iccmp.dwFlags = dwFlags; @@ -671,7 +664,7 @@ ICCompress( iccmp.dwQuality = dwQuality; iccmp.lpbiPrev = lpbiPrev; iccmp.lpPrev = lpPrev; - return ICSendMessage(hic,ICM_COMPRESS,(DWORD)&iccmp,sizeof(iccmp)); + return ICSendMessage(hic,ICM_COMPRESS,(DWORD_PTR)&iccmp,sizeof(iccmp)); } /*********************************************************************** @@ -683,9 +676,9 @@ DWORD VFWAPIV ICDecompress(HIC hic,DWORD dwFlags,LPBITMAPINFOHEADER lpbiFormat, ICDECOMPRESS icd; DWORD ret; - TRACE("(%p,%ld,%p,%p,%p,%p)\n",hic,dwFlags,lpbiFormat,lpData,lpbi,lpBits); + TRACE("(%p,%d,%p,%p,%p,%p)\n",hic,dwFlags,lpbiFormat,lpData,lpbi,lpBits); - TRACE("lpBits[0] == %lx\n",((LPDWORD)lpBits)[0]); + TRACE("lpBits[0] == %x\n",((LPDWORD)lpBits)[0]); icd.dwFlags = dwFlags; icd.lpbiInput = lpbiFormat; @@ -694,45 +687,307 @@ DWORD VFWAPIV ICDecompress(HIC hic,DWORD dwFlags,LPBITMAPINFOHEADER lpbiFormat, icd.lpbiOutput = lpbi; icd.lpOutput = lpBits; icd.ckid = 0; - ret = ICSendMessage(hic,ICM_DECOMPRESS,(DWORD)&icd,sizeof(ICDECOMPRESS)); + ret = ICSendMessage(hic,ICM_DECOMPRESS,(DWORD_PTR)&icd,sizeof(ICDECOMPRESS)); - TRACE("lpBits[0] == %lx\n",((LPDWORD)lpBits)[0]); + TRACE("lpBits[0] == %x\n",((LPDWORD)lpBits)[0]); - TRACE("-> %ld\n",ret); + TRACE("-> %d\n",ret); return ret; } +struct choose_compressor +{ + UINT flags; + LPCSTR title; + COMPVARS cv; +}; + +struct codec_info +{ + HIC hic; + ICINFO icinfo; +}; + +static BOOL enum_compressors(HWND list, COMPVARS *pcv, BOOL enum_all) +{ + UINT id, total = 0; + ICINFO icinfo; + + id = 0; + + while (ICInfo(pcv->fccType, id, &icinfo)) + { + struct codec_info *ic; + DWORD idx; + HIC hic; + + id++; + + hic = ICOpen(icinfo.fccType, icinfo.fccHandler, ICMODE_COMPRESS); + + if (hic) + { + /* for unknown reason fccHandler reported by the driver + * doesn't always work, use the one returned by ICInfo instead. + */ + DWORD fccHandler = icinfo.fccHandler; + + if (!enum_all && pcv->lpbiIn) + { + if (ICCompressQuery(hic, pcv->lpbiIn, NULL) != ICERR_OK) + { + TRACE("fccHandler %s doesn't support input DIB format %d\n", + wine_dbgstr_fcc(icinfo.fccHandler), pcv->lpbiIn->bmiHeader.biCompression); + ICClose(hic); + continue; + } + } + + ICGetInfo(hic, &icinfo, sizeof(icinfo)); + icinfo.fccHandler = fccHandler; + + idx = SendMessageW(list, CB_ADDSTRING, 0, (LPARAM)icinfo.szDescription); + + ic = HeapAlloc(GetProcessHeap(), 0, sizeof(struct codec_info)); + memcpy(&ic->icinfo, &icinfo, sizeof(ICINFO)); + ic->hic = hic; + SendMessageW(list, CB_SETITEMDATA, idx, (LPARAM)ic); + } + total++; + } + + return total != 0; +} + +static INT_PTR CALLBACK icm_choose_compressor_dlgproc(HWND hdlg, UINT msg, WPARAM wparam, LPARAM lparam) +{ + switch (msg) + { + case WM_INITDIALOG: + { + struct codec_info *ic; + WCHAR buf[128]; + struct choose_compressor *choose_comp = (struct choose_compressor *)lparam; + + SetWindowLongPtrW(hdlg, DWLP_USER, lparam); + + /* FIXME */ + choose_comp->flags &= ~(ICMF_CHOOSE_DATARATE | ICMF_CHOOSE_KEYFRAME); + + if (choose_comp->title) + SetWindowTextA(hdlg, choose_comp->title); + + if (!(choose_comp->flags & ICMF_CHOOSE_DATARATE)) + { + ShowWindow(GetDlgItem(hdlg, IDC_DATARATE_CHECKBOX), SW_HIDE); + ShowWindow(GetDlgItem(hdlg, IDC_DATARATE), SW_HIDE); + ShowWindow(GetDlgItem(hdlg, IDC_DATARATE_KB), SW_HIDE); + } + + if (!(choose_comp->flags & ICMF_CHOOSE_KEYFRAME)) + { + ShowWindow(GetDlgItem(hdlg, IDC_KEYFRAME_CHECKBOX), SW_HIDE); + ShowWindow(GetDlgItem(hdlg, IDC_KEYFRAME), SW_HIDE); + ShowWindow(GetDlgItem(hdlg, IDC_KEYFRAME_FRAMES), SW_HIDE); + } + + /* FIXME */ + EnableWindow(GetDlgItem(hdlg, IDC_QUALITY_SCROLL), FALSE); + EnableWindow(GetDlgItem(hdlg, IDC_QUALITY_TXT), FALSE); + + /*if (!(choose_comp->flags & ICMF_CHOOSE_PREVIEW)) + ShowWindow(GetDlgItem(hdlg, IDC_PREVIEW), SW_HIDE);*/ + + LoadStringW(MSVFW32_hModule, IDS_FULLFRAMES, buf, 128); + SendDlgItemMessageW(hdlg, IDC_COMP_LIST, CB_ADDSTRING, 0, (LPARAM)buf); + + ic = HeapAlloc(GetProcessHeap(), 0, sizeof(struct codec_info)); + ic->icinfo.fccType = streamtypeVIDEO; + ic->icinfo.fccHandler = comptypeDIB; + ic->hic = 0; + SendDlgItemMessageW(hdlg, IDC_COMP_LIST, CB_SETITEMDATA, 0, (LPARAM)ic); + + enum_compressors(GetDlgItem(hdlg, IDC_COMP_LIST), &choose_comp->cv, choose_comp->flags & ICMF_CHOOSE_ALLCOMPRESSORS); + + SendDlgItemMessageW(hdlg, IDC_COMP_LIST, CB_SETCURSEL, 0, 0); + SetFocus(GetDlgItem(hdlg, IDC_COMP_LIST)); + + SetWindowLongPtrW(hdlg, DWLP_USER, (ULONG_PTR)choose_comp); + break; + } + + case WM_COMMAND: + switch (LOWORD(wparam)) + { + case IDC_COMP_LIST: + { + INT cur_sel; + struct codec_info *ic; + BOOL can_configure = FALSE, can_about = FALSE; + struct choose_compressor *choose_comp; + + if (HIWORD(wparam) != CBN_SELCHANGE && HIWORD(wparam) != CBN_SETFOCUS) + break; + + choose_comp = (struct choose_compressor *)GetWindowLongPtrW(hdlg, DWLP_USER); + + cur_sel = SendMessageW((HWND)lparam, CB_GETCURSEL, 0, 0); + + ic = (struct codec_info *)SendMessageW((HWND)lparam, CB_GETITEMDATA, cur_sel, 0); + if (ic && ic->hic) + { + if (ICQueryConfigure(ic->hic) == DRVCNF_OK) + can_configure = TRUE; + if (ICQueryAbout(ic->hic) == DRVCNF_OK) + can_about = TRUE; + } + EnableWindow(GetDlgItem(hdlg, IDC_CONFIGURE), can_configure); + EnableWindow(GetDlgItem(hdlg, IDC_ABOUT), can_about); + + if (choose_comp->flags & ICMF_CHOOSE_DATARATE) + { + /* FIXME */ + } + if (choose_comp->flags & ICMF_CHOOSE_KEYFRAME) + { + /* FIXME */ + } + + break; + } + + case IDC_CONFIGURE: + case IDC_ABOUT: + { + HWND list = GetDlgItem(hdlg, IDC_COMP_LIST); + INT cur_sel; + struct codec_info *ic; + + if (HIWORD(wparam) != BN_CLICKED) + break; + + cur_sel = SendMessageW(list, CB_GETCURSEL, 0, 0); + + ic = (struct codec_info *)SendMessageW(list, CB_GETITEMDATA, cur_sel, 0); + if (ic && ic->hic) + { + if (LOWORD(wparam) == IDC_CONFIGURE) + ICConfigure(ic->hic, hdlg); + else + ICAbout(ic->hic, hdlg); + } + + break; + } + + case IDOK: + { + HWND list = GetDlgItem(hdlg, IDC_COMP_LIST); + INT cur_sel; + struct codec_info *ic; + + if (HIWORD(wparam) != BN_CLICKED) + break; + + cur_sel = SendMessageW(list, CB_GETCURSEL, 0, 0); + ic = (struct codec_info *)SendMessageW(list, CB_GETITEMDATA, cur_sel, 0); + if (ic) + { + struct choose_compressor *choose_comp = (struct choose_compressor *)GetWindowLongPtrW(hdlg, DWLP_USER); + + choose_comp->cv.hic = ic->hic; + choose_comp->cv.fccType = ic->icinfo.fccType; + choose_comp->cv.fccHandler = ic->icinfo.fccHandler; + /* FIXME: fill everything else */ + + /* prevent closing the codec handle below */ + ic->hic = 0; + } + } + /* fall through */ + case IDCANCEL: + { + HWND list = GetDlgItem(hdlg, IDC_COMP_LIST); + INT idx = 0; + + if (HIWORD(wparam) != BN_CLICKED) + break; + + while (1) + { + struct codec_info *ic; + + ic = (struct codec_info *)SendMessageW(list, CB_GETITEMDATA, idx++, 0); + + if (!ic || (LONG_PTR)ic == CB_ERR) break; + + if (ic->hic) ICClose(ic->hic); + HeapFree(GetProcessHeap(), 0, ic); + } + + EndDialog(hdlg, LOWORD(wparam) == IDOK); + break; + } + + default: + break; + } + break; + + default: + break; + } + + return FALSE; +} + /*********************************************************************** * ICCompressorChoose [MSVFW32.@] */ BOOL VFWAPI ICCompressorChoose(HWND hwnd, UINT uiFlags, LPVOID pvIn, LPVOID lpData, PCOMPVARS pc, LPSTR lpszTitle) { - FIXME("(%p,0x%X,%p,%p,%p,%s),stub!\n",hwnd,uiFlags,pvIn,lpData,pc,lpszTitle); + struct choose_compressor choose_comp; + BOOL ret; - if (pc == NULL || pc->cbSize != sizeof(COMPVARS)) - return FALSE; + TRACE("(%p,%08x,%p,%p,%p,%s)\n", hwnd, uiFlags, pvIn, lpData, pc, lpszTitle); - if ((pc->dwFlags & ICMF_COMPVARS_VALID) == 0) { - pc->dwFlags = 0; - pc->fccType = pc->fccHandler = 0; - pc->hic = NULL; - pc->lpbiOut = NULL; - pc->lpBitsOut = pc->lpBitsPrev = pc->lpState = NULL; - pc->lQ = ICQUALITY_DEFAULT; - pc->lKey = -1; - pc->lDataRate = 300; /* kB */ - pc->lpState = NULL; - pc->cbState = 0; - } - if (pc->fccType == 0) - pc->fccType = ICTYPE_VIDEO; + if (!pc || pc->cbSize != sizeof(COMPVARS)) + return FALSE; - /* FIXME */ - - return FALSE; + if (!(pc->dwFlags & ICMF_COMPVARS_VALID)) + { + pc->dwFlags = 0; + pc->fccType = pc->fccHandler = 0; + pc->hic = NULL; + pc->lpbiIn = NULL; + pc->lpbiOut = NULL; + pc->lpBitsOut = pc->lpBitsPrev = pc->lpState = NULL; + pc->lQ = ICQUALITY_DEFAULT; + pc->lKey = -1; + pc->lDataRate = 300; /* kB */ + pc->lpState = NULL; + pc->cbState = 0; + } + if (pc->fccType == 0) + pc->fccType = ICTYPE_VIDEO; + + choose_comp.cv = *pc; + choose_comp.flags = uiFlags; + choose_comp.title = lpszTitle; + + ret = DialogBoxParamW(MSVFW32_hModule, MAKEINTRESOURCEW(ICM_CHOOSE_COMPRESSOR), hwnd, + icm_choose_compressor_dlgproc, (LPARAM)&choose_comp); + + if (ret) + { + *pc = choose_comp.cv; + pc->dwFlags |= ICMF_COMPVARS_VALID; + } + + return ret; } @@ -748,22 +1003,14 @@ void VFWAPI ICCompressorFree(PCOMPVARS pc) ICClose(pc->hic); pc->hic = NULL; } - if (pc->lpbiOut != NULL) { - GlobalFreePtr(pc->lpbiOut); - pc->lpbiOut = NULL; - } - if (pc->lpBitsOut != NULL) { - GlobalFreePtr(pc->lpBitsOut); - pc->lpBitsOut = NULL; - } - if (pc->lpBitsPrev != NULL) { - GlobalFreePtr(pc->lpBitsPrev); - pc->lpBitsPrev = NULL; - } - if (pc->lpState != NULL) { - GlobalFreePtr(pc->lpBitsPrev); - pc->lpState = NULL; - } + HeapFree(GetProcessHeap(), 0, pc->lpbiIn); + pc->lpbiIn = NULL; + HeapFree(GetProcessHeap(), 0, pc->lpBitsOut); + pc->lpBitsOut = NULL; + HeapFree(GetProcessHeap(), 0, pc->lpBitsPrev); + pc->lpBitsPrev = NULL; + HeapFree(GetProcessHeap(), 0, pc->lpState); + pc->lpState = NULL; pc->dwFlags = 0; } } @@ -774,7 +1021,7 @@ void VFWAPI ICCompressorFree(PCOMPVARS pc) * * */ -LRESULT MSVIDEO_SendMessage(WINE_HIC* whic, UINT msg, DWORD lParam1, DWORD lParam2) +LRESULT MSVIDEO_SendMessage(WINE_HIC* whic, UINT msg, DWORD_PTR lParam1, DWORD_PTR lParam2) { LRESULT ret; @@ -839,7 +1086,7 @@ LRESULT MSVIDEO_SendMessage(WINE_HIC* whic, UINT msg, DWORD lParam1, DWORD lPara XX(ICM_DECOMPRESSEX_END); XX(ICM_SET_STATUS_PROC); default: - FIXME("(%p,0x%08lx,0x%08lx,0x%08lx) unknown message\n",whic,(DWORD)msg,lParam1,lParam2); + FIXME("(%p,0x%08x,0x%08lx,0x%08lx) unknown message\n",whic,(DWORD)msg,lParam1,lParam2); } #undef XX @@ -858,7 +1105,7 @@ LRESULT MSVIDEO_SendMessage(WINE_HIC* whic, UINT msg, DWORD lParam1, DWORD lPara /*********************************************************************** * ICSendMessage [MSVFW32.@] */ -LRESULT VFWAPI ICSendMessage(HIC hic, UINT msg, DWORD lParam1, DWORD lParam2) +LRESULT VFWAPI ICSendMessage(HIC hic, UINT msg, DWORD_PTR lParam1, DWORD_PTR lParam2) { WINE_HIC* whic = MSVIDEO_GetHicPtr(hic); @@ -890,7 +1137,7 @@ DWORD VFWAPIV ICDrawBegin( ICDRAWBEGIN icdb; - TRACE("(%p,%ld,%p,%p,%p,%u,%u,%u,%u,%p,%u,%u,%u,%u,%ld,%ld)\n", + TRACE("(%p,%d,%p,%p,%p,%u,%u,%u,%u,%p,%u,%u,%u,%u,%d,%d)\n", hic, dwFlags, hpal, hwnd, hdc, xDst, yDst, dxDst, dyDst, lpbi, xSrc, ySrc, dxSrc, dySrc, dwRate, dwScale); @@ -909,7 +1156,7 @@ DWORD VFWAPIV ICDrawBegin( icdb.dySrc = dySrc; icdb.dwRate = dwRate; icdb.dwScale = dwScale; - return ICSendMessage(hic,ICM_DRAW_BEGIN,(DWORD)&icdb,sizeof(icdb)); + return ICSendMessage(hic,ICM_DRAW_BEGIN,(DWORD_PTR)&icdb,sizeof(icdb)); } /*********************************************************************** @@ -918,7 +1165,7 @@ DWORD VFWAPIV ICDrawBegin( DWORD VFWAPIV ICDraw(HIC hic, DWORD dwFlags, LPVOID lpFormat, LPVOID lpData, DWORD cbData, LONG lTime) { ICDRAW icd; - TRACE("(%p,%ld,%p,%p,%ld,%ld)\n",hic,dwFlags,lpFormat,lpData,cbData,lTime); + TRACE("(%p,%d,%p,%p,%d,%d)\n",hic,dwFlags,lpFormat,lpData,cbData,lTime); icd.dwFlags = dwFlags; icd.lpFormat = lpFormat; @@ -926,7 +1173,7 @@ DWORD VFWAPIV ICDraw(HIC hic, DWORD dwFlags, LPVOID lpFormat, LPVOID lpData, DWO icd.cbData = cbData; icd.lTime = lTime; - return ICSendMessage(hic,ICM_DRAW,(DWORD)&icd,sizeof(icd)); + return ICSendMessage(hic,ICM_DRAW,(DWORD_PTR)&icd,sizeof(icd)); } /*********************************************************************** @@ -977,7 +1224,7 @@ HANDLE VFWAPI ICImageCompress( LPBITMAPINFO lpbiOut, LONG lQuality, LONG* plSize) { - FIXME("(%p,%08x,%p,%p,%p,%ld,%p)\n", + FIXME("(%p,%08x,%p,%p,%p,%d,%p)\n", hic, uiFlags, lpbiIn, lpBits, lpbiOut, lQuality, plSize); return NULL; @@ -995,7 +1242,7 @@ HANDLE VFWAPI ICImageDecompress( BYTE* pMem = NULL; BOOL bReleaseIC = FALSE; BYTE* pHdr = NULL; - LONG cbHdr = 0; + ULONG cbHdr = 0; BOOL bSucceeded = FALSE; BOOL bInDecompress = FALSE; DWORD biSizeImage; @@ -1047,7 +1294,7 @@ HANDLE VFWAPI ICImageDecompress( cbHdr = ICDecompressGetFormatSize(hic,lpbiIn); if ( cbHdr < sizeof(BITMAPINFOHEADER) ) goto err; - pHdr = (BYTE*)HeapAlloc(GetProcessHeap(),0,cbHdr+sizeof(RGBQUAD)*256); + pHdr = HeapAlloc(GetProcessHeap(),0,cbHdr+sizeof(RGBQUAD)*256); if ( pHdr == NULL ) goto err; ZeroMemory( pHdr, cbHdr+sizeof(RGBQUAD)*256 ); @@ -1081,7 +1328,7 @@ HANDLE VFWAPI ICImageDecompress( goto err; bInDecompress = TRUE; - TRACE( "cbHdr %ld, biSizeImage %ld\n", cbHdr, biSizeImage ); + TRACE( "cbHdr %d, biSizeImage %d\n", cbHdr, biSizeImage ); hMem = GlobalAlloc( GMEM_MOVEABLE|GMEM_ZEROINIT, cbHdr + biSizeImage ); if ( hMem == NULL ) @@ -1104,8 +1351,7 @@ err: ICDecompressEnd( hic ); if ( bReleaseIC ) ICClose(hic); - if ( pHdr != NULL ) - HeapFree(GetProcessHeap(),0,pHdr); + HeapFree(GetProcessHeap(),0,pHdr); if ( pMem != NULL ) GlobalUnlock( hMem ); if ( !bSucceeded && hMem != NULL ) @@ -1116,6 +1362,156 @@ err: return (HANDLE)hMem; } +/*********************************************************************** + * ICSeqCompressFrame [MSVFW32.@] + */ +LPVOID VFWAPI ICSeqCompressFrame(PCOMPVARS pc, UINT uiFlags, LPVOID lpBits, BOOL *pfKey, LONG *plSize) +{ + ICCOMPRESS* icComp = (ICCOMPRESS *)pc->lpState; + DWORD ret; + TRACE("(%p, 0x%08x, %p, %p, %p)\n", pc, uiFlags, lpBits, pfKey, plSize); + + if (pc->cbState != sizeof(ICCOMPRESS)) + { + ERR("Invalid cbState %i\n", pc->cbState); + return NULL; + } + + if (!pc->lKeyCount++) + icComp->dwFlags = ICCOMPRESS_KEYFRAME; + else + { + if (pc->lKey && pc->lKeyCount == (pc->lKey - 1)) + /* No key frames if pc->lKey == 0 */ + pc->lKeyCount = 0; + icComp->dwFlags = 0; + } + + icComp->lpInput = lpBits; + icComp->lFrameNum = pc->lFrame++; + icComp->lpOutput = pc->lpBitsOut; + icComp->lpPrev = pc->lpBitsPrev; + ret = ICSendMessage(pc->hic, ICM_COMPRESS, (DWORD_PTR)icComp, sizeof(icComp)); + + if (icComp->dwFlags & AVIIF_KEYFRAME) + { + pc->lKeyCount = 1; + *pfKey = TRUE; + TRACE("Key frame\n"); + } + else + *pfKey = FALSE; + + *plSize = icComp->lpbiOutput->biSizeImage; + TRACE(" -- 0x%08x\n", ret); + if (ret == ICERR_OK) + { + LPVOID oldprev, oldout; +/* We shift Prev and Out, so we don't have to allocate and release memory */ + oldprev = pc->lpBitsPrev; + oldout = pc->lpBitsOut; + pc->lpBitsPrev = oldout; + pc->lpBitsOut = oldprev; + + TRACE("returning: %p\n", icComp->lpOutput); + return icComp->lpOutput; + } + return NULL; +} + +/*********************************************************************** + * ICSeqCompressFrameEnd [MSVFW32.@] + */ +void VFWAPI ICSeqCompressFrameEnd(PCOMPVARS pc) +{ + DWORD ret; + TRACE("(%p)\n", pc); + ret = ICSendMessage(pc->hic, ICM_COMPRESS_END, 0, 0); + TRACE(" -- %x\n", ret); + HeapFree(GetProcessHeap(), 0, pc->lpbiIn); + HeapFree(GetProcessHeap(), 0, pc->lpBitsPrev); + HeapFree(GetProcessHeap(), 0, pc->lpBitsOut); + HeapFree(GetProcessHeap(), 0, pc->lpState); + pc->lpbiIn = pc->lpBitsPrev = pc->lpBitsOut = pc->lpState = NULL; +} + +/*********************************************************************** + * ICSeqCompressFrameStart [MSVFW32.@] + */ +BOOL VFWAPI ICSeqCompressFrameStart(PCOMPVARS pc, LPBITMAPINFO lpbiIn) +{ + /* I'm ignoring bmiColors as I don't know what to do with it, + * it doesn't appear to be used though + */ + DWORD ret; + pc->lpbiIn = HeapAlloc(GetProcessHeap(), 0, sizeof(BITMAPINFO)); + if (!pc->lpbiIn) + return FALSE; + + memcpy(pc->lpbiIn, lpbiIn, sizeof(BITMAPINFO)); + pc->lpBitsPrev = HeapAlloc(GetProcessHeap(), 0, pc->lpbiIn->bmiHeader.biSizeImage); + if (!pc->lpBitsPrev) + { + HeapFree(GetProcessHeap(), 0, pc->lpbiIn); + return FALSE; + } + + pc->lpState = HeapAlloc(GetProcessHeap(), 0, sizeof(ICCOMPRESS)); + if (!pc->lpState) + { + HeapFree(GetProcessHeap(), 0, pc->lpbiIn); + HeapFree(GetProcessHeap(), 0, pc->lpBitsPrev); + return FALSE; + } + pc->cbState = sizeof(ICCOMPRESS); + + pc->lpBitsOut = HeapAlloc(GetProcessHeap(), 0, pc->lpbiOut->bmiHeader.biSizeImage); + if (!pc->lpBitsOut) + { + HeapFree(GetProcessHeap(), 0, pc->lpbiIn); + HeapFree(GetProcessHeap(), 0, pc->lpBitsPrev); + HeapFree(GetProcessHeap(), 0, pc->lpState); + return FALSE; + } + TRACE("Compvars:\n" + "\tpc:\n" + "\tsize: %i\n" + "\tflags: %i\n" + "\thic: %p\n" + "\ttype: %x\n" + "\thandler: %x\n" + "\tin/out: %p/%p\n" + "key/data/quality: %i/%i/%i\n", + pc->cbSize, pc->dwFlags, pc->hic, pc->fccType, pc->fccHandler, + pc->lpbiIn, pc->lpbiOut, pc->lKey, pc->lDataRate, pc->lQ); + + ret = ICSendMessage(pc->hic, ICM_COMPRESS_BEGIN, (DWORD_PTR)pc->lpbiIn, (DWORD_PTR)pc->lpbiOut); + TRACE(" -- %x\n", ret); + if (ret == ICERR_OK) + { + ICCOMPRESS* icComp = (ICCOMPRESS *)pc->lpState; + /* Initialise some variables */ + pc->lFrame = 0; pc->lKeyCount = 0; + + icComp->lpbiOutput = &pc->lpbiOut->bmiHeader; + icComp->lpbiInput = &pc->lpbiIn->bmiHeader; + icComp->lpckid = NULL; + icComp->dwFrameSize = 0; + icComp->dwQuality = pc->lQ; + icComp->lpbiPrev = &pc->lpbiIn->bmiHeader; + return TRUE; + } + HeapFree(GetProcessHeap(), 0, pc->lpbiIn); + HeapFree(GetProcessHeap(), 0, pc->lpBitsPrev); + HeapFree(GetProcessHeap(), 0, pc->lpState); + HeapFree(GetProcessHeap(), 0, pc->lpBitsOut); + pc->lpBitsPrev = pc->lpbiIn = pc->lpState = pc->lpBitsOut = NULL; + return FALSE; +} + +/*********************************************************************** + * GetFileNamePreview [MSVFW32.@] + */ static BOOL GetFileNamePreview(LPVOID lpofn,BOOL bSave,BOOL bUnicode) { CHAR szFunctionName[20]; diff --git a/reactos/dll/win32/msvfw32/msvideo_private.h b/reactos/dll/win32/msvfw32/msvideo_private.h index bf0544f2f5e..5d8145510dc 100644 --- a/reactos/dll/win32/msvfw32/msvideo_private.h +++ b/reactos/dll/win32/msvfw32/msvideo_private.h @@ -13,20 +13,18 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #ifndef __WINE_MSVIDEO_PRIVATE_H #define __WINE_MSVIDEO_PRIVATE_H -#define COM_NO_WINDOWS_H -#include -#include "windef.h" -#include "winbase.h" -#include "wingdi.h" -#include "winuser.h" -#include "commdlg.h" -#include "vfw.h" +/* Installable Compressor Manager */ +#define ICVERSION 0x0104 + +#define ICM_CHOOSE_COMPRESSOR 1 +#define IDC_COMP_LIST 880 +#define IDS_FULLFRAMES 901 /* HIC struct (same layout as Win95 one) */ typedef struct tagWINE_HIC { @@ -48,7 +46,7 @@ typedef struct tagWINE_HIC { } WINE_HIC; HIC MSVIDEO_OpenFunction(DWORD, DWORD, UINT, DRIVERPROC, DWORD); -LRESULT MSVIDEO_SendMessage(WINE_HIC*, UINT, DWORD, DWORD); +LRESULT MSVIDEO_SendMessage(WINE_HIC*, UINT, DWORD_PTR, DWORD_PTR); WINE_HIC* MSVIDEO_GetHicPtr(HIC); extern LRESULT (CALLBACK *pFnCallTo16)(HDRVR, HIC, UINT, LPARAM, LPARAM); @@ -62,4 +60,17 @@ extern LRESULT (CALLBACK *pFnCallTo16)(HDRVR, HIC, UINT, LPARAM, LPARAM); #define HDRAWDIB_16(h32) (LOWORD(h32)) #define HIC_16(h32) (LOWORD(h32)) +#define IDC_CONFIGURE 882 +#define IDC_ABOUT 883 + +#define IDC_QUALITY_SCROLL 884 +#define IDC_QUALITY_TXT 886 + +#define IDC_KEYFRAME_CHECKBOX 887 +#define IDC_KEYFRAME 888 +#define IDC_KEYFRAME_FRAMES 889 +#define IDC_DATARATE_CHECKBOX 894 +#define IDC_DATARATE 895 +#define IDC_DATARATE_KB 896 + #endif /* __WINE_MSVIDEO_PRIVATE_H */ diff --git a/reactos/dll/win32/msvfw32/rsrc.rc b/reactos/dll/win32/msvfw32/rsrc.rc new file mode 100644 index 00000000000..f0471f33ee9 --- /dev/null +++ b/reactos/dll/win32/msvfw32/rsrc.rc @@ -0,0 +1,30 @@ +/* + * Copyright 2005 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 + */ + +#include "windef.h" +#include "winuser.h" +#include "msvideo_private.h" + +#include "msvfw32_De.rc" +#include "msvfw32_En.rc" +#include "msvfw32_Fr.rc" +#include "msvfw32_Hu.rc" +#include "msvfw32_Ko.rc" +#include "msvfw32_No.rc" +#include "msvfw32_Pl.rc" +#include "msvfw32_Tr.rc" diff --git a/reactos/dll/win32/msvfw32/vfw16.h b/reactos/dll/win32/msvfw32/vfw16.h index 3257ed00039..5cf97915dbc 100644 --- a/reactos/dll/win32/msvfw32/vfw16.h +++ b/reactos/dll/win32/msvfw32/vfw16.h @@ -13,7 +13,7 @@ * * 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 + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #ifndef __WINE_VFW16_H