/* * Resets the camera's pan/tilt position by moving into a corner and then back to the center. */ void reset_machanical_pan_tilt(IAMCameraControl *pCameraControl) { set_mechanical_pan_relative(pCameraControl, 180); Sleep(500); set_mechanical_tilt_relative(pCameraControl, 180); Sleep(500); set_mechanical_pan_relative(pCameraControl, -64); Sleep(500); set_mechanical_tilt_relative(pCameraControl, -24); Sleep(500); }
/* * Test a camera's pan/tilt properties * * See also: * * IAMCameraControl Interface * http://msdn2.microsoft.com/en-us/library/ms783833.aspx * PROPSETID_VIDCAP_CAMERACONTROL * http://msdn2.microsoft.com/en-us/library/aa510754.aspx */ HRESULT test_pan_tilt(IBaseFilter *pBaseFilter) { HRESULT hr = 0; IAMCameraControl *pCameraControl = NULL; ControlInfo panInfo = { 0 }; ControlInfo tiltInfo = { 0 }; ControlInfo zoomInfo = { 0 }; long value = 0, flags = 0; //printf(" Reading pan/tilt property information ...\n"); //// Get a pointer to the IAMCameraControl interface used to control the camera hr = pBaseFilter->QueryInterface(IID_IAMCameraControl, (void **)&pCameraControl); if(hr != S_OK) { fprintf(stderr, "ERROR: Unable to access IAMCameraControl interface.\n"); return hr; } //* //printf(" Testing mechanical pan ...\n"); set_mechanical_pan_relative(pCameraControl, gPan); Sleep(abs(gPan)*gWait); //*/ //* //printf(" Testing mechanical tilt ...\n"); set_mechanical_tilt_relative(pCameraControl, gTilt); Sleep(abs(gTilt)*gWait); //*/ printf(" DONE\n"); return S_OK; }
/* * Test a camera's pan/tilt properties * * See also: * * IAMCameraControl Interface * http://msdn2.microsoft.com/en-us/library/ms783833.aspx * PROPSETID_VIDCAP_CAMERACONTROL * http://msdn2.microsoft.com/en-us/library/aa510754.aspx */ HRESULT test_pan_tilt(IBaseFilter *pBaseFilter) { HRESULT hr = 0; IAMCameraControl *pCameraControl = NULL; ControlInfo panInfo = { 0 }; ControlInfo tiltInfo = { 0 }; ControlInfo zoomInfo = { 0 }; long value = 0, flags = 0; printf(" Reading pan/tilt property information ...\n"); // Get a pointer to the IAMCameraControl interface used to control the camera hr = pBaseFilter->QueryInterface(IID_IAMCameraControl, (void **)&pCameraControl); if(hr != S_OK) { fprintf(stderr, "ERROR: Unable to access IAMCameraControl interface.\n"); return hr; } // Retrieve information about the pan and tilt controls hr = pCameraControl->GetRange(CameraControl_Pan, &panInfo.min, &panInfo.max, &panInfo.step, &panInfo.def, &panInfo.flags); if(hr != S_OK) { fprintf(stderr, "ERROR: Unable to retrieve CameraControl_Pan property information.\n"); return hr; } printf(" Pan control:\n"); print_control_info(&panInfo); hr = pCameraControl->GetRange(CameraControl_Tilt, &tiltInfo.min, &tiltInfo.max, &tiltInfo.step, &tiltInfo.def, &tiltInfo.flags); if(hr != S_OK) { fprintf(stderr, "ERROR: Unable to retrieve CameraControl_Tilt property information.\n"); return hr; } printf(" Tilt control:\n"); print_control_info(&tiltInfo); //reset_machanical_pan_tilt(pCameraControl); //Sleep(3000); set_mechanical_pan_relative(pCameraControl, iPan); set_mechanical_tilt_relative(pCameraControl, iTilt); /* printf(" Resetting pan/tilt/zoom ...\n"); reset_machanical_pan_tilt(pCameraControl); reset_digital_pan_tilt(pCameraControl); reset_digital_zoom(pCameraControl); Sleep(3000); printf(" Testing mechanical pan ...\n"); set_mechanical_pan_relative(pCameraControl, 40); set_mechanical_pan_relative(pCameraControl, 20); set_mechanical_pan_relative(pCameraControl, -20); set_mechanical_pan_relative(pCameraControl, -40); Sleep(3000); //* printf(" Testing mechanical tilt ...\n"); set_mechanical_tilt_relative(pCameraControl, 20); set_mechanical_tilt_relative(pCameraControl, 10); set_mechanical_tilt_relative(pCameraControl, -10); set_mechanical_tilt_relative(pCameraControl, -20); Sleep(3000); printf(" Testing digital pan/tilt/zoom ...\n"); set_digital_zoom_absolute(pCameraControl, 100); // Zoom to 200% Sleep(1000); set_digital_pan_absolute(pCameraControl, 40); Sleep(1000); set_digital_pan_absolute(pCameraControl, 80); Sleep(1000); set_digital_zoom_absolute(pCameraControl, 200); // Zoom to 400% Sleep(1000); set_digital_tilt_absolute(pCameraControl, 40); Sleep(1000); set_digital_tilt_absolute(pCameraControl, 60); Sleep(1000); reset_digital_pan_tilt(pCameraControl); Sleep(1000); reset_digital_zoom(pCameraControl); Sleep(3000); //*/ return S_OK; }