Beispiel #1
0
void CMainFrame::InitAVIWriteOpt()
{
	CString filename;
	CFileDialog FileDlg(FALSE,_T("avi"));
	if (FileDlg.DoModal()==IDOK)
	{
		filename = FileDlg.GetPathName();
		//capGetVideoFormat(m_hWndCap,&m_InInfo,sizeof(m_InInfo));
		m_Frame = 0 ;
		//AVI文件初始化
		AVIFileInit() ;
		bSaveAVI = TRUE;
		
		//打开文件
		AVIFileOpen(&m_pFile,filename,OF_WRITE | OF_CREATE,NULL);
		memset(&strhdr, 0, sizeof(strhdr)) ;
		strhdr.fccType    = streamtypeVIDEO; 
		strhdr.fccHandler = 0  ;
		strhdr.dwScale    = 1  ;
		strhdr.dwRate     = 25 ; 
		strhdr.dwSuggestedBufferSize = lpbiIn->bmiHeader.biSizeImage;
		SetRect(&strhdr.rcFrame, 0, 0, lpbiIn->bmiHeader.biWidth, lpbiIn->bmiHeader.biHeight);
		ps = NULL;
		//文件文件流
		AVIFileCreateStream(m_pFile,&ps,&strhdr); 
		
		//开始捕捉
		capCaptureSequenceNoFile(m_hWndCap);
	}
}
Beispiel #2
0
/* 开始捕获预览视频 */
void CMainFrame::OnVfwPreviewvideo()
{
	// TODO: 在此添加命令处理程序代码
	CAPTUREPARMS CapParms;

	bPreview =! bPreview;
	if(bPreview){
		capCaptureGetSetup(m_hWndCap,&CapParms,sizeof(CAPTUREPARMS));
		CapParms.dwIndexSize=324000;
		CapParms.fMakeUserHitOKToCapture=!CapParms.fMCIControl;
		CapParms.wPercentDropForError=100;
		CapParms.wNumVideoRequested=5;
		CapParms.wChunkGranularity=0;
		CapParms.fYield=TRUE;
		CapParms.fCaptureAudio=FALSE;
		CapParms.vKeyAbort=0;
		CapParms.fAbortLeftMouse=CapParms.fAbortRightMouse=FALSE;
		CapParms.dwRequestMicroSecPerFrame=1000000/25;
		capSetCallbackOnYield(m_hWndCap,NULL);
		capCaptureSetSetup(m_hWndCap,&CapParms,sizeof(CAPTUREPARMS));

		capCaptureSequenceNoFile(m_hWndCap);
		m_vfwState  = PREVIEW;
	}else{
		capCaptureAbort(m_hWndCap);
	}
}
Beispiel #3
0
static int vfw_start (zbar_video_t *vdo)
{
    ResetEvent(vdo->state->captured);

    if(!capCaptureSequenceNoFile(vdo->state->hwnd))
        return(err_capture(vdo, SEV_ERROR, ZBAR_ERR_INVALID, __func__,
                           "starting video stream"));
    return(0);
}
Beispiel #4
0
static void _vfw_engine_configure(VfwEngine *obj){
	if (_vfw_engine_setup(obj)==-1){
		return;
	}
	if (_vfw_engine_select_format(obj)==-1){
		return ;
	}
	capSetCallbackOnVideoStream(obj->capvideo, vfw_engine_stream_callback);
	if (!capCaptureSequenceNoFile(obj->capvideo)){
		ms_error("vfw: fail to start capture !");
	}
	ms_thread_create(&obj->thread,NULL,vfw_engine_thread,obj);
	obj->configured=TRUE;
}
// Standard AVIcap window message 
// macro: capCaptureSequenceNoFile && capCaptureStop
BOOL	CAviCap::StartSeq(BOOL offOn)
{
	CHECKWIN();
	CHECKCNCT();
	if(offOn)
	{
	if(_fSeqIsOn)	return TRUE;
	_getSetup();
	_captureParms.fYield = TRUE;    // Watch out!
	_setSetup();
	return capCaptureSequenceNoFile(GetSafeHwnd()) ;
	}
	if(_fSeqIsOn)
		capCaptureStop(GetSafeHwnd());
	_fSeqIsOn=offOn;
	return TRUE;
}
UINT MMCapture::run() {
  for(;;) {
    CaptureMessage message = m_messageQueue.get();
    switch(message) {
    case MESSAGE_STARTCAPTURE:
      m_receiver.log(_T("handle MESSAGE_STARTCAPTURE\n"));
      if(!isCapturing()) {
        m_stopPending = false;
        capCaptureSequenceNoFile(m_captureWindow);
      }
      break;

    case MESSAGE_STOPCAPTURE :
      m_receiver.log(_T("handle MESSAGE_STOPCAPTURE\n"));
      m_stopPending = true;
      break;

    case MESSAGE_CAPTURESTOPPED:
      m_receiver.log(_T("handle MESSAGE_CAPTURESTOPPED\n"));
      m_capturing = false;
      break;

    case MESSAGE_TERMINATE   :
      m_receiver.log(_T("handle MESSAGE_TERMINATE\n"));
      if(isCapturing()) {
        m_receiver.log(_T("isCapturing = true. stopPending...\n"));
        m_stopPending = true;
        for(;;) {
          if(m_messageQueue.get() == MESSAGE_CAPTURESTOPPED) {
            m_receiver.log(_T("got MESSAGE_CAPTURESTOPPED. Now stop loop\n"));
            m_capturing = false;
            break;
          }
        }
      }
      return 0;

    default:
      showError(_T("%s:Unknown message in messageQueue:%d"), __TFUNCTION__,message);
      exit(-1);
    }
  }
}
Beispiel #7
0
int cap_start(cap_cx *cx, int nointdec, char *err)
{
	set_err("Can't start capture");

	if((!cx->opened) || (cx->started))
		return 0;

	if((cx->pfmt = cap_getformat(cx, &(cx->fmtlen), err)))
	{
		if(cap_decode_start(cx, nointdec, err))
		{
			if(capCaptureSequenceNoFile(cx->hwnd))
			{
				cx->started = 1;
				set_err("");
				return 1;
			}
			cap_decode_finish(cx);
		}
		free(cx->pfmt);
	}

	return 0;
}