#include "stdio.h"
#include "conio.h"
#include "stdlib.h" //for function wcstombs()
#include "windows.h"
#include "vfw.h"
#pragma comment(lib,"vfw32.lib") //此行可省去
int EnumCodecs(char *strName,int *fccHandler)
{
static int i;
int ret=1;
HIC hic;
ICINFO icinfo;
if(!ICInfo(ICTYPE_VIDEO, i, &icinfo))
{
i=0;
return 0;
}
hic = ICOpen(icinfo.fccType, icinfo.fccHandler, ICMODE_QUERY);
if (hic)
{
ICGetInfo(hic, &icinfo, sizeof(icinfo));
//由于得到的szDescription是UNICODE双字节字串,所以要转换为ASCII的
wcstombs(strName,icinfo.szDescription,256);
*fccHandler=icinfo.fccHandler;
}
else ret=-1;
ICClose(hic);
i++;
return ret;
}
main()
{
int i,n;
int fccHandler;
char strName[256];
int ret;
for(;;)
{
ret=EnumCodecs(strName,&fccHandler);
if(ret==1)
printf("0x%x,%s/n",fccHandler,strName);
else if(ret==0) break;
}
getch();
}
上面是枚举OS装入那些编解器,只对VFW的那种有效,对filter无效。解码器可以卸载。对于VFW的那种,在WIN98下它是有system.ini的[drivers32]加入一行,如VIDC.MP42=mpg4c32.dll。对于WIN2K是在注册表加入的。对于filter是用注册,用regsvr32.exe
列举本机安装的解码器(CODEC)
最新推荐文章于 2022-01-09 16:01:04 发布