- Timestamp:
 - Apr 28, 2001, 11:11:36 AM (25 years ago)
 - File:
 - 
      
- 1 edited
 
- 
          
  trunk/src/msvfw32/msvfw32.cpp (modified) (33 diffs)
 
 
Legend:
- Unmodified
 - Added
 - Removed
 
- 
      
trunk/src/msvfw32/msvfw32.cpp
r4631 r5614 1 /* $Id: msvfw32.cpp,v 1. 6 2000-11-19 13:04:28 sandervlExp $ */1 /* $Id: msvfw32.cpp,v 1.7 2001-04-28 09:11:36 hugh Exp $ */ 2 2 /* 3 3 * Copyright 1998 Marcus Meissner … … 33 33 34 34 /**************************************************************************** 35 * VideoForWindowsVersion[MSVFW.2][MSVIDEO.2]35 * VideoForWindowsVersion [MSVFW.2][MSVIDEO.2] 36 36 * Returns the version in major.minor form. 37 37 * In Windows95 this returns 0x040003b6 (4.950) … … 39 39 DWORD WINAPI 40 40 VideoForWindowsVersion(void) { 41 return 0x040003B6; /* 4.950 */41 return 0x040003B6; /* 4.950 */ 42 42 } 43 43 … … 45 45 46 46 /************************************************************************** 47 * ICInfo[MSVFW.33]47 * ICInfo [MSVFW.33] 48 48 * Get information about an installable compressor. Return TRUE if there 49 49 * is one. … … 51 51 BOOL WINAPI 52 52 ICInfo( 53 DWORD fccType,/* [in] type of compressor ('vidc') */54 DWORD fccHandler,/* [in] <n>th compressor */55 ICINFO *lpicinfo/* [out] information about compressor */53 DWORD fccType, /* [in] type of compressor ('vidc') */ 54 DWORD fccHandler, /* [in] <n>th compressor */ 55 ICINFO *lpicinfo /* [out] information about compressor */ 56 56 ) { 57 chartype[5],buf[2000];58 59 memcpy(type,&fccType,4);type[4]=0;60 TRACE("(%s,%ld,%p).\n",type,fccHandler,lpicinfo);61 /* does OpenDriver/CloseDriver */62 lpicinfo->dwSize = sizeof(ICINFO);63 lpicinfo->fccType = fccType;64 lpicinfo->dwFlags = 0;65 if (GetPrivateProfileStringA("drivers32",NULL,NULL,buf,2000,"system.ini")) {66 char *s = buf;67 while (*s) {68 if (!lstrncmpiA(type,s,4)) {69 if(!fccHandler--) {70 lpicinfo->fccHandler = mmioStringToFOURCCA(s+5,0);71 return TRUE;72 }73 }74 s=s+lstrlenA(s)+1; /* either next char or \0 */75 }76 }77 return FALSE;57 char type[5],buf[2000]; 58 59 memcpy(type,&fccType,4);type[4]=0; 60 TRACE("(%s,%ld,%p).\n",type,fccHandler,lpicinfo); 61 /* does OpenDriver/CloseDriver */ 62 lpicinfo->dwSize = sizeof(ICINFO); 63 lpicinfo->fccType = fccType; 64 lpicinfo->dwFlags = 0; 65 if (GetPrivateProfileStringA("drivers32",NULL,NULL,buf,2000,"system.ini")) { 66 char *s = buf; 67 while (*s) { 68 if (!lstrncmpiA(type,s,4)) { 69 if(!fccHandler--) { 70 lpicinfo->fccHandler = mmioStringToFOURCCA(s+5,0); 71 return TRUE; 72 } 73 } 74 s=s+lstrlenA(s)+1; /* either next char or \0 */ 75 } 76 } 77 return FALSE; 78 78 } 79 79 80 80 /************************************************************************** 81 * ICOpen[MSVFW.37]81 * ICOpen [MSVFW.37] 82 82 * Opens an installable compressor. Return special handle. 83 83 */ 84 84 HIC WINAPI 85 85 ICOpen(DWORD fccType,DWORD fccHandler,UINT wMode) { 86 char type[5],handler[5],codecname[20]; 87 ICOPEN icopen; 88 HDRVR hdrv; 89 WINE_HIC *whic; 90 91 memcpy(type,&fccType,4);type[4]=0; 92 memcpy(handler,&fccHandler,4);handler[4]=0; 93 TRACE("(%s,%s,0x%08lx)\n",type,handler,(DWORD)wMode); 94 sprintf(codecname,"%s.%s",type,handler); 95 96 /* Well, lParam2 is in fact a LPVIDEO_OPEN_PARMS, but it has the 97 * same layout as ICOPEN 98 */ 99 icopen.fccType = fccType; 100 icopen.fccHandler = fccHandler; 101 icopen.dwSize = sizeof(ICOPEN); 102 icopen.dwFlags = wMode; 103 /* FIXME: do we need to fill out the rest too? */ 104 hdrv=OpenDriverA(codecname,"drivers32",(LPARAM)&icopen); 105 if (!hdrv) { 106 if (!strcasecmp(type,"vids")) { 107 sprintf(codecname,"vidc.%s",handler); 108 fccType = mmioFOURCC('v','i','d','c'); 109 } 110 hdrv=OpenDriverA(codecname,"drivers32",(LPARAM)&icopen); 111 if (!hdrv) 112 return 0; 113 } 114 whic = (WINE_HIC *) HeapAlloc(GetProcessHeap(),0,sizeof(WINE_HIC)); 115 whic->hdrv = hdrv; 116 whic->driverproc= NULL; 117 whic->privatevfw= ICSendMessage((HIC)whic,DRV_OPEN,0,(LPARAM)&icopen); 118 return (HIC)whic; 86 char type[5],handler[5],codecname[20]; 87 ICOPEN icopen; 88 HDRVR hdrv; 89 WINE_HIC *whic; 90 91 memcpy(type,&fccType,4);type[4]=0; 92 memcpy(handler,&fccHandler,4);handler[4]=0; 93 TRACE("(%s,%s,0x%08lx)\n",type,handler,(DWORD)wMode); 94 sprintf(codecname,"%s.%s",type,handler); 95 96 /* Well, lParam2 is in fact a LPVIDEO_OPEN_PARMS, but it has the 97 * same layout as ICOPEN 98 */ 99 memset(&icopen,0,sizeof(ICOPEN)); 100 icopen.fccType = fccType==0x43444956?0x63646976:fccType; //fccType use vidc if VIDC is passed in. 101 icopen.fccHandler = fccHandler; 102 icopen.dwSize = sizeof(ICOPEN); 103 icopen.dwVersion = 0x03320000; // version 3,50,00 ??? 104 icopen.dwFlags = wMode; 105 TRACE("(0x%08lx,0x%08X=%d,%d)\n",icopen.fccType,icopen.fccHandler,icopen.fccHandler,icopen.dwSize); 106 107 /* FIXME: do we need to fill out the rest too? */ 108 hdrv=OpenDriverA(codecname,"drivers32",(LPARAM)&icopen); 109 if (!hdrv) 110 { 111 TRACE("Driver returned Error %08x Version set to %08x\n",icopen.dwError,icopen.dwVersion); 112 if (!strcasecmp(type,"vids")) 113 { 114 sprintf(codecname,"vidc.%s",handler); 115 fccType = mmioFOURCC('v','i','d','c'); 116 } 117 hdrv=OpenDriverA(codecname,"drivers32",(LPARAM)&icopen); 118 if (!hdrv) 119 { 120 TRACE("Driver returned Error %08x Version set to %08x\n",icopen.dwError,icopen.dwVersion); 121 return 0; 122 } 123 } 124 whic = (WINE_HIC *) HeapAlloc(GetProcessHeap(),0,sizeof(WINE_HIC)); 125 whic->hdrv = hdrv; 126 whic->driverproc= NULL; 127 whic->privatevfw= ICSendMessage((HIC)whic,DRV_OPEN,0,(LPARAM)&icopen); 128 return (HIC)whic; 119 129 } 120 130 HIC VFWAPI ICOpenFunction(DWORD fccType, DWORD fccHandler, UINT wMode, 121 131 FARPROC lpfnHandler) { 122 chartype[5],handler[5];123 HIChic;124 WINE_HIC*whic;125 126 memcpy(type,&fccType,4);type[4]=0;127 memcpy(handler,&fccHandler,4);handler[4]=0;128 dprintf(("(%s,%s,%d,%p), stub!\n",type,handler,wMode,lpfnHandler));129 hic = ICOpen(fccType,fccHandler,wMode);130 if (!hic)131 return hic;132 whic = (WINE_HIC*)hic;133 whic->driverproc = lpfnHandler;134 return hic;132 char type[5],handler[5]; 133 HIC hic; 134 WINE_HIC *whic; 135 136 memcpy(type,&fccType,4);type[4]=0; 137 memcpy(handler,&fccHandler,4);handler[4]=0; 138 dprintf(("(%s,%s,%d,%p), stub!\n",type,handler,wMode,lpfnHandler)); 139 hic = ICOpen(fccType,fccHandler,wMode); 140 if (!hic) 141 return hic; 142 whic = (WINE_HIC*)hic; 143 whic->driverproc = lpfnHandler; 144 return hic; 135 145 } 136 146 137 147 138 148 LRESULT WINAPI ICGetInfo(HIC hic,ICINFO *picinfo,DWORD cb) { 139 LRESULTret;140 141 TRACE("(0x%08lx,%p,%ld)\n",(DWORD)hic,picinfo,cb);142 ret = ICSendMessage(hic,ICM_GETINFO,(DWORD)picinfo,cb);143 TRACE("-> 0x%08lx\n",ret);144 return ret;149 LRESULT ret; 150 151 TRACE("(0x%08lx,%p,%ld)\n",(DWORD)hic,picinfo,cb); 152 ret = ICSendMessage(hic,ICM_GETINFO,(DWORD)picinfo,cb); 153 TRACE(" -> 0x%08lx\n",ret); 154 return ret; 145 155 } 146 156 147 157 HIC VFWAPI 148 158 ICLocate( 149 DWORD fccType, DWORD fccHandler, LPBITMAPINFOHEADER lpbiIn,150 LPBITMAPINFOHEADER lpbiOut, WORD wMode159 DWORD fccType, DWORD fccHandler, LPBITMAPINFOHEADER lpbiIn, 160 LPBITMAPINFOHEADER lpbiOut, WORD wMode 151 161 ) { 152 chartype[5],handler[5];153 HIChic;154 DWORDquerymsg;155 156 switch (wMode) {157 case ICMODE_FASTCOMPRESS:158 case ICMODE_COMPRESS:159 querymsg = ICM_COMPRESS_QUERY;160 break;161 case ICMODE_DECOMPRESS:162 case ICMODE_FASTDECOMPRESS:163 querymsg = ICM_DECOMPRESS_QUERY;164 break;165 case ICMODE_DRAW:166 querymsg = ICM_DRAW_QUERY;167 break;168 default:169 dprintf(("Unknown mode (%d)\n",wMode));170 return 0;171 }172 173 /* Easy case: handler/type match, we just fire a query and return */174 hic = ICOpen(fccType,fccHandler,wMode);175 if (hic) {176 if (!ICSendMessage(hic,querymsg,(DWORD)lpbiIn,(DWORD)lpbiOut))177 return hic;178 ICClose(hic);179 }180 type[4]='\0';memcpy(type,&fccType,4);181 handler[4]='\0';memcpy(handler,&fccHandler,4);182 if (fccType==streamtypeVIDEO) {183 hic = ICLocate(ICTYPE_VIDEO,fccHandler,lpbiIn,lpbiOut,wMode);184 if (hic)185 return hic;186 }187 dprintf(("(%s,%s,%p,%p,0x%04x),unhandled!\n",type,handler,lpbiIn,lpbiOut,wMode));188 return 0;162 char type[5],handler[5]; 163 HIC hic; 164 DWORD querymsg; 165 166 switch (wMode) { 167 case ICMODE_FASTCOMPRESS: 168 case ICMODE_COMPRESS: 169 querymsg = ICM_COMPRESS_QUERY; 170 break; 171 case ICMODE_DECOMPRESS: 172 case ICMODE_FASTDECOMPRESS: 173 querymsg = ICM_DECOMPRESS_QUERY; 174 break; 175 case ICMODE_DRAW: 176 querymsg = ICM_DRAW_QUERY; 177 break; 178 default: 179 dprintf(("Unknown mode (%d)\n",wMode)); 180 return 0; 181 } 182 183 /* Easy case: handler/type match, we just fire a query and return */ 184 hic = ICOpen(fccType,fccHandler,wMode); 185 if (hic) { 186 if (!ICSendMessage(hic,querymsg,(DWORD)lpbiIn,(DWORD)lpbiOut)) 187 return hic; 188 ICClose(hic); 189 } 190 type[4]='\0';memcpy(type,&fccType,4); 191 handler[4]='\0';memcpy(handler,&fccHandler,4); 192 if (fccType==streamtypeVIDEO) { 193 hic = ICLocate(ICTYPE_VIDEO,fccHandler,lpbiIn,lpbiOut,wMode); 194 if (hic) 195 return hic; 196 } 197 dprintf(("(%s,%s,%p,%p,0x%04x),unhandled!\n",type,handler,lpbiIn,lpbiOut,wMode)); 198 return 0; 189 199 } 190 200 191 201 HIC VFWAPI ICGetDisplayFormat( 192 HIC hic,LPBITMAPINFOHEADER lpbiIn,LPBITMAPINFOHEADER lpbiOut,193 INT depth,INT dx,INT dy202 HIC hic,LPBITMAPINFOHEADER lpbiIn,LPBITMAPINFOHEADER lpbiOut, 203 INT depth,INT dx,INT dy 194 204 ) { 195 HICtmphic = hic;196 LRESULTlres;197 198 dprintf(("(0x%08lx,%p,%p,%d,%d,%d),stub!\n",(DWORD)hic,lpbiIn,lpbiOut,depth,dx,dy));199 if (!tmphic) {200 tmphic=ICLocate(ICTYPE_VIDEO,0,lpbiIn,NULL,ICMODE_DECOMPRESS);201 if (!tmphic)202 return tmphic;203 }204 if ((dy == lpbiIn->biHeight) || (dx == lpbiIn->biWidth))205 dy = dx = 0; /* no resize needed */206 /* Can we decompress it ? */207 lres = ICDecompressQuery(tmphic,lpbiIn,NULL);208 if (lres)209 goto errout; /* no, sorry */210 ICDecompressGetFormat(hic,lpbiIn,lpbiOut);211 *lpbiOut=*lpbiIn;212 lpbiOut->biCompression = 0;213 lpbiOut->biSize = sizeof(*lpbiOut);214 if (!depth) {215 HDChdc;216 217 hdc = GetDC(0);218 depth = GetDeviceCaps(hdc,12)*GetDeviceCaps(hdc,14);219 ReleaseDC(0,hdc);220 if (depth==15)depth = 16;221 if (depth<8)depth = 8;222 /* more constraints and tests */223 }224 if (lpbiIn->biBitCount == 8)225 depth = 8;226 227 return hic;205 HIC tmphic = hic; 206 LRESULT lres; 207 208 dprintf(("(0x%08lx,%p,%p,%d,%d,%d),stub!\n",(DWORD)hic,lpbiIn,lpbiOut,depth,dx,dy)); 209 if (!tmphic) { 210 tmphic=ICLocate(ICTYPE_VIDEO,0,lpbiIn,NULL,ICMODE_DECOMPRESS); 211 if (!tmphic) 212 return tmphic; 213 } 214 if ((dy == lpbiIn->biHeight) || (dx == lpbiIn->biWidth)) 215 dy = dx = 0; /* no resize needed */ 216 /* Can we decompress it ? */ 217 lres = ICDecompressQuery(tmphic,lpbiIn,NULL); 218 if (lres) 219 goto errout; /* no, sorry */ 220 ICDecompressGetFormat(hic,lpbiIn,lpbiOut); 221 *lpbiOut=*lpbiIn; 222 lpbiOut->biCompression = 0; 223 lpbiOut->biSize = sizeof(*lpbiOut); 224 if (!depth) { 225 HDC hdc; 226 227 hdc = GetDC(0); 228 depth = GetDeviceCaps(hdc,12)*GetDeviceCaps(hdc,14); 229 ReleaseDC(0,hdc); 230 if (depth==15) depth = 16; 231 if (depth<8) depth = 8; 232 /* more constraints and tests */ 233 } 234 if (lpbiIn->biBitCount == 8) 235 depth = 8; 236 237 return hic; 228 238 errout: 229 if (hic!=tmphic)230 ICClose(tmphic);231 return 0;239 if (hic!=tmphic) 240 ICClose(tmphic); 241 return 0; 232 242 } 233 243 234 244 DWORD VFWAPIV 235 245 ICCompress( 236 HIC hic,DWORD dwFlags,LPBITMAPINFOHEADER lpbiOutput,LPVOID lpData,237 LPBITMAPINFOHEADER lpbiInput,LPVOID lpBits,LPDWORD lpckid,238 LPDWORD lpdwFlags,LONG lFrameNum,DWORD dwFrameSize,DWORD dwQuality,239 LPBITMAPINFOHEADER lpbiPrev,LPVOID lpPrev246 HIC hic,DWORD dwFlags,LPBITMAPINFOHEADER lpbiOutput,LPVOID lpData, 247 LPBITMAPINFOHEADER lpbiInput,LPVOID lpBits,LPDWORD lpckid, 248 LPDWORD lpdwFlags,LONG lFrameNum,DWORD dwFrameSize,DWORD dwQuality, 249 LPBITMAPINFOHEADER lpbiPrev,LPVOID lpPrev 240 250 ) { 241 ICCOMPRESSiccmp;242 243 iccmp.dwFlags= dwFlags;244 245 iccmp.lpbiOutput= lpbiOutput;246 iccmp.lpOutput= lpData;247 iccmp.lpbiInput= lpbiInput;248 iccmp.lpInput= lpBits;249 250 iccmp.lpckid= lpckid;251 iccmp.lpdwFlags= lpdwFlags;252 iccmp.lFrameNum= lFrameNum;253 iccmp.dwFrameSize= dwFrameSize;254 iccmp.dwQuality= dwQuality;255 iccmp.lpbiPrev= lpbiPrev;256 iccmp.lpPrev= lpPrev;257 return ICSendMessage(hic,ICM_COMPRESS,(LPARAM)&iccmp,sizeof(iccmp));251 ICCOMPRESS iccmp; 252 253 iccmp.dwFlags = dwFlags; 254 255 iccmp.lpbiOutput = lpbiOutput; 256 iccmp.lpOutput = lpData; 257 iccmp.lpbiInput = lpbiInput; 258 iccmp.lpInput = lpBits; 259 260 iccmp.lpckid = lpckid; 261 iccmp.lpdwFlags = lpdwFlags; 262 iccmp.lFrameNum = lFrameNum; 263 iccmp.dwFrameSize = dwFrameSize; 264 iccmp.dwQuality = dwQuality; 265 iccmp.lpbiPrev = lpbiPrev; 266 iccmp.lpPrev = lpPrev; 267 return ICSendMessage(hic,ICM_COMPRESS,(LPARAM)&iccmp,sizeof(iccmp)); 258 268 } 259 269 260 270 DWORD VFWAPIV 261 271 ICDecompress(HIC hic,DWORD dwFlags,LPBITMAPINFOHEADER lpbiFormat,LPVOID lpData,LPBITMAPINFOHEADER lpbi,LPVOID lpBits) { 262 ICDECOMPRESSicd;263 264 icd.dwFlags= dwFlags;265 icd.lpbiInput= lpbiFormat;266 icd.lpInput= lpData;267 268 icd.lpbiOutput= lpbi;269 icd.lpOutput= lpBits;270 icd.ckid= 0;271 return ICSendMessage(hic,ICM_DECOMPRESS,(LPARAM)&icd,sizeof(icd));272 ICDECOMPRESS icd; 273 274 icd.dwFlags = dwFlags; 275 icd.lpbiInput = lpbiFormat; 276 icd.lpInput = lpData; 277 278 icd.lpbiOutput = lpbi; 279 icd.lpOutput = lpBits; 280 icd.ckid = 0; 281 return ICSendMessage(hic,ICM_DECOMPRESS,(LPARAM)&icd,sizeof(icd)); 272 282 } 273 283 274 284 LRESULT VFWAPI 275 285 ICSendMessage(HIC hic,UINT msg,DWORD lParam1,DWORD lParam2) { 276 LRESULTret;277 WINE_HIC*whic = (WINE_HIC*)hic;286 LRESULT ret; 287 WINE_HIC *whic = (WINE_HIC*)hic; 278 288 279 289 #define XX(x) case x: TRACE("(0x%08lx,"#x",0x%08lx,0x%08lx)\n",(DWORD)hic,lParam1,lParam2);break; 280 290 281 switch (msg) {282 XX(ICM_ABOUT)283 XX(ICM_GETINFO)284 XX(ICM_COMPRESS_FRAMES_INFO)285 XX(ICM_COMPRESS_GET_FORMAT)286 XX(ICM_COMPRESS_GET_SIZE)287 XX(ICM_COMPRESS_QUERY)288 XX(ICM_COMPRESS_BEGIN)289 XX(ICM_COMPRESS)290 XX(ICM_COMPRESS_END)291 XX(ICM_DECOMPRESS_GET_FORMAT)292 XX(ICM_DECOMPRESS_QUERY)293 XX(ICM_DECOMPRESS_BEGIN)294 XX(ICM_DECOMPRESS)295 XX(ICM_DECOMPRESS_END)296 XX(ICM_DECOMPRESS_SET_PALETTE)297 XX(ICM_DECOMPRESS_GET_PALETTE)298 XX(ICM_DRAW_QUERY)299 XX(ICM_DRAW_BEGIN)300 XX(ICM_DRAW_GET_PALETTE)301 XX(ICM_DRAW_START)302 XX(ICM_DRAW_STOP)303 XX(ICM_DRAW_END)304 XX(ICM_DRAW_GETTIME)305 XX(ICM_DRAW)306 XX(ICM_DRAW_WINDOW)307 XX(ICM_DRAW_SETTIME)308 XX(ICM_DRAW_REALIZE)309 XX(ICM_DRAW_FLUSH)310 XX(ICM_DRAW_RENDERBUFFER)311 XX(ICM_DRAW_START_PLAY)312 XX(ICM_DRAW_STOP_PLAY)313 XX(ICM_DRAW_SUGGESTFORMAT)314 XX(ICM_DRAW_CHANGEPALETTE)315 XX(ICM_GETBUFFERSWANTED)316 XX(ICM_GETDEFAULTKEYFRAMERATE)317 XX(ICM_DECOMPRESSEX_BEGIN)318 XX(ICM_DECOMPRESSEX_QUERY)319 XX(ICM_DECOMPRESSEX)320 XX(ICM_DECOMPRESSEX_END)321 XX(ICM_SET_STATUS_PROC)322 default:323 dprintf(("(0x%08lx,0x%08lx,0x%08lx,0x%08lx)\n",(DWORD)hic,(DWORD)msg,lParam1,lParam2));324 }291 switch (msg) { 292 XX(ICM_ABOUT) 293 XX(ICM_GETINFO) 294 XX(ICM_COMPRESS_FRAMES_INFO) 295 XX(ICM_COMPRESS_GET_FORMAT) 296 XX(ICM_COMPRESS_GET_SIZE) 297 XX(ICM_COMPRESS_QUERY) 298 XX(ICM_COMPRESS_BEGIN) 299 XX(ICM_COMPRESS) 300 XX(ICM_COMPRESS_END) 301 XX(ICM_DECOMPRESS_GET_FORMAT) 302 XX(ICM_DECOMPRESS_QUERY) 303 XX(ICM_DECOMPRESS_BEGIN) 304 XX(ICM_DECOMPRESS) 305 XX(ICM_DECOMPRESS_END) 306 XX(ICM_DECOMPRESS_SET_PALETTE) 307 XX(ICM_DECOMPRESS_GET_PALETTE) 308 XX(ICM_DRAW_QUERY) 309 XX(ICM_DRAW_BEGIN) 310 XX(ICM_DRAW_GET_PALETTE) 311 XX(ICM_DRAW_START) 312 XX(ICM_DRAW_STOP) 313 XX(ICM_DRAW_END) 314 XX(ICM_DRAW_GETTIME) 315 XX(ICM_DRAW) 316 XX(ICM_DRAW_WINDOW) 317 XX(ICM_DRAW_SETTIME) 318 XX(ICM_DRAW_REALIZE) 319 XX(ICM_DRAW_FLUSH) 320 XX(ICM_DRAW_RENDERBUFFER) 321 XX(ICM_DRAW_START_PLAY) 322 XX(ICM_DRAW_STOP_PLAY) 323 XX(ICM_DRAW_SUGGESTFORMAT) 324 XX(ICM_DRAW_CHANGEPALETTE) 325 XX(ICM_GETBUFFERSWANTED) 326 XX(ICM_GETDEFAULTKEYFRAMERATE) 327 XX(ICM_DECOMPRESSEX_BEGIN) 328 XX(ICM_DECOMPRESSEX_QUERY) 329 XX(ICM_DECOMPRESSEX) 330 XX(ICM_DECOMPRESSEX_END) 331 XX(ICM_SET_STATUS_PROC) 332 default: 333 dprintf(("(0x%08lx,0x%08lx,0x%08lx,0x%08lx)\n",(DWORD)hic,(DWORD)msg,lParam1,lParam2)); 334 } 325 335 #if 0 326 if (whic->driverproc) {327 dprintf(("(0x%08lx,0x%08lx,0x%08lx,0x%08lx), calling %p\n",(DWORD)hic,(DWORD)msg,lParam1,lParam2,whic->driverproc));328 ret = whic->driverproc(whic->hdrv,1,msg,lParam1,lParam2);329 } else330 #endif 331 ret = SendDriverMessage(whic->hdrv,msg,lParam1,lParam2);332 TRACE("-> 0x%08lx\n",ret);333 return ret;334 } 335 336 DWORD VFWAPIVICDrawBegin(337 HIC hic,338 DWORD dwFlags,/* flags */339 HPALETTE hpal,/* palette to draw with */340 HWND hwnd,/* window to draw to */341 HDC hdc,/* HDC to draw to */342 INT xDst,/* destination rectangle */343 INT yDst,344 INT dxDst,345 INT dyDst,346 LPBITMAPINFOHEADER lpbi,/* format of frame to draw */347 INT xSrc,/* source rectangle */348 INT ySrc,349 INT dxSrc,350 INT dySrc,351 DWORD dwRate,/* frames/second = (dwRate/dwScale) */352 DWORD dwScale) {353 ICDRAWBEGINicdb;354 355 icdb.dwFlags = dwFlags;356 icdb.hpal = hpal;357 icdb.hwnd = hwnd;358 icdb.hdc = hdc;359 icdb.xDst = xDst;360 icdb.yDst = yDst;361 icdb.dxDst = dxDst;362 icdb.dyDst = dyDst;363 icdb.lpbi = lpbi;364 icdb.xSrc = xSrc;365 icdb.ySrc = ySrc;366 icdb.dxSrc = dxSrc;367 icdb.dySrc = dySrc;368 icdb.dwRate = dwRate;369 icdb.dwScale = dwScale;370 return ICSendMessage(hic,ICM_DRAW_BEGIN,(LPARAM)&icdb,sizeof(icdb));336 if (whic->driverproc) { 337 dprintf(("(0x%08lx,0x%08lx,0x%08lx,0x%08lx), calling %p\n",(DWORD)hic,(DWORD)msg,lParam1,lParam2,whic->driverproc)); 338 ret = whic->driverproc(whic->hdrv,1,msg,lParam1,lParam2); 339 } else 340 #endif 341 ret = SendDriverMessage(whic->hdrv,msg,lParam1,lParam2); 342 TRACE(" -> 0x%08lx\n",ret); 343 return ret; 344 } 345 346 DWORD VFWAPIV ICDrawBegin( 347 HIC hic, 348 DWORD dwFlags,/* flags */ 349 HPALETTE hpal, /* palette to draw with */ 350 HWND hwnd, /* window to draw to */ 351 HDC hdc, /* HDC to draw to */ 352 INT xDst, /* destination rectangle */ 353 INT yDst, 354 INT dxDst, 355 INT dyDst, 356 LPBITMAPINFOHEADER lpbi, /* format of frame to draw */ 357 INT xSrc, /* source rectangle */ 358 INT ySrc, 359 INT dxSrc, 360 INT dySrc, 361 DWORD dwRate, /* frames/second = (dwRate/dwScale) */ 362 DWORD dwScale) { 363 ICDRAWBEGIN icdb; 364 365 icdb.dwFlags = dwFlags; 366 icdb.hpal = hpal; 367 icdb.hwnd = hwnd; 368 icdb.hdc = hdc; 369 icdb.xDst = xDst; 370 icdb.yDst = yDst; 371 icdb.dxDst = dxDst; 372 icdb.dyDst = dyDst; 373 icdb.lpbi = lpbi; 374 icdb.xSrc = xSrc; 375 icdb.ySrc = ySrc; 376 icdb.dxSrc = dxSrc; 377 icdb.dySrc = dySrc; 378 icdb.dwRate = dwRate; 379 icdb.dwScale = dwScale; 380 return ICSendMessage(hic,ICM_DRAW_BEGIN,(LPARAM)&icdb,sizeof(icdb)); 371 381 } 372 382 373 383 DWORD VFWAPIV ICDraw( 374 HIC hic,DWORD dwFlags,LPVOID lpFormat,LPVOID lpData,DWORD cbData,375 LONG lTime384 HIC hic,DWORD dwFlags,LPVOID lpFormat,LPVOID lpData,DWORD cbData, 385 LONG lTime 376 386 ) { 377 ICDRAWicd;378 379 icd.dwFlags = dwFlags;380 icd.lpFormat = lpFormat;381 icd.lpData = lpData;382 icd.cbData = cbData;383 icd.lTime = lTime;384 return ICSendMessage(hic,ICM_DRAW,(LPARAM)&icd,sizeof(icd));387 ICDRAW icd; 388 389 icd.dwFlags = dwFlags; 390 icd.lpFormat = lpFormat; 391 icd.lpData = lpData; 392 icd.cbData = cbData; 393 icd.lTime = lTime; 394 return ICSendMessage(hic,ICM_DRAW,(LPARAM)&icd,sizeof(icd)); 385 395 } 386 396 387 397 LRESULT WINAPI ICClose(HIC hic) { 388 WINE_HIC*whic = (WINE_HIC*)hic;389 TRACE("(%d).\n",hic);390 /* FIXME: correct? */391 CloseDriver(whic->hdrv,0,0);392 HeapFree(GetProcessHeap(),0,whic);393 return 0;398 WINE_HIC *whic = (WINE_HIC*)hic; 399 TRACE("(%d).\n",hic); 400 /* FIXME: correct? */ 401 CloseDriver(whic->hdrv,0,0); 402 HeapFree(GetProcessHeap(),0,whic); 403 return 0; 394 404 } 395 405 396 406 HANDLE /* HDRAWDIB */ WINAPI 397 407 DrawDibOpen( void ) { 398 dprintf(("stub!\n"));399 return 0xdead;408 dprintf(("stub!\n")); 409 return 0xdead; 400 410 } 401 411 … … 414 424 INT dySrc, 415 425 UINT wFlags) { 416 dprintf(("(%d,0x%lx,%d,%d,%p,%d,%d,0x%08lx), stub!\n",417 hdd,(DWORD)hdc,dxDst,dyDst,lpbi,dxSrc,dySrc,(DWORD)wFlags418 ));419 return TRUE;426 dprintf(("(%d,0x%lx,%d,%d,%p,%d,%d,0x%08lx), stub!\n", 427 hdd,(DWORD)hdc,dxDst,dyDst,lpbi,dxSrc,dySrc,(DWORD)wFlags 428 )); 429 return TRUE; 420 430 } 421 431 … … 423 433 BOOL VFWAPI 424 434 DrawDibSetPalette(HANDLE /*HDRAWDIB*/ hdd, HPALETTE hpal) { 425 dprintf(("(%d,%d),stub!\n",hdd,hpal));426 return TRUE;435 dprintf(("(%d,%d),stub!\n",hdd,hpal)); 436 return TRUE; 427 437 } 428 438 429 439 UINT VFWAPI DrawDibRealize(HANDLE /*HDRAWDIB*/ hdd, HDC hdc, BOOL fBackground) { 430 dprintf(("(0x%08lx,0x%08lx,%d),stub!\n",(DWORD)hdd,(DWORD)hdc,fBackground));431 return 0;440 dprintf(("(0x%08lx,0x%08lx,%d),stub!\n",(DWORD)hdd,(DWORD)hdc,fBackground)); 441 return 0; 432 442 } 433 443 … … 435 445 HWND VFWAPIV MCIWndCreate (HWND hwndParent, HINSTANCE hInstance, 436 446 DWORD dwStyle,LPVOID szFile) 437 { dprintf(("%x %x %lx %p\n",hwndParent, hInstance, dwStyle, szFile));438 return 0;447 { dprintf(("%x %x %lx %p\n",hwndParent, hInstance, dwStyle, szFile)); 448 return 0; 439 449 } 440 450 HWND VFWAPIV MCIWndCreateA(HWND hwndParent, HINSTANCE hInstance, 441 451 DWORD dwStyle,LPCSTR szFile) 442 { dprintf(("%x %x %lx %s\n",hwndParent, hInstance, dwStyle, szFile));443 return 0;452 { dprintf(("%x %x %lx %s\n",hwndParent, hInstance, dwStyle, szFile)); 453 return 0; 444 454 } 445 455 HWND VFWAPIV MCIWndCreateW(HWND hwndParent, HINSTANCE hInstance, 446 456 DWORD dwStyle,LPCWSTR szFile) 447 { dprintf(("%x %x %lx %s\n",hwndParent, hInstance, dwStyle, debugstr_w(szFile)));448 return 0;457 { dprintf(("%x %x %lx %s\n",hwndParent, hInstance, dwStyle, debugstr_w(szFile))); 458 return 0; 449 459 } 450 460 … … 453 463 454 464 /**************************************************************************** 455 * DrawDibChangePalette[MSVFW.4]465 * DrawDibChangePalette [MSVFW.4] 456 466 */ 457 467 … … 461 471 dprintf(("MSVFW32: DrawDibChangePalette not implemented\n")); 462 472 #endif 463 return TRUE;464 } 465 466 467 /**************************************************************************** 468 * DrawDibDraw[MSVFW.6]473 return TRUE; 474 } 475 476 477 /**************************************************************************** 478 * DrawDibDraw [MSVFW.6] 469 479 */ 470 480 BOOL VFWAPI DrawDibDraw(HANDLE /*HDRAWDIB*/ hdd, … … 490 500 491 501 /**************************************************************************** 492 * DrawDibEnd[MSVFW.7]502 * DrawDibEnd [MSVFW.7] 493 503 */ 494 504 BOOL VFWAPI DrawDibEnd(HANDLE /*HDRAWDIB*/ hdd) … … 502 512 503 513 /**************************************************************************** 504 * DrawDibGetBuffer[MSVFW.8]514 * DrawDibGetBuffer [MSVFW.8] 505 515 */ 506 516 LPVOID VFWAPI DrawDibGetBuffer(HANDLE /*HDRAWDIB*/ hdd, LPBITMAPINFOHEADER lpbi, DWORD dwSize, DWORD dwFlags) … … 514 524 515 525 /**************************************************************************** 516 * DrawDibGetPalette[MSVFW.9]526 * DrawDibGetPalette [MSVFW.9] 517 527 */ 518 528 HPALETTE VFWAPI DrawDibGetPalette(HANDLE /*HDRAWDIB*/ hdd) … … 526 536 527 537 /**************************************************************************** 528 * DrawDibProfileDisplay[MSVFW.11]538 * DrawDibProfileDisplay [MSVFW.11] 529 539 */ 530 540 DWORD VFWAPI DrawDibProfileDisplay(LPBITMAPINFOHEADER lpbi) … … 538 548 539 549 /**************************************************************************** 540 * DrawDibStart[MSVFW.14]550 * DrawDibStart [MSVFW.14] 541 551 */ 542 552 BOOL VFWAPI DrawDibStart(HANDLE /*HDRAWDIB*/ hdd, DWORD rate) … … 545 555 dprintf(("MSVFW32: DrawDibStart not implemented\n")); 546 556 #endif 547 return TRUE;548 } 549 550 551 /**************************************************************************** 552 * DrawDibStop[MSVFW.15]557 return TRUE; 558 } 559 560 561 /**************************************************************************** 562 * DrawDibStop [MSVFW.15] 553 563 */ 554 564 BOOL VFWAPI DrawDibStop(HANDLE /*HDRAWDIB*/ hdd) … … 557 567 dprintf(("MSVFW32: DrawDibStop not implemented\n")); 558 568 #endif 559 return TRUE;560 } 561 562 563 /**************************************************************************** 564 * DrawDibTime[MSVFW.16]569 return TRUE; 570 } 571 572 573 /**************************************************************************** 574 * DrawDibTime [MSVFW.16] 565 575 */ 566 576 BOOL VFWAPI DrawDibTime(HANDLE /*HDRAWDIB*/ hdd, DWORD lpddtime) … … 569 579 dprintf(("MSVFW32: DrawDibTime not implemented\n")); 570 580 #endif 571 return TRUE;572 } 573 574 575 /**************************************************************************** 576 * GetOpenFileNamePreview[MSVFW.17]581 return TRUE; 582 } 583 584 585 /**************************************************************************** 586 * GetOpenFileNamePreview [MSVFW.17] 577 587 */ 578 588 … … 581 591 582 592 /**************************************************************************** 583 * GetOpenFileNamePreviewA[MSVFW.18]593 * GetOpenFileNamePreviewA [MSVFW.18] 584 594 */ 585 595 BOOL VFWAPI GetOpenFileNamePreviewA(LPOPENFILENAMEA lpofn) … … 588 598 dprintf(("MSVFW32: GetOpenFileNamePreviewA not implemented\n")); 589 599 #endif 590 return TRUE;591 } 592 593 594 /**************************************************************************** 595 * GetOpenFileNamePreviewW[MSVFW.19]600 return TRUE; 601 } 602 603 604 /**************************************************************************** 605 * GetOpenFileNamePreviewW [MSVFW.19] 596 606 */ 597 607 BOOL VFWAPI GetOpenFileNamePreviewW(LPOPENFILENAMEW lpofn) … … 600 610 dprintf(("MSVFW32: GetOpenFileNamePreviewW not implemented\n")); 601 611 #endif 602 return TRUE;603 } 604 605 606 /**************************************************************************** 607 * GetSaveFileNamePreviewA[MSVFW.20]612 return TRUE; 613 } 614 615 616 /**************************************************************************** 617 * GetSaveFileNamePreviewA [MSVFW.20] 608 618 */ 609 619 BOOL VFWAPI GetSaveFileNamePreviewA(LPOPENFILENAMEA lpofn) … … 612 622 dprintf(("MSVFW32: GetSaveFileNamePreviewA not implemented\n")); 613 623 #endif 614 return TRUE;615 } 616 617 618 /**************************************************************************** 619 * GetSaveFileNamePreviewW[MSVFW.21]624 return TRUE; 625 } 626 627 628 /**************************************************************************** 629 * GetSaveFileNamePreviewW [MSVFW.21] 620 630 */ 621 631 BOOL VFWAPI GetSaveFileNamePreviewW(LPOPENFILENAMEW lpofn) … … 624 634 dprintf(("MSVFW32: GetSaveFileNamePreviewW not implemented\n")); 625 635 #endif 626 return TRUE;627 } 628 629 630 /**************************************************************************** 631 * ICCompressorChoose[MSVFW.24]636 return TRUE; 637 } 638 639 640 /**************************************************************************** 641 * ICCompressorChoose [MSVFW.24] 632 642 */ 633 643 BOOL VFWAPI ICCompressorChoose( … … 642 652 dprintf(("MSVFW32: ICCompressorChoose not implemented\n")); 643 653 #endif 644 return TRUE;645 } 646 647 648 /**************************************************************************** 649 * ICCompressorFree[MSVFW.25]654 return TRUE; 655 } 656 657 658 /**************************************************************************** 659 * ICCompressorFree [MSVFW.25] 650 660 */ 651 661 void VFWAPI ICCompressorFree(PCOMPVARS pc) … … 654 664 dprintf(("MSVFW32: ICCompressorFree not implemented\n")); 655 665 #endif 656 return;657 } 658 659 660 /**************************************************************************** 661 * ICImageCompress[MSVFW.31]666 return; 667 } 668 669 670 /**************************************************************************** 671 * ICImageCompress [MSVFW.31] 662 672 */ 663 673 HANDLE VFWAPI ICImageCompress( 664 674 HIC hic, // compressor to use 665 675 UINT uiFlags, // flags (none yet) 666 LPBITMAPINFO lpbiIn, // format to compress from676 LPBITMAPINFO lpbiIn, // format to compress from 667 677 LPVOID lpBits, // data to compress 668 678 LPBITMAPINFO lpbiOut, // compress to this (NULL ==> default) … … 673 683 dprintf(("MSVFW32: ICImageCompress not implemented\n")); 674 684 #endif 675 return 0;676 } 677 678 679 /**************************************************************************** 680 * ICImageDecompress[MSVFW.32]685 return 0; 686 } 687 688 689 /**************************************************************************** 690 * ICImageDecompress [MSVFW.32] 681 691 */ 682 692 HANDLE VFWAPI ICImageDecompress( … … 690 700 dprintf(("MSVFW32: ICImageDecompress not implemented\n")); 691 701 #endif 692 return 0;693 } 694 695 696 /**************************************************************************** 697 * ICInstall[MSVFW.34]702 return 0; 703 } 704 705 706 /**************************************************************************** 707 * ICInstall [MSVFW.34] 698 708 */ 699 709 BOOL VFWAPI ICInstall(DWORD fccType, DWORD fccHandler, LPARAM lParam, LPSTR szDesc, UINT wFlags) … … 702 712 dprintf(("MSVFW32: ICInstall not implemented\n")); 703 713 #endif 704 return TRUE;714 return TRUE; 705 715 } 706 716 707 717 708 718 /************************************************************************** 709 * ICRemove[MSVFW.39]719 * ICRemove [MSVFW.39] 710 720 */ 711 721 BOOL VFWAPI ICRemove(DWORD fccType, DWORD fccHandler, UINT wFlags) … … 714 724 dprintf(("MSVFW32: ICRemove not implemented\n")); 715 725 #endif 716 return TRUE;726 return TRUE; 717 727 } 718 728 719 729 720 730 /************************************************************************** 721 * ICSeqCompressFrame[MSVFW.41]731 * ICSeqCompressFrame [MSVFW.41] 722 732 */ 723 733 LPVOID VFWAPI ICSeqCompressFrame( … … 725 735 UINT uiFlags, // flags 726 736 LPVOID lpBits, // input DIB bits 727 BOOL *pfKey,// did it end up being a key frame?728 LONG *plSize)// size to compress to/of returned image737 BOOL *pfKey, // did it end up being a key frame? 738 LONG *plSize) // size to compress to/of returned image 729 739 { 730 740 #ifdef DEBUG 731 741 dprintf(("MSVFW32: ICSeqCompressFrame not implemented\n")); 732 742 #endif 733 return 0;743 return 0; 734 744 } 735 745 736 746 737 747 /************************************************************************** 738 * ICSeqCompressFrameEnd[MSVFW.42]748 * ICSeqCompressFrameEnd [MSVFW.42] 739 749 */ 740 750 BOOL VFWAPI ICSeqCompressFrameStart(PCOMPVARS pc, LPBITMAPINFO lpbiIn) … … 743 753 dprintf(("MSVFW32: ICSeqCompressFrameEnd not implemented\n")); 744 754 #endif 745 return TRUE;755 return TRUE; 746 756 } 747 757 748 758 749 759 /************************************************************************** 750 * ICSeqCompressFrameStart[MSVFW.43]760 * ICSeqCompressFrameStart [MSVFW.43] 751 761 */ 752 762 void VFWAPI ICSeqCompressFrameEnd(PCOMPVARS pc) … … 755 765 dprintf(("MSVFW32: ICSeqCompressFrameStart not implemented\n")); 756 766 #endif 757 return;767 return; 758 768 } 759 769 760 770 761 771 /************************************************************************** 762 * MCIWndRegisterClass[MSVFW.47]772 * MCIWndRegisterClass [MSVFW.47] 763 773 */ 764 774 BOOL VFWAPIV MCIWndRegisterClass() … … 767 777 dprintf(("MSVFW32: MCIWndRegisterClass not implemented\n")); 768 778 #endif 769 return TRUE;770 } 779 return TRUE; 780 }  
  Note:
 See   TracChangeset
 for help on using the changeset viewer.
  