--- branches/dev-api-4/xvidcore/vfw/src/driverproc.c 2003/02/22 08:24:01 889 +++ branches/dev-api-4/xvidcore/vfw/src/driverproc.c 2003/05/14 11:44:29 1017 @@ -30,7 +30,9 @@ #include #include +#include "vfwext.h" +#include "debug.h" #include "codec.h" #include "config.h" #include "resource.h" @@ -41,7 +43,7 @@ DWORD ul_reason_for_call, LPVOID lpReserved) { - hInst = (HINSTANCE) hModule; + g_hInst = (HINSTANCE) hModule; return TRUE; } @@ -66,7 +68,7 @@ return DRV_OK; case DRV_OPEN : - DEBUG("DRV_OPEN"); + DPRINTF("DRV_OPEN"); { ICOPEN * icopen = (ICOPEN *)lParam2; @@ -86,8 +88,9 @@ return 0; } - codec->ehandle = codec->dhandle = NULL; - codec->fbase = 25; + codec->config.ci_valid = 0; + codec->ehandle = codec->dhandle = NULL; + codec->fbase = 25; codec->fincr = 1; config_reg_get(&codec->config); @@ -106,7 +109,7 @@ } case DRV_CLOSE : - DEBUG("DRV_CLOSE"); + DPRINTF("DRV_CLOSE"); // compress_end/decompress_end don't always get called compress_end(codec); decompress_end(codec); @@ -129,7 +132,7 @@ /* info */ case ICM_GETINFO : - DEBUG("ICM_GETINFO"); + DPRINTF("ICM_GETINFO"); { ICINFO *icinfo = (ICINFO *)lParam1; @@ -152,12 +155,12 @@ /* state control */ case ICM_ABOUT : - DEBUG("ICM_ABOUT"); - DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_ABOUT), (HWND)lParam1, about_proc, 0); + DPRINTF("ICM_ABOUT"); + DialogBoxParam(g_hInst, MAKEINTRESOURCE(IDD_ABOUT), (HWND)lParam1, about_proc, 0); return ICERR_OK; case ICM_CONFIGURE : - DEBUG("ICM_CONFIGURE"); + DPRINTF("ICM_CONFIGURE"); if (lParam1 != -1) { CONFIG temp; @@ -165,7 +168,7 @@ codec->config.save = FALSE; memcpy(&temp, &codec->config, sizeof(CONFIG)); - DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_MAIN), (HWND)lParam1, main_proc, (LPARAM)&temp); + DialogBoxParam(g_hInst, MAKEINTRESOURCE(IDD_MAIN), (HWND)lParam1, main_proc, (LPARAM)&temp); if (temp.save) { @@ -176,7 +179,7 @@ return ICERR_OK; case ICM_GETSTATE : - DEBUG("ICM_GETSTATE"); + DPRINTF("ICM_GETSTATE"); if ((void*)lParam1 == NULL) { return sizeof(CONFIG); @@ -185,10 +188,10 @@ return ICERR_OK; case ICM_SETSTATE : - DEBUG("ICM_SETSTATE"); + DPRINTF("ICM_SETSTATE"); if ((void*)lParam1 == NULL) { - DEBUG("ICM_SETSTATE : DEFAULT"); + DPRINTF("ICM_SETSTATE : DEFAULT"); config_reg_get(&codec->config); return 0; } @@ -215,53 +218,53 @@ /* compressor */ case ICM_COMPRESS_QUERY : - DEBUG("ICM_COMPRESS_QUERY"); + DPRINTF("ICM_COMPRESS_QUERY"); return compress_query(codec, (BITMAPINFO *)lParam1, (BITMAPINFO *)lParam2); case ICM_COMPRESS_GET_FORMAT : - DEBUG("ICM_COMPRESS_GET_FORMAT"); + DPRINTF("ICM_COMPRESS_GET_FORMAT"); return compress_get_format(codec, (BITMAPINFO *)lParam1, (BITMAPINFO *)lParam2); case ICM_COMPRESS_GET_SIZE : - DEBUG("ICM_COMPRESS_GET_SIZE"); + DPRINTF("ICM_COMPRESS_GET_SIZE"); return compress_get_size(codec, (BITMAPINFO *)lParam1, (BITMAPINFO *)lParam2); case ICM_COMPRESS_FRAMES_INFO : - DEBUG("ICM_COMPRESS_FRAMES_INFO"); + DPRINTF("ICM_COMPRESS_FRAMES_INFO"); return compress_frames_info(codec, (ICCOMPRESSFRAMES *)lParam1); case ICM_COMPRESS_BEGIN : - DEBUG("ICM_COMPRESS_BEGIN"); + DPRINTF("ICM_COMPRESS_BEGIN"); return compress_begin(codec, (BITMAPINFO *)lParam1, (BITMAPINFO *)lParam2); case ICM_COMPRESS_END : - DEBUG("ICM_COMPRESS_END"); + DPRINTF("ICM_COMPRESS_END"); return compress_end(codec); case ICM_COMPRESS : - DEBUG("ICM_COMPRESS"); + DPRINTF("ICM_COMPRESS"); return compress(codec, (ICCOMPRESS *)lParam1); /* decompressor */ case ICM_DECOMPRESS_QUERY : - DEBUG("ICM_DECOMPRESS_QUERY"); + DPRINTF("ICM_DECOMPRESS_QUERY"); return decompress_query(codec, (BITMAPINFO *)lParam1, (BITMAPINFO *)lParam2); case ICM_DECOMPRESS_GET_FORMAT : - DEBUG("ICM_DECOMPRESS_GET_FORMAT"); + DPRINTF("ICM_DECOMPRESS_GET_FORMAT"); return decompress_get_format(codec, (BITMAPINFO *)lParam1, (BITMAPINFO *)lParam2); case ICM_DECOMPRESS_BEGIN : - DEBUG("ICM_DECOMPRESS_BEGIN"); + DPRINTF("ICM_DECOMPRESS_BEGIN"); return decompress_begin(codec, (BITMAPINFO *)lParam1, (BITMAPINFO *)lParam2); case ICM_DECOMPRESS_END : - DEBUG("ICM_DECOMPRESS_END"); + DPRINTF("ICM_DECOMPRESS_END"); return decompress_end(codec); case ICM_DECOMPRESS : - DEBUG("ICM_DECOMPRESS"); + DPRINTF("ICM_DECOMPRESS"); return decompress(codec, (ICDECOMPRESS *)lParam1); case ICM_DECOMPRESS_GET_PALETTE : @@ -272,6 +275,21 @@ case ICM_DECOMPRESSEX: return ICERR_UNSUPPORTED; + /* VFWEXT entry point */ + case ICM_USER+0x0fff : + if (lParam1 == VFWEXT_CONFIGURE_INFO) { + VFWEXT_CONFIGURE_INFO_T * info = (VFWEXT_CONFIGURE_INFO_T*)lParam2; + DPRINTF("%i %i %i %i %i %i", + info->ciWidth, info->ciHeight, + info->ciRate, info->ciScale, + info->ciActiveFrame, info->ciFrameCount); + + codec->config.ci_valid = 1; + memcpy(&codec->config.ci, (void*)lParam2, sizeof(VFWEXT_CONFIGURE_INFO_T)); + return ICERR_OK; + } + return ICERR_UNSUPPORTED; + default: return DefDriverProc(dwDriverId, hDriver, uMsg, lParam1, lParam2); }