int32_t mm_camera_set_general_parm(mm_camera_obj_t * my_obj, mm_camera_parm_t *parm) { int rc = -MM_CAMERA_E_NOT_SUPPORTED; int isZSL =0; switch(parm->parm_type) { case MM_CAMERA_PARM_EXPOSURE: return mm_camera_util_s_ctrl(my_obj->ctrl_fd, MSM_V4L2_PID_EXP_METERING, *((int *)(parm->p_value))); case MM_CAMERA_PARM_SHARPNESS: return mm_camera_util_s_ctrl(my_obj->ctrl_fd, V4L2_CID_SHARPNESS, *((int *)(parm->p_value))); case MM_CAMERA_PARM_CONTRAST: return mm_camera_util_s_ctrl(my_obj->ctrl_fd, V4L2_CID_CONTRAST, *((int *)(parm->p_value))); case MM_CAMERA_PARM_SATURATION: return mm_camera_util_s_ctrl(my_obj->ctrl_fd, V4L2_CID_SATURATION, *((int *)(parm->p_value))); case MM_CAMERA_PARM_BRIGHTNESS: return mm_camera_util_s_ctrl(my_obj->ctrl_fd, V4L2_CID_BRIGHTNESS, *((int *)(parm->p_value))); case MM_CAMERA_PARM_WHITE_BALANCE: return mm_camera_ctrl_set_whitebalance (my_obj, *((int *)(parm->p_value))); case MM_CAMERA_PARM_ISO: return mm_camera_util_s_ctrl(my_obj->ctrl_fd, MSM_V4L2_PID_ISO, *((int *)(parm->p_value))); case MM_CAMERA_PARM_ZOOM: return mm_camera_util_s_ctrl(my_obj->ctrl_fd, V4L2_CID_ZOOM_ABSOLUTE, *((int *)(parm->p_value))); case MM_CAMERA_PARM_LUMA_ADAPTATION: return mm_camera_util_s_ctrl(my_obj->ctrl_fd, MSM_V4L2_PID_LUMA_ADAPTATION, *((int *)(parm->p_value))); case MM_CAMERA_PARM_ANTIBANDING: return mm_camera_ctrl_set_antibanding (my_obj, *((int *)(parm->p_value))); case MM_CAMERA_PARM_CONTINUOUS_AF: return mm_camera_ctrl_set_auto_focus(my_obj, *((int *)(parm->p_value))); case MM_CAMERA_PARM_HJR: return mm_camera_util_s_ctrl(my_obj->ctrl_fd, MSM_V4L2_PID_HJR, *((int *)(parm->p_value))); case MM_CAMERA_PARM_EFFECT: return mm_camera_ctrl_set_specialEffect (my_obj, *((int *)(parm->p_value))); case MM_CAMERA_PARM_FPS: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_PARM_FPS, sizeof(uint32_t), (void *)parm->p_value); case MM_CAMERA_PARM_FPS_MODE: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_FPS_MODE, sizeof(int32_t), (void *)parm->p_value); case MM_CAMERA_PARM_EXPOSURE_COMPENSATION: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_PARM_EXPOSURE_COMPENSATION, sizeof(int32_t), (void *)parm->p_value); case MM_CAMERA_PARM_LED_MODE: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_PARM_LED_MODE, sizeof(int32_t), (void *)parm->p_value); case MM_CAMERA_PARM_ROLLOFF: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_PARM_ROLLOFF, sizeof(int32_t), (void *)parm->p_value); case MM_CAMERA_PARM_MODE: my_obj->current_mode = *((camera_mode_t *)parm->p_value); break; case MM_CAMERA_PARM_FOCUS_RECT: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_PARM_FOCUS_RECT, sizeof(int32_t), (void *)parm->p_value); case MM_CAMERA_PARM_AEC_ROI: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_PARM_AEC_ROI, sizeof(cam_set_aec_roi_t), (void *)parm->p_value); case MM_CAMERA_PARM_AF_ROI: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_PARM_AF_ROI, sizeof(roi_info_t), (void *)parm->p_value); case MM_CAMERA_PARM_FOCUS_MODE: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_PARM_AF_MODE, sizeof(int32_t), (void *)parm->p_value); #if 0 //to be enabled later: @punits case MM_CAMERA_PARM_AF_MTR_AREA: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_PARM_AF_MTR_AREA, sizeof(af_mtr_area_t), (void *)parm->p_value);*/ case MM_CAMERA_PARM_AEC_MTR_AREA: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_AEC_MTR_AREA, sizeof(aec_mtr_area_t), (void *)parm->p_value); #endif case MM_CAMERA_PARM_CAF_ENABLE: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_PARM_CAF, sizeof(uint32_t), (void *)parm->p_value); case MM_CAMERA_PARM_BESTSHOT_MODE: CDBG("%s : MM_CAMERA_PARM_BESTSHOT_MODE value : %d",__func__,*((int *)(parm->p_value))); return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_PARM_BESTSHOT_MODE, sizeof(int32_t), (void *)parm->p_value); break; case MM_CAMERA_PARM_VIDEO_DIS: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_VIDEO_DIS_PARAMS, sizeof(video_dis_param_ctrl_t), (void *)parm->p_value); case MM_CAMERA_PARM_VIDEO_ROT: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_VIDEO_ROT_PARAMS, sizeof(video_rotation_param_ctrl_t), (void *)parm->p_value); case MM_CAMERA_PARM_SCE_FACTOR: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_SCE_FACTOR, sizeof(int32_t), (void *)parm->p_value); case MM_CAMERA_PARM_FD: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_PARM_FD, sizeof(fd_set_parm_t), (void *)parm->p_value); case MM_CAMERA_PARM_AEC_LOCK: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_AEC_LOCK, sizeof(int32_t), (void *)parm->p_value); case MM_CAMERA_PARM_AWB_LOCK: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_AWB_LOCK, sizeof(int32_t), (void *)parm->p_value); case MM_CAMERA_PARM_MCE: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_PARM_MCE, sizeof(int32_t), (void *)parm->p_value); case MM_CAMERA_PARM_HORIZONTAL_VIEW_ANGLE: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_GET_PARM_HORIZONTAL_VIEW_ANGLE, sizeof(focus_distances_info_t), (void *)parm->p_value); case MM_CAMERA_PARM_VERTICAL_VIEW_ANGLE: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_GET_PARM_VERTICAL_VIEW_ANGLE, sizeof(focus_distances_info_t), (void *)parm->p_value); case MM_CAMERA_PARM_RESET_LENS_TO_INFINITY: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_PARM_RESET_LENS_TO_INFINITY, 0, NULL); case MM_CAMERA_PARM_SNAPSHOTDATA: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_GET_PARM_SNAPSHOTDATA, sizeof(snapshotData_info_t), (void *)parm->p_value); case MM_CAMERA_PARM_HFR: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_PARM_HFR, sizeof(int32_t), (void *)parm->p_value); case MM_CAMERA_PARM_REDEYE_REDUCTION: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_REDEYE_REDUCTION, sizeof(int32_t), (void *)parm->p_value); case MM_CAMERA_PARM_WAVELET_DENOISE: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_PARM_WAVELET_DENOISE, sizeof(denoise_param_t), (void *)parm->p_value); case MM_CAMERA_PARM_3D_DISPLAY_DISTANCE: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_PARM_3D_DISPLAY_DISTANCE, sizeof(float), (void *)parm->p_value); case MM_CAMERA_PARM_3D_VIEW_ANGLE: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_PARM_3D_VIEW_ANGLE, sizeof(uint32_t), (void *)parm->p_value); case MM_CAMERA_PARM_ZOOM_RATIO: break; case MM_CAMERA_PARM_HISTOGRAM: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_PARM_HISTOGRAM, sizeof(int8_t), (void *)parm->p_value); case MM_CAMERA_PARM_JPEG_ROTATION: if(my_obj->op_mode == MM_CAMERA_OP_MODE_ZSL){ isZSL =1; } mm_jpeg_encoder_setRotation(*((int *)parm->p_value),isZSL); return MM_CAMERA_OK; case MM_CAMERA_PARM_ASD_ENABLE: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_ASD_ENABLE, sizeof(uint32_t), (void *)parm->p_value); case MM_CAMERA_PARM_RECORDING_HINT: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_RECORDING_HINT, sizeof(uint32_t), (void *)parm->p_value); case MM_CAMERA_PARM_PREVIEW_FORMAT: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_PARM_PREVIEW_FORMAT, sizeof(uint32_t), (void *)parm->p_value); case MM_CAMERA_PARM_DIS_ENABLE: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_DIS_ENABLE, sizeof(uint32_t), (void *)parm->p_value); case MM_CAMERA_PARM_FULL_LIVESHOT: { my_obj->full_liveshot = *((int *)(parm->p_value)); return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_FULL_LIVESHOT, sizeof(uint32_t), (void *)parm->p_value); } case MM_CAMERA_PARM_LOW_POWER_MODE: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_LOW_POWER_MODE, sizeof(uint32_t), (void *)parm->p_value); case MM_CAMERA_PARM_CAF_TYPE: CDBG("SM : %s : MM_CAMERA_PARM_CAF_TYPE value : %d",__func__,*((int *)(parm->p_value))); return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_PARM_CAF_TYPE, sizeof(int32_t), (void *)parm->p_value); case MM_CAMERA_PARM_HDR: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_PARM_HDR, sizeof(exp_bracketing_t), (void *)parm->p_value); case MM_CAMERA_PARM_CAF_LOCK_CANCEL: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_CAF_LOCK_CANCEL, sizeof(uint32_t), (void *)parm->p_value); default: CDBG("%s: default: parm %d not supported\n", __func__, parm->parm_type); break; } return rc; }
int32_t mm_camera_set_general_parm(mm_camera_obj_t * my_obj, mm_camera_parm_t *parm) { int rc = -MM_CAMERA_E_NOT_SUPPORTED; switch(parm->parm_type) { case MM_CAMERA_PARM_EXPOSURE: return mm_camera_util_s_ctrl(my_obj->ctrl_fd, MSM_V4L2_PID_EXP_METERING, *((int *)(parm->p_value))); case MM_CAMERA_PARM_SHARPNESS: return mm_camera_util_s_ctrl(my_obj->ctrl_fd, V4L2_CID_SHARPNESS, *((int *)(parm->p_value))); case MM_CAMERA_PARM_CONTRAST: return mm_camera_util_s_ctrl(my_obj->ctrl_fd, V4L2_CID_CONTRAST, *((int *)(parm->p_value))); case MM_CAMERA_PARM_SATURATION: return mm_camera_util_s_ctrl(my_obj->ctrl_fd, V4L2_CID_SATURATION, *((int *)(parm->p_value))); case MM_CAMERA_PARM_BRIGHTNESS: return mm_camera_util_s_ctrl(my_obj->ctrl_fd, V4L2_CID_BRIGHTNESS, *((int *)(parm->p_value))); case MM_CAMERA_PARM_WHITE_BALANCE: return mm_camera_ctrl_set_whitebalance (my_obj, *((int *)(parm->p_value))); case MM_CAMERA_PARM_ISO: return mm_camera_util_s_ctrl(my_obj->ctrl_fd, MSM_V4L2_PID_ISO, *((int *)(parm->p_value)) -1); case MM_CAMERA_PARM_ZOOM: return mm_camera_util_s_ctrl(my_obj->ctrl_fd, V4L2_CID_ZOOM_ABSOLUTE, *((int *)(parm->p_value))); case MM_CAMERA_PARM_LUMA_ADAPTATION: return mm_camera_util_s_ctrl(my_obj->ctrl_fd, MSM_V4L2_PID_LUMA_ADAPTATION, *((int *)(parm->p_value))); case MM_CAMERA_PARM_ANTIBANDING: return mm_camera_ctrl_set_antibanding (my_obj, *((int *)(parm->p_value))); case MM_CAMERA_PARM_CONTINUOUS_AF: return mm_camera_ctrl_set_auto_focus(my_obj, *((int *)(parm->p_value))); case MM_CAMERA_PARM_HJR: return mm_camera_util_s_ctrl(my_obj->ctrl_fd, MSM_V4L2_PID_HJR, *((int *)(parm->p_value))); case MM_CAMERA_PARM_EFFECT: return mm_camera_ctrl_set_specialEffect (my_obj, *((int *)(parm->p_value))); case MM_CAMERA_PARM_FPS: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_PARM_FPS, sizeof(uint16_t), (void *)parm->p_value); case MM_CAMERA_PARM_FPS_MODE: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_FPS_MODE, sizeof(int32_t), (void *)parm->p_value); case MM_CAMERA_PARM_EXPOSURE_COMPENSATION: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_PARM_EXPOSURE_COMPENSATION, sizeof(int32_t), (void *)parm->p_value); case MM_CAMERA_PARM_LED_MODE: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_PARM_LED_MODE, sizeof(int32_t), (void *)parm->p_value); case MM_CAMERA_PARM_ROLLOFF: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_PARM_ROLLOFF, sizeof(int32_t), (void *)parm->p_value); case MM_CAMERA_PARM_MODE: my_obj->current_mode = *((camera_mode_t *)parm->p_value); break; case MM_CAMERA_PARM_FOCUS_RECT: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_PARM_FOCUS_RECT, sizeof(int32_t), (void *)parm->p_value); case MM_CAMERA_PARM_AEC_ROI: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_PARM_AEC_ROI, sizeof(cam_set_aec_roi_t), (void *)parm->p_value); case MM_CAMERA_PARM_AF_ROI: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_PARM_AF_ROI, sizeof(roi_info_t), (void *)parm->p_value); case MM_CAMERA_PARM_BL_DETECTION: return mm_camera_util_s_ctrl(my_obj->ctrl_fd, MSM_V4L2_PID_BL_DETECTION, *((int *)(parm->p_value))); case MM_CAMERA_PARM_SNOW_DETECTION: return mm_camera_util_s_ctrl(my_obj->ctrl_fd, MSM_V4L2_PID_SNOW_DETECTION, *((int *)(parm->p_value))); case MM_CAMERA_PARM_BESTSHOT_MODE: CDBG("%s : MM_CAMERA_PARM_BESTSHOT_MODE value : %d",__func__,*((int *)(parm->p_value))); return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_PARM_BESTSHOT_MODE, sizeof(int32_t), (void *)parm->p_value); break; case MM_CAMERA_PARM_VIDEO_DIS: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_VIDEO_DIS_PARAMS, sizeof(video_dis_param_ctrl_t), (void *)parm->p_value); case MM_CAMERA_PARM_VIDEO_ROT: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_VIDEO_ROT_PARAMS, sizeof(video_rotation_param_ctrl_t), (void *)parm->p_value); case MM_CAMERA_PARM_SCE_FACTOR: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_SCE_FACTOR, sizeof(int32_t), (void *)parm->p_value); case MM_CAMERA_PARM_FD: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_PARM_FD, sizeof(int32_t), (void *)parm->p_value); case MM_CAMERA_PARM_MCE: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_PARM_MCE, sizeof(int32_t), (void *)parm->p_value); case MM_CAMERA_PARM_HORIZONTAL_VIEW_ANGLE: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_GET_PARM_HORIZONTAL_VIEW_ANGLE, sizeof(focus_distances_info_t), (void *)parm->p_value); case MM_CAMERA_PARM_VERTICAL_VIEW_ANGLE: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_GET_PARM_VERTICAL_VIEW_ANGLE, sizeof(focus_distances_info_t), (void *)parm->p_value); case MM_CAMERA_PARM_RESET_LENS_TO_INFINITY: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_PARM_RESET_LENS_TO_INFINITY, 0, NULL); case MM_CAMERA_PARM_SNAPSHOTDATA: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_GET_PARM_SNAPSHOTDATA, sizeof(snapshotData_info_t), (void *)parm->p_value); case MM_CAMERA_PARM_HFR: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_PARM_HFR, sizeof(int32_t), (void *)parm->p_value); case MM_CAMERA_PARM_REDEYE_REDUCTION: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_REDEYE_REDUCTION, sizeof(int32_t), (void *)parm->p_value); case MM_CAMERA_PARM_WAVELET_DENOISE: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_PARM_WAVELET_DENOISE, sizeof(int32_t), (void *)parm->p_value); case MM_CAMERA_PARM_3D_DISPLAY_DISTANCE: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_PARM_3D_DISPLAY_DISTANCE, sizeof(float), (void *)parm->p_value); case MM_CAMERA_PARM_3D_VIEW_ANGLE: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_PARM_3D_VIEW_ANGLE, sizeof(uint32_t), (void *)parm->p_value); case MM_CAMERA_PARM_ZOOM_RATIO: break; case MM_CAMERA_PARM_HISTOGRAM: return mm_camera_send_native_ctrl_cmd(my_obj, CAMERA_SET_PARM_HISTOGRAM, sizeof(int8_t), (void *)parm->p_value); default: CDBG("%s:parm %d not supported\n", __func__, parm->parm_type); break; } return rc; }