mirror of
https://github.com/reactos/reactos.git
synced 2025-05-24 19:56:38 +00:00
Autosyncing with Wine HEAD
svn path=/trunk/; revision=26499
This commit is contained in:
parent
9e6fba7c97
commit
b0d8e30526
21 changed files with 1127 additions and 228 deletions
|
@ -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:
|
|
@ -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 @@ 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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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>gdi32</library>
|
||||
<library>comctl32</library>
|
||||
<library>kernel32</library>
|
||||
<library>advapi32</library>
|
||||
<library>version</library>
|
||||
<library>user32</library>
|
||||
<library>gdi32</library>
|
||||
<library>advapi32</library>
|
||||
<library>kernel32</library>
|
||||
<library>ntdll</library>
|
||||
<file>drawdib.c</file>
|
||||
<file>mciwnd.c</file>
|
||||
<file>msvfw32.rc</file>
|
||||
<file>msvideo_main.c</file>
|
||||
<file>drawdib.c</file>
|
||||
<file>rsrc.rc</file>
|
||||
<file>msvfw32.spec</file>
|
||||
</module>
|
||||
|
|
|
@ -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 <reactos/version.rc>
|
|
@ -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)
|
||||
|
|
52
reactos/dll/win32/msvfw32/msvfw32_De.rc
Normal file
52
reactos/dll/win32/msvfw32/msvfw32_De.rc
Normal file
|
@ -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)"
|
||||
}
|
51
reactos/dll/win32/msvfw32/msvfw32_En.rc
Normal file
51
reactos/dll/win32/msvfw32/msvfw32_En.rc
Normal file
|
@ -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)"
|
||||
}
|
51
reactos/dll/win32/msvfw32/msvfw32_Fr.rc
Normal file
51
reactos/dll/win32/msvfw32/msvfw32_Fr.rc
Normal file
|
@ -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)"
|
||||
}
|
51
reactos/dll/win32/msvfw32/msvfw32_Hu.rc
Normal file
51
reactos/dll/win32/msvfw32/msvfw32_Hu.rc
Normal file
|
@ -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)"
|
||||
}
|
52
reactos/dll/win32/msvfw32/msvfw32_Ko.rc
Normal file
52
reactos/dll/win32/msvfw32/msvfw32_Ko.rc
Normal file
|
@ -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 "전채 프레임(비압축)"
|
||||
}
|
51
reactos/dll/win32/msvfw32/msvfw32_No.rc
Normal file
51
reactos/dll/win32/msvfw32/msvfw32_No.rc
Normal file
|
@ -0,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)"
|
||||
}
|
52
reactos/dll/win32/msvfw32/msvfw32_Pl.rc
Normal file
52
reactos/dll/win32/msvfw32/msvfw32_Pl.rc
Normal file
|
@ -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)"
|
||||
}
|
53
reactos/dll/win32/msvfw32/msvfw32_Tr.rc
Normal file
53
reactos/dll/win32/msvfw32/msvfw32_Tr.rc
Normal file
|
@ -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ýþ)"
|
||||
}
|
14
reactos/dll/win32/msvfw32/msvfw32_ros.diff
Normal file
14
reactos/dll/win32/msvfw32/msvfw32_ros.diff
Normal file
|
@ -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
|
|
@ -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
|
||||
|
|
|
@ -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 <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 @@ 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
|
||||
*
|
||||
|
|
|
@ -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 @@ 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];
|
||||
|
|
|
@ -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 @@ 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 */
|
||||
|
|
30
reactos/dll/win32/msvfw32/rsrc.rc
Normal file
30
reactos/dll/win32/msvfw32/rsrc.rc
Normal file
|
@ -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"
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue