//----------------------------------------------------------------------------- void IdmCaptureFormat (void) { if (!gDriverCaps.fHasDlgVideoFormat) Err("The camera driver does not support this command"); else if (capDlgVideoFormat(hgCapWnd)) capGetStatus(hgCapWnd, &gCapStatus, sizeof(CAPSTATUS)); }
void CWinVideoGrabber::VideoFormatDialog() { if (!inited) return; CAPDRIVERCAPS CapDrvCaps; capDriverGetCaps(videowindow, &CapDrvCaps, sizeof (CAPDRIVERCAPS)); if (CapDrvCaps.fHasDlgVideoFormat) capDlgVideoFormat(videowindow); }
//Description: shows a dialog box with web cam format options in it // not yet implemented because not sure which dialogs should be shown for given values //functions to call are commented out below //Input: the dialog to show //Output: none EXPORT void ShowDialog(long whichDialog) { if(whichDialog==0) { capDlgVideoFormat(hWndC); } else if(whichDialog==1) { capDlgVideoDisplay(hWndC); } }
/* 配置视频格式:分辨率和视频格式:RGB/I420 */ void CMainFrame::OnVfwVideoformat() { // TODO: 在此添加命令处理程序代码 DWORD fsize; if(m_caps.fHasDlgVideoFormat){ capDlgVideoFormat(m_hWndCap); fsize = capGetVideoFormatSize(m_hWndCap); capGetVideoFormat(m_hWndCap, lpbiIn, fsize); Config_XVIECODEC(); } }
void CSoCProjectView::OnInitialUpdate() { CScrollView::OnInitialUpdate(); CSize sizeTotal; // TODO: 이 뷰의 전체 크기를 계산합니다. sizeTotal.cx = 640; sizeTotal.cy = 480; SetScrollSizes(MM_TEXT, sizeTotal); CSoCProjectDoc*pDoc = GetDocument(); // TODO: 여기에 생성 코드를 추가합니다. RECT r; GetClientRect(&r); pDoc->m_hCamWnd = capCreateCaptureWindow( _T("Capture Window"), WS_CHILD | WS_VISIBLE, 5, 5, r.right-5, r.bottom-5, this->m_hWnd, NULL); // 설치된 디바이스를 순서로 0 ~ 9까지의 카메라를 지정 할 수 있다. if(!capDriverConnect(pDoc->m_hCamWnd, 0)) AfxMessageBox(_T("웹캠 인식 실패 ㅠㅠ")); // 현재 드라이버 정보에 관한 내용 얻어오기 capDriverGetCaps(pDoc->m_hCamWnd, &pDoc->m_psCapsInfo, sizeof(pDoc->m_psCapsInfo)); //비디오 포맷 변환을 지원하는지 확인한다. if(pDoc->m_psCapsInfo.fHasDlgVideoFormat) { // 비디오 포맷 변환을 지원하면 아래 함수를 호출한다. // 호출되는 함수는 새로운 다이얼로그를 호출하고 해상도와 포맷형식, 프레임 버퍼크기등을 지정할 수 있다. // 이때, 지원되지 않는 비디오포멧을 설정하면 검정 화면을 보게될 것이야... capDlgVideoFormat(pDoc->m_hCamWnd); } // m_psCapsInfo.fHasOverlay에서 overlay가 지원이 되지 않으면(=0) 사용 할 수 없다. if(pDoc->m_psCapsInfo.fHasOverlay) { // 하드웨어 오버레이는 시스템 부하를 줄여준다.(optioinal) capOverlay(pDoc->m_hCamWnd, FALSE); } // BITMAPINFO 설정 capGetVideoFormat(pDoc->m_hCamWnd, &pDoc->m_BTMInfo, sizeof(pDoc->m_BTMInfo)); // 1/1000 단위로 영상이 출력된다. capPreviewRate(pDoc->m_hCamWnd, 1); // 프리뷰 영상을 재생한다. capPreview(pDoc->m_hCamWnd, TRUE); CAPTUREPARMS cp; capCaptureGetSetup(pDoc->m_hCamWnd, &cp, sizeof(cp) ); // get the current defaults cp.dwRequestMicroSecPerFrame = 1; // Set desired frame rate cp.fMakeUserHitOKToCapture = FALSE; cp.fYield = TRUE; // we want capture on a background thread. cp.wNumVideoRequested = (WORD) 1; // we may get less than this - no problem cp.fCaptureAudio = FALSE; cp.vKeyAbort = 0; // If no key is provided, it won't stop... cp.fAbortLeftMouse = FALSE; cp.fAbortRightMouse = FALSE; cp.fLimitEnabled = FALSE; // we want to stop cp.fMCIControl = FALSE; capCaptureSetSetup(pDoc->m_hCamWnd, &cp, sizeof(cp) ); capSetCallbackOnVideoStream(pDoc->m_hCamWnd, VideoCallbackProc); capSetCallbackOnFrame(pDoc->m_hCamWnd, VideoCallbackProc); }