视频压缩的问题(H263压缩的问题)

boydang 2002-11-08 03:34:06
memset(&m_CV,0,sizeof(COMPVARS));//m_CV是COMPVARS类型的成员变量,压缩参数
m_CV.dwFlags=ICMF_COMPVARS_VALID;
m_CV.cbSize=sizeof(m_CV);
m_CV.cbState=0;

// m_CV.fccHandler=mmioFOURCC('m','p','4','2');
// m_CV.fccHandler=842297453; //MicroSoft MPG4 Codec V2
m_CV.fccHandler=859189837; //H.263 Codec 'm','2','6','3'
// m_CV.fccHandler=859189869; //H.263 Codec 'M','2','6','3'
m_CV.fccType=ICTYPE_VIDEO;

m_CV.lDataRate=780;
m_CV.lFrame=0;
m_CV.lKey=15;
m_CV.lKeyCount=0;
m_CV.lpbiIn=NULL;
m_CV.lpBitsOut=NULL;
m_CV.lpBitsPrev=m_CV.lpState=NULL;
m_CV.lQ=5000;
m_CV.hic=ICOpen(ICTYPE_VIDEO,m_CV.fccHandler,ICMODE_COMPRESS);
ICSendMessage(m_CV.hic,0x60c9,0xf7329ace,0xacdeaea2);
if (m_CV.hic!=NULL)
{
m_OutFormatSize=ICCompressGetFormatSize(m_CV.hic,&m_InInfo);
m_pOutInfo=(BITMAPINFO *)new BYTE[m_OutFormatSize];
ICCompressGetFormat(m_CV.hic,&m_InInfo,m_pOutInfo);
m_OutBufferSize=ICCompressGetSize(m_CV.hic,&m_InInfo,m_pOutInfo);
ICSeqCompressFrameStart(&m_CV,&m_InInfo);
}

问题是,选用MPG4压缩编码时,上述一切都正常,选用Microsoft H.263,时,ICOpen返回值没问题,到下面ICCompressGetFormatSize竟然得到了4G大的值,后面的m_OutInfo根本没法分配这么多地址,而采用MPG4时正常是40,如果在这里强制赋40给m_OutFormatSize,给m_pOutInfo分配地址后,ICCompressGetFormat操作后m_pOutInfo里的内容都没有初始化,说明没有成功(成功后,应该会根据相应的m_InInfo初始化m_pOutInfo的相应参数的).
这到底是什么问题,是调用H.263的错误吗?
...全文
146 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
luoxiao10000 2002-11-08
  • 打赏
  • 举报
回复
我也出现过这种问题,用ICCompressorChoose函数选择编码器测试时,选H.263编码器无效,我的系统是WIN2000,不知道是不是系统注册的H.263编码器不能用?

2,553

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧