Initialize the output buffer parameters to 0 in RegQueryValue*
[wine.git] / programs / avitools / icinfo.c
blob7ecdc1a102982bbca72b95ce6ce6ace98a3349df
1 #include <stdio.h>
2 #include <string.h>
3 #include "windows.h"
4 #include "driver.h"
5 #include "mmsystem.h"
6 #include "vfw.h"
9 int PASCAL WinMain (HANDLE hInstance, HANDLE prev, LPSTR cmdline, int show)
11 int n=0,doabout=0,doconfigure=0;
12 char buf[128],type[5],handler[5];
13 HMODULE msvfw32 = LoadLibrary("msvfw32.dll");
15 BOOL (VFWAPI *fnICInfo)(DWORD fccType, DWORD fccHandler, ICINFO * lpicinfo);
16 LRESULT (VFWAPI *fnICClose)(HIC hic);
17 HIC (VFWAPI *fnICOpen)(DWORD fccType, DWORD fccHandler, UINT wMode);
18 LRESULT (VFWAPI *fnICGetInfo)(HIC hic,ICINFO *picinfo, DWORD cb);
19 LRESULT (VFWAPI *fnICSendMessage)(HIC hic, UINT msg, DWORD dw1, DWORD dw2);
21 #define XX(x) fn##x = (void*)GetProcAddress(msvfw32,#x);
22 XX(ICInfo);
23 XX(ICOpen);
24 XX(ICClose);
25 XX(ICGetInfo);
26 XX(ICSendMessage);
27 #undef XX
29 if (strstr(cmdline,"-about"))
30 doabout = 1;
31 if (strstr(cmdline,"-configure"))
32 doconfigure = 1;
34 printf("Currently installed Video Compressors:\n");
35 while (1) {
36 ICINFO ii;
37 HIC hic;
39 ii.dwSize = sizeof(ii);
40 if (!fnICInfo(ICTYPE_VIDEO,n++,&ii))
41 break;
42 if (!(hic=fnICOpen(ii.fccType,ii.fccHandler,ICMODE_QUERY)))
43 continue;
44 if (!fnICGetInfo(hic,&ii,sizeof(ii))) {
45 fnICClose(hic);
46 continue;
48 #define w2s(w,s) WideCharToMultiByte(0,0,w,-1,s,128,0,NULL)
50 w2s(ii.szName,buf);
51 memcpy(type,&(ii.fccType),4);type[4]='\0';
52 memcpy(handler,&(ii.fccHandler),4);handler[4]='\0';
53 printf("%s.%s: %s\n",type,handler,buf);
54 printf("\tdwFlags: 0x%08lx (",ii.dwFlags);
55 #define XX(x) if (ii.dwFlags & x) printf(#x" ");
56 XX(VIDCF_QUALITY);
57 XX(VIDCF_CRUNCH);
58 XX(VIDCF_TEMPORAL);
59 XX(VIDCF_COMPRESSFRAMES);
60 XX(VIDCF_DRAW);
61 XX(VIDCF_FASTTEMPORALC);
62 XX(VIDCF_FASTTEMPORALD);
63 XX(VIDCF_QUALITYTIME);
64 #undef XX
65 printf(")\n");
66 printf("\tdwVersion: 0x%08lx\n",ii.dwVersion);
67 printf("\tdwVersionICM: 0x%08lx\n",ii.dwVersionICM);
68 w2s(ii.szDescription,buf);
69 printf("\tszDescription: %s\n",buf);
70 if (doabout) ICAbout(hic,0);
71 if (doconfigure && ICQueryConfigure(hic))
72 ICConfigure(hic,0);
73 fnICClose(hic);
75 return 0;