有关vfw编程中遇到的vcm视频压缩的问题,请大家帮忙!!!

ske3 2003-08-26 02:21:12
小弟在编写一个类似网络视频聊天的程序,在作视频压缩vcm是遇到一个问题,就是无法得到压缩后的buffer。程序部分代码如下:
1、视频压缩的初始化:
void CplaycapDlg::InitCompressor(void)
{
memset(&m_CV,0,sizeof(COMPVARS));
m_CV.dwFlags=ICMF_COMPVARS_VALID;
m_CV.cbSize=sizeof(m_CV);
m_CV.cbState=0;
m_CV.fccHandler=mmioFOURCC('d','i','v','x');
m_CV.fccType=ICTYPE_VIDEO;
m_CV.hic=ICOpen(ICTYPE_VIDEO,mmioFOURCC('d','i','v','x'),ICMODE_COMPRESS);
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=ICQUALITY_DEFAULT;
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);
if (ICSeqCompressFrameStart(&m_CV,&m_InInfo))
AfxMessageBox("压缩初始化成功");
else
AfxMessageBox("压缩初始化失败");
if(ICDecompressBegin(m_CV.hic,m_pOutInfo,&m_InInfo)!=ICERR_OK)
AfxMessageBox("解压初始化失败!");
else
AfxMessageBox("解压初始化成功!");
}
}
2、视频回调(我用的是摄相头):
LRESULT CALLBACK CplaycapDlg::FrameCallBack(HWND hWnd,LPVIDEOHDR lpVHdr)
{
CplaycapDlg* pDlg=(CplaycapDlg*)::AfxGetMainWnd();
pDlg->CompressFrame(lpVHdr);
return TRUE;
}
3、视频压缩并解压
void CplaycapDlg::CompressFrame(LPVIDEOHDR lpVHdr)
{
BOOL bKeyFrame;
m_OutActSize=this->m_InInfo.bmiHeader.biSizeImage;

BYTE* Buf=(BYTE*)ICSeqCompressFrame(&m_CV,0,
lpVHdr->lpData,&bKeyFrame,(long*)&m_OutActSize);//问题出在这里
if(Buf!=NULL)
{
DWORD Result;
Result=ICDecompressm_CV.hic,ICDECOMPRESS_HURRYUP,&m_InInfo.bmiHeader,Buf,&m_pOutInfo->bmiHeader,buff);
//if(Result==ICERR_OK)
AfxMessageBox("解压成功!");
//else
//AfxMessageBox("解压失败!");
CDC *pdc=GetDC();
HDC hdc=pdc->GetSafeHdc();
StretchDIBits(hdc,0,0,176,144,0,0,176,144,buff,&m_InInfo),DIB_RGB_COLORS,SRCCOPY);
}
}
问题就出在第3段代码里,虽然Buf被赋予一个地址(msdn中说被赋予一个就表示压缩成功了)。但该地址所指向的内存单元的值为空。不知道错误出在哪里,请各位大虾帮帮忙,小弟我感激不尽。
...全文
59 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
juniorlp 2003-11-05
  • 打赏
  • 举报
回复
写错了,lipupil@hotmail.com
juniorlp 2003-11-01
  • 打赏
  • 举报
回复
发给我一份,先谢过了。
lipupil@hotmial.com
ske3 2003-09-01
  • 打赏
  • 举报
回复
谢谢你的好意,我现在还在读书。
asan_xu 2003-08-31
  • 打赏
  • 举报
回复
asan-xu@163.net
顺便说一句,我是数字图像网的大斑竹,我们的网站上有视频接口这一块,正缺高手来做斑竹,请你来做个斑竹好吗
www.image2003.com
asan_xu 2003-08-31
  • 打赏
  • 举报
回复
发给我一份好吗,我也在做这个东东!
u2m 2003-08-27
  • 打赏
  • 举报
回复
bestfeng@263.net
学习学习,发给我一份,谢谢
ske3 2003-08-27
  • 打赏
  • 举报
回复
哈哈,问题解决了。

我顶!!!!!
ske3 2003-08-26
  • 打赏
  • 举报
回复
上面只是代码的一部分,如果需要我可以发送我的代码到您的邮箱,希望大家共同讨论来解决问题,谢谢了。要代码的留下邮箱地址。不过,运行本程序需要UBS的摄像头,否则不能运行。

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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