Updated msvideo / vfw.h, use builtin msvfw32.dll by default, added
[wine] / programs / avitools / icinfo.c
1 #include <stdio.h>
2 #include <strings.h>
3 #include "wintypes.h"
4 #include "windows.h"
5 #include "mmsystem.h"
6 #include "vfw.h"
7
8
9 int PASCAL WinMain (HANDLE hInstance, HANDLE prev, LPSTR cmdline, int show)
10 {
11     int n=0,doabout=0,doconfigure=0;
12     char        buf[128],type[5],handler[5];
13     HMODULE     msvfw32 = LoadLibrary("msvfw32.dll");
14
15 BOOL32  (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);
20
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
28
29     if (strstr(cmdline,"-about"))
30         doabout = 1;
31     if (strstr(cmdline,"-configure"))
32         doconfigure = 1;
33
34     printf("Currently installed Video Compressors:\n");
35     while (1) {
36         ICINFO  ii;
37         HIC     hic;
38
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;
47         }
48 #define w2s(w,s) WideCharToMultiByte(0,0,w,-1,s,128,0,NULL)
49
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 && ICQueryConfigure32(hic))
72                 ICConfigure(hic,0);
73         fnICClose(hic);
74     }
75     return 0;    
76 }
77