求教VFW只能捕获第一帧数据,后面的数据通过capSetCallbackOnVideoStream函数无法获得
部分代码如下:
LRESULT CALLBACK VideoCallbackProc(HWND hWnd,LPVIDEOHDR lpVHdr)
{
frm_View->ms->Clear();
frm_View->ms->Write(lpVHdr->lpData,lpVHdr->dwBufferLength);
frm_View->cs->Enter();
frm_View->pMemorySVec.push_back(frm_View->ms);
frm_View->cs->Leave();
frm_View->VST->Resume();
return (LRESULT)TRUE;
}
回调函数是启动VST线程,发送数据走
VFW的启动函数如下:
ghWndCap=capCreateCaptureWindow((LPSTR)"Capture Window",WS_CHILD|WS_VISIBLE,0,0,800,600,(HWND)Panel1->Handle,(int)0);
capPreviewRate(ghWndCap, 15); capSetCallbackOnVideoStream(ghWndCap, (FARPROC)VideoCallbackProc);
capDriverConnect(ghWndCap,0); capDriverGetCaps(ghWndCap,&gCapDriverCaps,sizeof(CAPDRIVERCAPS));
capPreview(ghWndCap, TRUE); //启动Preview模式
if(gCapDriverCaps.fHasOverlay) //检查驱动器是否有叠加能力
capOverlay(ghWndCap,TRUE); //启动Overlay模式
capCaptureSequenceNoFile(ghWndCap);
capPreview(ghWndCap, TRUE);
capPreviewScale(ghWndCap,false);
按照说法:
每获得一帧图象,应该是调用一次回调函数
可是我的Log报告显示只调用了一次回调函数!
大家看看有没有什么方法!
非常谢谢您的回复!
最好不要推荐我放弃现在的方案,使用DS或者DSPack
谢谢!