Author: winesync Date: Wed Apr 25 12:21:59 2007 New Revision: 26499
URL: http://svn.reactos.org/svn/reactos?rev=26499&view=rev Log: Autosyncing with Wine HEAD
Added: trunk/reactos/dll/win32/msvfw32/msvfw32_De.rc (with props) trunk/reactos/dll/win32/msvfw32/msvfw32_En.rc (with props) trunk/reactos/dll/win32/msvfw32/msvfw32_Fr.rc (with props) trunk/reactos/dll/win32/msvfw32/msvfw32_Hu.rc (with props) trunk/reactos/dll/win32/msvfw32/msvfw32_Ko.rc (with props) trunk/reactos/dll/win32/msvfw32/msvfw32_No.rc (with props) trunk/reactos/dll/win32/msvfw32/msvfw32_Pl.rc (with props) trunk/reactos/dll/win32/msvfw32/msvfw32_Tr.rc (with props) trunk/reactos/dll/win32/msvfw32/msvfw32_ros.diff (with props) trunk/reactos/dll/win32/msvfw32/rsrc.rc (with props) Removed: trunk/reactos/dll/win32/msvfw32/Makefile.in trunk/reactos/dll/win32/msvfw32/msvfw32.rc Modified: trunk/reactos/dll/win32/msvfw32/drawdib.c trunk/reactos/dll/win32/msvfw32/mciwnd.c trunk/reactos/dll/win32/msvfw32/msvfw32.rbuild trunk/reactos/dll/win32/msvfw32/msvfw32.spec trunk/reactos/dll/win32/msvfw32/msvideo.spec trunk/reactos/dll/win32/msvfw32/msvideo16.c trunk/reactos/dll/win32/msvfw32/msvideo_main.c trunk/reactos/dll/win32/msvfw32/msvideo_private.h trunk/reactos/dll/win32/msvfw32/vfw16.h
Removed: trunk/reactos/dll/win32/msvfw32/Makefile.in URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msvfw32/Makefile.... ============================================================================== --- trunk/reactos/dll/win32/msvfw32/Makefile.in (original) +++ trunk/reactos/dll/win32/msvfw32/Makefile.in (removed) @@ -1,22 +1,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:
Modified: trunk/reactos/dll/win32/msvfw32/drawdib.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msvfw32/drawdib.c... ============================================================================== --- trunk/reactos/dll/win32/msvfw32/drawdib.c (original) +++ trunk/reactos/dll/win32/msvfw32/drawdib.c Wed Apr 25 12:21:59 2007 @@ -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 <stdarg.h> +#include <stdio.h> #include <string.h> -#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 @@ 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 @@
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 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 @@ 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 @@ 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 @@ /*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) - { - TRACE("Error: %ld\n", GetLastError()); - } - TRACE("Created: %p,%p\n", whdd->hDib, whdd->lpvbits); + if (whdd->hDib) + { + TRACE("Created: %p,%p\n", whdd->hDib, whdd->lpvbits); + } + else + { + ret = FALSE; + TRACE("Error: %d\n", GetLastError()); + } whdd->hOldDib = SelectObject(whdd->hMemDC, whdd->hDib); }
@@ -282,11 +284,8 @@ { 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 @@ 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 @@
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 @@ } 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 @@ * 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; }
@@ -387,6 +395,15 @@ }
/*********************************************************************** + * 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.@] */ BOOL VFWAPI DrawDibSetPalette(HDRAWDIB hdd, HPALETTE hpal) @@ -407,6 +424,15 @@ }
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; }
/*********************************************************************** @@ -455,6 +481,18 @@ 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);
Modified: trunk/reactos/dll/win32/msvfw32/mciwnd.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msvfw32/mciwnd.c?... ============================================================================== --- trunk/reactos/dll/win32/msvfw32/mciwnd.c (original) +++ trunk/reactos/dll/win32/msvfw32/mciwnd.c Wed Apr 25 12:21:59 2007 @@ -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 @@ 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 @@ strcatW(buffer, r_braceW); }
- TRACE("=> '%s'\n", debugstr_w(buffer)); + TRACE("=> %s\n", debugstr_w(buffer)); SetWindowTextW(mwi->hWnd, buffer); }
@@ -429,6 +429,21 @@ 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; @@ -476,6 +491,9 @@
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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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);
Modified: trunk/reactos/dll/win32/msvfw32/msvfw32.rbuild URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msvfw32/msvfw32.r... ============================================================================== --- trunk/reactos/dll/win32/msvfw32/msvfw32.rbuild (original) +++ trunk/reactos/dll/win32/msvfw32/msvfw32.rbuild Wed Apr 25 12:21:59 2007 @@ -1,22 +1,25 @@ <module name="msvfw32" type="win32dll" baseaddress="${BASEADDRESS_MSVFW32}" installbase="system32" installname="msvfw32.dll" allowwarnings="true"> <importlibrary definition="msvfw32.spec.def" /> + <include base="msvfw32">.</include> <include base="ReactOS">include/reactos/wine</include> <define name="__REACTOS__" /> + <define name="__WINESRC__" /> <define name="__USE_W32API" /> <define name="_WIN32_IE">0x600</define> <define name="_WIN32_WINNT">0x501</define> <define name="WINVER">0x501</define> <library>wine</library> <library>winmm</library> + <library>comctl32</library> + <library>version</library> + <library>user32</library> <library>gdi32</library> - <library>comctl32</library> + <library>advapi32</library> <library>kernel32</library> - <library>advapi32</library> - <library>user32</library> <library>ntdll</library> + <file>mciwnd.c</file> + <file>msvideo_main.c</file> <file>drawdib.c</file> - <file>mciwnd.c</file> - <file>msvfw32.rc</file> - <file>msvideo_main.c</file> + <file>rsrc.rc</file> <file>msvfw32.spec</file> </module>
Removed: trunk/reactos/dll/win32/msvfw32/msvfw32.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msvfw32/msvfw32.r... ============================================================================== --- trunk/reactos/dll/win32/msvfw32/msvfw32.rc (original) +++ trunk/reactos/dll/win32/msvfw32/msvfw32.rc (removed) @@ -1,5 +1,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 <reactos/version.rc>
Modified: trunk/reactos/dll/win32/msvfw32/msvfw32.spec URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msvfw32/msvfw32.s... ============================================================================== --- trunk/reactos/dll/win32/msvfw32/msvfw32.spec (original) +++ trunk/reactos/dll/win32/msvfw32/msvfw32.spec Wed Apr 25 12:21:59 2007 @@ -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)
Added: trunk/reactos/dll/win32/msvfw32/msvfw32_De.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msvfw32/msvfw32_D... ============================================================================== --- trunk/reactos/dll/win32/msvfw32/msvfw32_De.rc (added) +++ trunk/reactos/dll/win32/msvfw32/msvfw32_De.rc Wed Apr 25 12:21:59 2007 @@ -1,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)" +}
Propchange: trunk/reactos/dll/win32/msvfw32/msvfw32_De.rc ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/win32/msvfw32/msvfw32_En.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msvfw32/msvfw32_E... ============================================================================== --- trunk/reactos/dll/win32/msvfw32/msvfw32_En.rc (added) +++ trunk/reactos/dll/win32/msvfw32/msvfw32_En.rc Wed Apr 25 12:21:59 2007 @@ -1,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)" +}
Propchange: trunk/reactos/dll/win32/msvfw32/msvfw32_En.rc ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/win32/msvfw32/msvfw32_Fr.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msvfw32/msvfw32_F... ============================================================================== --- trunk/reactos/dll/win32/msvfw32/msvfw32_Fr.rc (added) +++ trunk/reactos/dll/win32/msvfw32/msvfw32_Fr.rc Wed Apr 25 12:21:59 2007 @@ -1,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)" +}
Propchange: trunk/reactos/dll/win32/msvfw32/msvfw32_Fr.rc ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/win32/msvfw32/msvfw32_Hu.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msvfw32/msvfw32_H... ============================================================================== --- trunk/reactos/dll/win32/msvfw32/msvfw32_Hu.rc (added) +++ trunk/reactos/dll/win32/msvfw32/msvfw32_Hu.rc Wed Apr 25 12:21:59 2007 @@ -1,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)" +}
Propchange: trunk/reactos/dll/win32/msvfw32/msvfw32_Hu.rc ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/win32/msvfw32/msvfw32_Ko.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msvfw32/msvfw32_K... ============================================================================== --- trunk/reactos/dll/win32/msvfw32/msvfw32_Ko.rc (added) +++ trunk/reactos/dll/win32/msvfw32/msvfw32_Ko.rc Wed Apr 25 12:21:59 2007 @@ -1,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 "Àüä ÇÁ·¹ÀÓ(ºñ¾ÐÃà)" +}
Propchange: trunk/reactos/dll/win32/msvfw32/msvfw32_Ko.rc ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/win32/msvfw32/msvfw32_No.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msvfw32/msvfw32_N... ============================================================================== --- trunk/reactos/dll/win32/msvfw32/msvfw32_No.rc (added) +++ trunk/reactos/dll/win32/msvfw32/msvfw32_No.rc Wed Apr 25 12:21:59 2007 @@ -1,0 +1,51 @@ +/* + * Copyright 2005 Alexander N. Sørnes alex@thehandofagony.com + * + * 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)" +}
Propchange: trunk/reactos/dll/win32/msvfw32/msvfw32_No.rc ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/win32/msvfw32/msvfw32_Pl.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msvfw32/msvfw32_P... ============================================================================== --- trunk/reactos/dll/win32/msvfw32/msvfw32_Pl.rc (added) +++ trunk/reactos/dll/win32/msvfw32/msvfw32_Pl.rc Wed Apr 25 12:21:59 2007 @@ -1,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)" +}
Propchange: trunk/reactos/dll/win32/msvfw32/msvfw32_Pl.rc ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/win32/msvfw32/msvfw32_Tr.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msvfw32/msvfw32_T... ============================================================================== --- trunk/reactos/dll/win32/msvfw32/msvfw32_Tr.rc (added) +++ trunk/reactos/dll/win32/msvfw32/msvfw32_Tr.rc Wed Apr 25 12:21:59 2007 @@ -1,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ýþ)" +}
Propchange: trunk/reactos/dll/win32/msvfw32/msvfw32_Tr.rc ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/reactos/dll/win32/msvfw32/msvfw32_ros.diff URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msvfw32/msvfw32_r... ============================================================================== --- trunk/reactos/dll/win32/msvfw32/msvfw32_ros.diff (added) +++ trunk/reactos/dll/win32/msvfw32/msvfw32_ros.diff Wed Apr 25 12:21:59 2007 @@ -1,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
Propchange: trunk/reactos/dll/win32/msvfw32/msvfw32_ros.diff ------------------------------------------------------------------------------ svn:eol-style = native
Modified: trunk/reactos/dll/win32/msvfw32/msvideo.spec URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msvfw32/msvideo.s... ============================================================================== --- trunk/reactos/dll/win32/msvfw32/msvideo.spec (original) +++ trunk/reactos/dll/win32/msvfw32/msvideo.spec Wed Apr 25 12:21:59 2007 @@ -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
Modified: trunk/reactos/dll/win32/msvfw32/msvideo16.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msvfw32/msvideo16... ============================================================================== --- trunk/reactos/dll/win32/msvfw32/msvideo16.c (original) +++ trunk/reactos/dll/win32/msvfw32/msvideo16.c Wed Apr 25 12:21:59 2007 @@ -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 - */ - -#define COM_NO_WINDOWS_H + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <stdarg.h> #include <stdio.h> #include <string.h>
-#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 @@ /************************************************************************* * DrawDibStop [MSVIDEO.119] */ -BOOL16 DrawDibStop16(HDRAWDIB16 hdd) +BOOL16 VFWAPI DrawDibStop16(HDRAWDIB16 hdd) { return DrawDibStop(HDRAWDIB_32(hdd)); } @@ -151,7 +154,7 @@
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 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ UnMapLS(lp2); break; } - } - else ret = ICERR_BADHANDLE; - return ret; + return ret; + } + else return ICERR_BADHANDLE; }
/*********************************************************************** @@ -730,6 +733,7 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ }
/************************************************************************** - * DllEntryPoint (MSVIDEO.300) + * DllEntryPoint (MSVIDEO.3) * * MSVIDEO DLL entry point *
Modified: trunk/reactos/dll/win32/msvfw32/msvideo_main.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msvfw32/msvideo_m... ============================================================================== --- trunk/reactos/dll/win32/msvfw32/msvideo_main.c (original) +++ trunk/reactos/dll/win32/msvfw32/msvideo_main.c Wed Apr 25 12:21:59 2007 @@ -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 <stdarg.h> #include <stdio.h> #include <string.h>
-#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 @@
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 @@ 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 @@ /* 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 @@ 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 @@ */ 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 @@ 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 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 @@ 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 @@
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 @@ 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 @@ /* 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 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 @@ /* (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 @@
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 @@ 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 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 @@ 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 @@ ICDECOMPRESS icd; DWORD ret;
- TRACE("(%p,%ld,%p,%p,%p,%p)\n",hic,dwFlags,lpbiFormat,lpData,lpbi,lpBits); - - TRACE("lpBits[0] == %lx\n",((LPDWORD)lpBits)[0]); + TRACE("(%p,%d,%p,%p,%p,%p)\n",hic,dwFlags,lpbiFormat,lpData,lpbi,lpBits); + + TRACE("lpBits[0] == %x\n",((LPDWORD)lpBits)[0]);
icd.dwFlags = dwFlags; icd.lpbiInput = lpbiFormat; @@ -694,15 +687,261 @@ icd.lpbiOutput = lpbi; icd.lpOutput = lpBits; icd.ckid = 0; - ret = ICSendMessage(hic,ICM_DECOMPRESS,(DWORD)&icd,sizeof(ICDECOMPRESS)); - - TRACE("lpBits[0] == %lx\n",((LPDWORD)lpBits)[0]); - - TRACE("-> %ld\n",ret); + ret = ICSendMessage(hic,ICM_DECOMPRESS,(DWORD_PTR)&icd,sizeof(ICDECOMPRESS)); + + TRACE("lpBits[0] == %x\n",((LPDWORD)lpBits)[0]); + + 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.@] @@ -710,29 +949,45 @@ 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); - - if (pc == NULL || pc->cbSize != sizeof(COMPVARS)) - return FALSE; - - 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; - - /* FIXME */ - - return FALSE; + struct choose_compressor choose_comp; + BOOL ret; + + TRACE("(%p,%08x,%p,%p,%p,%s)\n", hwnd, uiFlags, pvIn, lpData, pc, lpszTitle); + + if (!pc || pc->cbSize != sizeof(COMPVARS)) + 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 @@ 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 @@ * * */ -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 @@ 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 @@ /*********************************************************************** * 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 @@
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 @@ 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 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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 @@ 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];
Modified: trunk/reactos/dll/win32/msvfw32/msvideo_private.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msvfw32/msvideo_p... ============================================================================== --- trunk/reactos/dll/win32/msvfw32/msvideo_private.h (original) +++ trunk/reactos/dll/win32/msvfw32/msvideo_private.h Wed Apr 25 12:21:59 2007 @@ -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 <stdarg.h> -#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 @@ } 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 @@ #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 */
Added: trunk/reactos/dll/win32/msvfw32/rsrc.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msvfw32/rsrc.rc?r... ============================================================================== --- trunk/reactos/dll/win32/msvfw32/rsrc.rc (added) +++ trunk/reactos/dll/win32/msvfw32/rsrc.rc Wed Apr 25 12:21:59 2007 @@ -1,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"
Propchange: trunk/reactos/dll/win32/msvfw32/rsrc.rc ------------------------------------------------------------------------------ svn:eol-style = native
Modified: trunk/reactos/dll/win32/msvfw32/vfw16.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msvfw32/vfw16.h?r... ============================================================================== --- trunk/reactos/dll/win32/msvfw32/vfw16.h (original) +++ trunk/reactos/dll/win32/msvfw32/vfw16.h Wed Apr 25 12:21:59 2007 @@ -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