ICOpen函数返回异常有关问题

ICOpen函数返回错误问题!
需要实现视频的压缩,但是在初始化HIC的时候出现ICOpen函数返回0。
本人初次接触视频压缩处理,请高手不吝赐教!
部分源代码如下:
//BITMAPINFOHEADER的初始化
BHrIn.biCompression = BI_RGB;
BHrIn.biSize = sizeof(BITMAPINFOHEADER);
BHrIn.biBitCount = 8;
BHrIn.biPlanes = 1;
BHrIn.biClrUsed = 0;
BHrIn.biWidth = width;
BHrIn.biHeight = height;
BHrIn.biSizeImage = width*height;
BHrIn.biClrImportant = 0;
BHrIn.biXPelsPerMeter = 0;
BHrIn.biYPelsPerMeter = 0;

HIC hic;
if(ICOpen(ICTYPE_VIDEO, mmioFOURCC('m','p','4','2'), ICMODE_COMPRESS) == 0)
{
DWORD l;
char b[50];
l = GetLastError();
sprintf(b, "错误值是%u", l);
MessageBox(0, b, NULL, MB_OK);

}
if(hic == 0)
{
MessageBox(0, "ICOpen返回无效句柄,解码器没有安装", NULL, MB_OK);
return ;
}
//COMPVARS的初始化
memset(&CV,0,sizeof(COMPVARS));
CV.cbSize = sizeof(COMPVARS);
CV.dwFlags = ICMF_COMPVARS_VALID;
CV.fccHandler = mmioFOURCC('m','p','4','2');
CV.fccType = ICTYPE_VIDEO;
CV.lKey = 15; //设置关键帧
CV.lDataRate = 120; //设置码率kb/s
CV.lQ = 5000;//ICQUALITY_DEFAULT; //设置品质未默认值
CV.hic = hic;
CV.lpbiIn = NULL; //保留
CV.lpBitsOut = NULL; //保留
CV.lpState = NULL; //保留
CV.lKeyCount = 0; //保留
CV.lFrame = 0; //保留
CV.cbState = 0; //保留
CV.lpBitsPrev = 0; //保留

DWORD dwOutDataSize;
char a[50];
dwOutDataSize = ICCompressGetFormatSize(hic, &BHrIn);
sprintf(a, "dwOutDataSize = %u", dwOutDataSize);
MessageBox(0, a, NULL, MB_OK);
pBHrOut = (BITMAPINFO *) new BYTE[dwOutDataSize];

------解决方案--------------------
lz系统中没有编码器,或者编码器不能压缩这种格式,lz试过ICLocate查找没