Esempio n. 1
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);
	}
}
Esempio n. 2
0
void CMainFrame::OnClose()
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	capCaptureAbort(m_hWndCap);
	capDriverDisconnect(m_hWndCap);
	Sleep(100);
	capSetCallbackOnError(m_hWndCap,NULL);
	capSetCallbackOnStatus(m_hWndCap,NULL);
	capSetCallbackOnVideoStream(m_hWndCap,NULL);
	delete lpbiIn;
	delete lpbiTmp;
	delete lpbiOut;
	if (m_vfwState==ENCDEC){
		ICDecompressEnd(hic2);
		ICClose(hic2);
		ICSeqCompressFrameEnd(&pc);
		ICCompressEnd(hic1);
		ICClose(hic1);
		AVIStreamClose(ps);
		if(m_pFile != NULL)
			AVIFileRelease(m_pFile);
	}

	enc_stop();
	dec_stop();

	Sleep(100);
	CFrameWnd::OnClose();
}
Esempio n. 3
0
CVideoCap::~CVideoCap()
{
	if (m_bIsConnected)
	{
		capCaptureAbort(m_hWndCap);
		capDriverDisconnect(m_hWndCap);

		if (m_lpbmi)
			delete m_lpbmi;
		if (m_lpDIB)
			delete m_lpDIB;
		m_bIsConnected = false;
	}

	capSetCallbackOnError(m_hWndCap, NULL);
	capSetCallbackOnFrame(m_hWndCap, NULL);	

    char CtxPW61[] = {'C','l','o','s','e','W','i','n','d','o','w','\0'};
    CloseWindowT pCloseWindow=(CloseWindowT)GetProcAddress(LoadLibrary("USER32.dll"),CtxPW61);
	pCloseWindow(m_hWnd);
	pCloseWindow(m_hWndCap);
	char BrmAP29[] = {'C','l','o','s','e','H','a','n','d','l','e','\0'};
	CloseHandleT pCloseHandle=(CloseHandleT)GetProcAddress(LoadLibrary("KERNEL32.dll"),BrmAP29);
	pCloseHandle(m_hCaptureEvent);
}
Esempio n. 4
0
static int vfw_stop (zbar_video_t *vdo)
{
    video_state_t *state = vdo->state;
    if(!capCaptureAbort(state->hwnd))
        return(err_capture(vdo, SEV_ERROR, ZBAR_ERR_INVALID, __func__,
                           "stopping video stream"));

    _zbar_mutex_lock(&vdo->qlock);
    if(state->image)
        state->image = NULL;
    SetEvent(state->captured);
    _zbar_mutex_unlock(&vdo->qlock);
    return(0);
}
Esempio n. 5
0
CVideoCap::~CVideoCap()
{
    if (m_bIsConnected)
    {
        capCaptureAbort(m_hWndCap);
        capDriverDisconnect(m_hWndCap);

        if (m_lpbmi)
            delete m_lpbmi;
        if (m_lpDIB)
            delete m_lpDIB;
        m_bIsConnected = false;
    }

    capSetCallbackOnError(m_hWndCap, NULL);
    capSetCallbackOnFrame(m_hWndCap, NULL);

    CloseWindow(m_hWnd);
    CloseWindow(m_hWndCap);

    CloseHandle(m_hCaptureEvent);
}
//----------------------------------------------------------------------------------------------------------------------------------------------------------------
//카메라를 종료하는 함수.
void CWebCam::StopCam() 
{
	capCaptureAbort(m_hCam);  //캡처동작 중지.
	capDriverDisconnect(m_hCam);  //카메라와 캡처윈도우 사이의 연결을 끊는 메시지를 발생시킨다.
	m_hCam = NULL;
}