void CameraEngine::applyCameraSetting(int mode, int value) { switch (value) { case SETTING_DEFAULT: break; case SETTING_AUTO: setCameraSettingAuto(mode,true); break; case SETTING_MIN: setCameraSetting(mode,getMinCameraSetting(mode)); break; case SETTING_MAX: setCameraSetting(mode,getMaxCameraSetting(mode)); break; default: { int max = getMaxCameraSetting(mode); int min = getMinCameraSetting(mode); if (value<min) value = min; else if (value>max) value = max; setCameraSetting(mode,value); } } }
void CameraEngine::control(int key) { if(!settingsDialog) return; int value,min,max,step = 0; switch(key) { case SDLK_LEFT: value = getCameraSetting(currentCameraSetting); min = getMinCameraSetting(currentCameraSetting); max = getMaxCameraSetting(currentCameraSetting); step = getCameraSettingStep(currentCameraSetting); if (step==1) step = (int)((float)max/256.0f); if (step<1) step=1; value -= step; if (value<min) value=min; setCameraSetting(currentCameraSetting,value); break; case SDLK_RIGHT: value = getCameraSetting(currentCameraSetting); min = getMinCameraSetting(currentCameraSetting); max = getMaxCameraSetting(currentCameraSetting); step = getCameraSettingStep(currentCameraSetting); if (step==1) step = (int)((float)max/256.0f); if (step<1) step=1; value += step; if (value>max) value=max; setCameraSetting(currentCameraSetting,value); break; case SDLK_UP: currentCameraSetting--; if(currentCameraSetting<0) currentCameraSetting=GAMMA; break; case SDLK_DOWN: currentCameraSetting++; if(currentCameraSetting>GAMMA) currentCameraSetting=0; break; } }
bool V4Linux2Camera::setCameraSettingAuto(int mode, bool flag) { if (!hasCameraSetting(mode)) return false; switch (mode) { case GAIN: return(setCameraSetting(AUTO_GAIN,flag)); case EXPOSURE: v4l2_auto_ctrl[0].id = V4L2_CID_EXPOSURE_AUTO; v4l2_auto_ctrl[1].id = V4L2_CID_EXPOSURE_AUTO_PRIORITY; if (flag==true) { v4l2_auto_ctrl[0].value = V4L2_EXPOSURE_AUTO; v4l2_auto_ctrl[1].value = V4L2_EXPOSURE_AUTO; } else { v4l2_auto_ctrl[0].value = V4L2_EXPOSURE_MANUAL; v4l2_auto_ctrl[1].value = V4L2_EXPOSURE_APERTURE_PRIORITY; } break; case WHITE: return(setCameraSetting(AUTO_WHITE,flag)); case COLOR_HUE: return(setCameraSetting(AUTO_HUE,flag)); default: return false; } if ((xioctl(dev_handle, VIDIOC_S_EXT_CTRLS, &v4l2_auto_ctrl)) < 0) { printf("Unable to set AUTO mode: %s\n",strerror(errno)); return false; } if (mode==EXPOSURE) { //printf("set auto mode: %d %d\n",v4l2_auto_ctrl[0].value,v4l2_auto_ctrl[1].value); return true; } return false; }
void FirstPersonNavigation::loadDefaultCamerasetting(){ setCameraSetting(1, 40, 0.0005f, 0.15f, 0.005f, 0.4f); curAccuteness_ = minAccuteness_; }
bool V4Linux2Camera::setDefaultCameraSetting(int mode) { return setCameraSetting(mode,getDefaultCameraSetting(mode)); }