diff options
-rw-r--r-- | include/videodev2_samsung.h | 656 | ||||
-rw-r--r-- | libcamera/SecCamera.cpp | 254 | ||||
-rw-r--r-- | libcamera/SecCamera.h | 298 | ||||
-rw-r--r-- | libcamera/SecCameraHWInterface.cpp | 113 |
4 files changed, 748 insertions, 573 deletions
diff --git a/include/videodev2_samsung.h b/include/videodev2_samsung.h index d4d9e08..074aab5 100644 --- a/include/videodev2_samsung.h +++ b/include/videodev2_samsung.h @@ -1,7 +1,7 @@ /* * Video for Linux Two header file for samsung * - * Copyright (C) 2009, Dongsoo Nathaniel Kim<dongsoo45.kim@samsung.com> + * Copyright (C) 2009, Samsung Electronics * * This header file contains several v4l2 APIs to be proposed to v4l2 * community and until bein accepted, will be used restrictly in Samsung's @@ -26,60 +26,606 @@ */ #ifndef __LINUX_VIDEODEV2_SAMSUNG_H +#define __LINUX_VIDEODEV2_SAMSUNG_H -#define V4L2_CID_CAM_FW_MINOR_VER (V4L2_CID_PRIVATE_BASE + 24) -#define V4L2_CID_CAM_FW_MAJOR_VER (V4L2_CID_PRIVATE_BASE + 25) -#define V4L2_CID_CAM_PRM_MINOR_VER (V4L2_CID_PRIVATE_BASE + 26) -#define V4L2_CID_CAM_PRM_MAJOR_VER (V4L2_CID_PRIVATE_BASE + 27) -#define V4L2_CID_CAMERA_VT_MODE (V4L2_CID_PRIVATE_BASE + 48) -#define V4L2_CID_CAMERA_VGA_BLUR (V4L2_CID_PRIVATE_BASE + 49) -#define V4L2_CID_CAMERA_CAPTURE (V4L2_CID_PRIVATE_BASE + 50) - -#define V4L2_CID_CAMERA_SCENE_MODE (V4L2_CID_PRIVATE_BASE + 70) -#define V4L2_CID_CAMERA_FLASH_MODE (V4L2_CID_PRIVATE_BASE + 71) -#define V4L2_CID_CAMERA_BRIGHTNESS (V4L2_CID_PRIVATE_BASE + 72) -#define V4L2_CID_CAMERA_WHITE_BALANCE (V4L2_CID_PRIVATE_BASE + 73) -#define V4L2_CID_CAMERA_EFFECT (V4L2_CID_PRIVATE_BASE + 74) -#define V4L2_CID_CAMERA_ISO (V4L2_CID_PRIVATE_BASE + 75) -#define V4L2_CID_CAMERA_METERING (V4L2_CID_PRIVATE_BASE + 76) -#define V4L2_CID_CAMERA_CONTRAST (V4L2_CID_PRIVATE_BASE + 77) -#define V4L2_CID_CAMERA_SATURATION (V4L2_CID_PRIVATE_BASE + 78) -#define V4L2_CID_CAMERA_SHARPNESS (V4L2_CID_PRIVATE_BASE + 79) -#define V4L2_CID_CAMERA_WDR (V4L2_CID_PRIVATE_BASE + 80) -#define V4L2_CID_CAMERA_ANTI_SHAKE (V4L2_CID_PRIVATE_BASE + 81) -#define V4L2_CID_CAMERA_TOUCH_AF_START_STOP (V4L2_CID_PRIVATE_BASE + 82) -#define V4L2_CID_CAMERA_SMART_AUTO (V4L2_CID_PRIVATE_BASE + 83) -#define V4L2_CID_CAMERA_VINTAGE_MODE (V4L2_CID_PRIVATE_BASE + 84) -#define V4L2_CID_CAMERA_GPS_LATITUDE (V4L2_CID_CAMERA_CLASS_BASE + 30) -#define V4L2_CID_CAMERA_GPS_LONGITUDE (V4L2_CID_CAMERA_CLASS_BASE + 31) -#define V4L2_CID_CAMERA_GPS_TIMESTAMP (V4L2_CID_CAMERA_CLASS_BASE + 32) -#define V4L2_CID_CAMERA_GPS_ALTITUDE (V4L2_CID_CAMERA_CLASS_BASE + 33) -#define V4L2_CID_CAMERA_ZOOM (V4L2_CID_PRIVATE_BASE + 90) -#define V4L2_CID_CAMERA_FACE_DETECTION (V4L2_CID_PRIVATE_BASE + 91) -#define V4L2_CID_CAMERA_SMART_AUTO_STATUS (V4L2_CID_PRIVATE_BASE + 92) -#define V4L2_CID_CAMERA_SET_AUTO_FOCUS (V4L2_CID_PRIVATE_BASE + 93) -#define V4L2_CID_CAMERA_BEAUTY_SHOT (V4L2_CID_PRIVATE_BASE + 94) -#define V4L2_CID_CAMERA_AEAWB_LOCK_UNLOCK (V4L2_CID_PRIVATE_BASE + 95) -#define V4L2_CID_CAMERA_FACEDETECT_LOCKUNLOCK (V4L2_CID_PRIVATE_BASE + 96) -#define V4L2_CID_CAMERA_OBJECT_POSITION_X (V4L2_CID_PRIVATE_BASE + 97) -#define V4L2_CID_CAMERA_OBJECT_POSITION_Y (V4L2_CID_PRIVATE_BASE + 98) -#define V4L2_CID_CAMERA_FOCUS_MODE (V4L2_CID_PRIVATE_BASE + 99) -#define V4L2_CID_CAMERA_OBJ_TRACKING_STATUS (V4L2_CID_PRIVATE_BASE + 100) -#define V4L2_CID_CAMERA_OBJ_TRACKING_START_STOP (V4L2_CID_PRIVATE_BASE + 101) -#define V4L2_CID_CAMERA_CAF_START_STOP (V4L2_CID_PRIVATE_BASE + 102) -#define V4L2_CID_CAMERA_AUTO_FOCUS_RESULT (V4L2_CID_PRIVATE_BASE + 103) -#define V4L2_CID_CAMERA_FRAME_RATE (V4L2_CID_PRIVATE_BASE + 104) -#define V4L2_CID_CAMERA_ANTI_BANDING (V4L2_CID_PRIVATE_BASE + 105) -#define V4L2_CID_CAMERA_SET_GAMMA (V4L2_CID_PRIVATE_BASE + 106) -#define V4L2_CID_CAMERA_SET_SLOW_AE (V4L2_CID_PRIVATE_BASE + 107) -#define V4L2_CID_CAMERA_BATCH_REFLECTION (V4L2_CID_PRIVATE_BASE + 108) -#define V4L2_CID_CAMERA_EXIF_ORIENTATION (V4L2_CID_PRIVATE_BASE + 109) -#define V4L2_CID_CAMERA_RESET (V4L2_CID_PRIVATE_BASE + 111) -#define V4L2_CID_CAMERA_CHECK_DATALINE (V4L2_CID_PRIVATE_BASE + 112) -#define V4L2_CID_CAMERA_CHECK_DATALINE_STOP (V4L2_CID_PRIVATE_BASE + 113) -#define V4L2_CID_CAMERA_GET_ISO (V4L2_CID_PRIVATE_BASE + 114) -#define V4L2_CID_CAMERA_GET_SHT_TIME (V4L2_CID_PRIVATE_BASE + 115) -#define V4L2_CID_CAMERA_SENSOR_MODE (V4L2_CID_PRIVATE_BASE + 116) -#define V4L2_CID_ESD_INT (V4L2_CID_PRIVATE_BASE + 117) +/* Values for 'capabilities' field */ +/* Object detection device */ +#define V4L2_CAP_OBJ_RECOGNITION 0x10000000 +/* strobe control */ +#define V4L2_CAP_STROBE 0x20000000 + +#define V4L2_CID_FOCUS_MODE (V4L2_CID_CAMERA_CLASS_BASE + 17) +/* Focus Methods */ +enum v4l2_focus_mode { + V4L2_FOCUS_MODE_AUTO = 0, + V4L2_FOCUS_MODE_MACRO = 1, + V4L2_FOCUS_MODE_MANUAL = 2, + V4L2_FOCUS_MODE_LASTP = 2, +}; + +#define V4L2_CID_ZOOM_MODE (V4L2_CID_CAMERA_CLASS_BASE + 18) +/* Zoom Methods */ +enum v4l2_zoom_mode { + V4L2_ZOOM_MODE_CONTINUOUS = 0, + V4L2_ZOOM_MODE_OPTICAL = 1, + V4L2_ZOOM_MODE_DIGITAL = 2, + V4L2_ZOOM_MODE_LASTP = 2, +}; + +/* Exposure Methods */ +#define V4L2_CID_PHOTOMETRY (V4L2_CID_CAMERA_CLASS_BASE + 19) +enum v4l2_photometry_mode { + V4L2_PHOTOMETRY_MULTISEG = 0, /*Multi Segment */ + V4L2_PHOTOMETRY_CWA = 1, /*Centre Weighted Average */ + V4L2_PHOTOMETRY_SPOT = 2, + V4L2_PHOTOMETRY_AFSPOT = 3, /*Spot metering on focused point */ + V4L2_PHOTOMETRY_LASTP = V4L2_PHOTOMETRY_AFSPOT, +}; + +/* Manual exposure control items menu type: iris, shutter, iso */ +#define V4L2_CID_CAM_APERTURE (V4L2_CID_CAMERA_CLASS_BASE + 20) +#define V4L2_CID_CAM_SHUTTER (V4L2_CID_CAMERA_CLASS_BASE + 21) +#define V4L2_CID_CAM_ISO (V4L2_CID_CAMERA_CLASS_BASE + 22) + +/* Following CIDs are menu type */ +#define V4L2_CID_SCENEMODE (V4L2_CID_CAMERA_CLASS_BASE + 23) +#define V4L2_CID_CAM_STABILIZE (V4L2_CID_CAMERA_CLASS_BASE + 24) +#define V4L2_CID_CAM_MULTISHOT (V4L2_CID_CAMERA_CLASS_BASE + 25) + +/* Control dynamic range */ +#define V4L2_CID_CAM_DR (V4L2_CID_CAMERA_CLASS_BASE + 26) + +/* White balance preset control */ +#define V4L2_CID_WHITE_BALANCE_PRESET (V4L2_CID_CAMERA_CLASS_BASE + 27) + +/* CID extensions */ +#define V4L2_CID_ROTATION (V4L2_CID_PRIVATE_BASE + 0) +#define V4L2_CID_PADDR_Y (V4L2_CID_PRIVATE_BASE + 1) +#define V4L2_CID_PADDR_CB (V4L2_CID_PRIVATE_BASE + 2) +#define V4L2_CID_PADDR_CR (V4L2_CID_PRIVATE_BASE + 3) +#define V4L2_CID_PADDR_CBCR (V4L2_CID_PRIVATE_BASE + 4) +#define V4L2_CID_OVERLAY_AUTO (V4L2_CID_PRIVATE_BASE + 5) +#define V4L2_CID_OVERLAY_VADDR0 (V4L2_CID_PRIVATE_BASE + 6) +#define V4L2_CID_OVERLAY_VADDR1 (V4L2_CID_PRIVATE_BASE + 7) +#define V4L2_CID_OVERLAY_VADDR2 (V4L2_CID_PRIVATE_BASE + 8) +#define V4L2_CID_OVLY_MODE (V4L2_CID_PRIVATE_BASE + 9) +#define V4L2_CID_DST_INFO (V4L2_CID_PRIVATE_BASE + 10) +#define V4L2_CID_IMAGE_EFFECT_FN (V4L2_CID_PRIVATE_BASE + 16) +#define V4L2_CID_IMAGE_EFFECT_APPLY (V4L2_CID_PRIVATE_BASE + 17) +#define V4L2_CID_IMAGE_EFFECT_CB (V4L2_CID_PRIVATE_BASE + 18) +#define V4L2_CID_IMAGE_EFFECT_CR (V4L2_CID_PRIVATE_BASE + 19) +#define V4L2_CID_RESERVED_MEM_BASE_ADDR (V4L2_CID_PRIVATE_BASE + 20) +#define V4L2_CID_FIMC_VERSION (V4L2_CID_PRIVATE_BASE + 21) + +#define V4L2_CID_STREAM_PAUSE (V4L2_CID_PRIVATE_BASE + 53) + +/* CID Extensions for camera sensor operations */ +#define V4L2_CID_CAM_PREVIEW_ONOFF (V4L2_CID_PRIVATE_BASE + 64) +#define V4L2_CID_CAM_CAPTURE (V4L2_CID_PRIVATE_BASE + 65) +#define V4L2_CID_CAM_JPEG_MEMSIZE (V4L2_CID_PRIVATE_BASE + 66) + +#define V4L2_CID_CAM_DATE_INFO_YEAR (V4L2_CID_PRIVATE_BASE + 14) +#define V4L2_CID_CAM_DATE_INFO_MONTH (V4L2_CID_PRIVATE_BASE + 15) +#define V4L2_CID_CAM_DATE_INFO_DATE (V4L2_CID_PRIVATE_BASE + 22) +#define V4L2_CID_CAM_SENSOR_VER (V4L2_CID_PRIVATE_BASE + 23) +#define V4L2_CID_CAM_FW_MINOR_VER (V4L2_CID_PRIVATE_BASE + 24) +#define V4L2_CID_CAM_FW_MAJOR_VER (V4L2_CID_PRIVATE_BASE + 25) +#define V4L2_CID_CAM_PRM_MINOR_VER (V4L2_CID_PRIVATE_BASE + 26) +#define V4L2_CID_CAM_PRM_MAJOR_VER (V4L2_CID_PRIVATE_BASE + 27) +#define V4L2_CID_CAM_FW_VER (V4L2_CID_PRIVATE_BASE + 28) +#define V4L2_CID_CAM_SET_FW_ADDR (V4L2_CID_PRIVATE_BASE + 29) +#define V4L2_CID_CAM_SET_FW_SIZE (V4L2_CID_PRIVATE_BASE + 30) +#define V4L2_CID_CAM_UPDATE_FW (V4L2_CID_PRIVATE_BASE + 31) +#define V4L2_CID_CAM_JPEG_MAIN_SIZE (V4L2_CID_PRIVATE_BASE + 32) +#define V4L2_CID_CAM_JPEG_MAIN_OFFSET (V4L2_CID_PRIVATE_BASE + 33) +#define V4L2_CID_CAM_JPEG_THUMB_SIZE (V4L2_CID_PRIVATE_BASE + 34) +#define V4L2_CID_CAM_JPEG_THUMB_OFFSET (V4L2_CID_PRIVATE_BASE + 35) +#define V4L2_CID_CAM_JPEG_POSTVIEW_OFFSET (V4L2_CID_PRIVATE_BASE + 36) +#define V4L2_CID_CAM_JPEG_QUALITY (V4L2_CID_PRIVATE_BASE + 37) +#define V4L2_CID_CAM_SENSOR_MAKER (V4L2_CID_PRIVATE_BASE + 38) +#define V4L2_CID_CAM_SENSOR_OPTICAL (V4L2_CID_PRIVATE_BASE + 39) +#define V4L2_CID_CAM_AF_VER_LOW (V4L2_CID_PRIVATE_BASE + 40) +#define V4L2_CID_CAM_AF_VER_HIGH (V4L2_CID_PRIVATE_BASE + 41) +#define V4L2_CID_CAM_GAMMA_RG_LOW (V4L2_CID_PRIVATE_BASE + 42) +#define V4L2_CID_CAM_GAMMA_RG_HIGH (V4L2_CID_PRIVATE_BASE + 43) +#define V4L2_CID_CAM_GAMMA_BG_LOW (V4L2_CID_PRIVATE_BASE + 44) +#define V4L2_CID_CAM_GAMMA_BG_HIGH (V4L2_CID_PRIVATE_BASE + 45) +#define V4L2_CID_CAM_DUMP_FW (V4L2_CID_PRIVATE_BASE + 46) +#define V4L2_CID_CAM_GET_DUMP_SIZE (V4L2_CID_PRIVATE_BASE + 47) +#define V4L2_CID_CAMERA_VT_MODE (V4L2_CID_PRIVATE_BASE + 48) +#define V4L2_CID_CAMERA_VGA_BLUR (V4L2_CID_PRIVATE_BASE + 49) +#define V4L2_CID_CAMERA_CAPTURE (V4L2_CID_PRIVATE_BASE + 50) + +#define V4L2_CID_MAIN_SW_DATE_INFO_YEAR (V4L2_CID_PRIVATE_BASE + 54) +#define V4L2_CID_MAIN_SW_DATE_INFO_MONTH (V4L2_CID_PRIVATE_BASE + 55) +#define V4L2_CID_MAIN_SW_DATE_INFO_DATE (V4L2_CID_PRIVATE_BASE + 56) +#define V4L2_CID_MAIN_SW_FW_MINOR_VER (V4L2_CID_PRIVATE_BASE + 57) +#define V4L2_CID_MAIN_SW_FW_MAJOR_VER (V4L2_CID_PRIVATE_BASE + 58) +#define V4L2_CID_MAIN_SW_PRM_MINOR_VER (V4L2_CID_PRIVATE_BASE + 59) +#define V4L2_CID_MAIN_SW_PRM_MAJOR_VER (V4L2_CID_PRIVATE_BASE + 60) + +enum v4l2_blur { + BLUR_LEVEL_0 = 0, + BLUR_LEVEL_1, + BLUR_LEVEL_2, + BLUR_LEVEL_3, + BLUR_LEVEL_MAX, +}; + +#define V4L2_CID_CAMERA_SCENE_MODE (V4L2_CID_PRIVATE_BASE + 70) +enum v4l2_scene_mode { + SCENE_MODE_BASE, + SCENE_MODE_NONE, + SCENE_MODE_PORTRAIT, + SCENE_MODE_NIGHTSHOT, + SCENE_MODE_BACK_LIGHT, + SCENE_MODE_LANDSCAPE, + SCENE_MODE_SPORTS, + SCENE_MODE_PARTY_INDOOR, + SCENE_MODE_BEACH_SNOW, + SCENE_MODE_SUNSET, + SCENE_MODE_DUST_DAWN, + SCENE_MODE_FALL_COLOR, + SCENE_MODE_FIREWORKS, + SCENE_MODE_TEXT, + SCENE_MODE_CANDLE_LIGHT, + SCENE_MODE_MAX, +}; + +#define V4L2_CID_CAMERA_FLASH_MODE (V4L2_CID_PRIVATE_BASE + 71) +enum v4l2_flash_mode { + FLASH_MODE_BASE, + FLASH_MODE_OFF, + FLASH_MODE_AUTO, + FLASH_MODE_ON, + FLASH_MODE_TORCH, + FLASH_MODE_MAX, +}; + +#define V4L2_CID_CAMERA_BRIGHTNESS (V4L2_CID_PRIVATE_BASE + 72) +enum v4l2_ev_mode { + EV_MINUS_4 = 0, + EV_MINUS_3, + EV_MINUS_2, + EV_MINUS_1, + EV_DEFAULT, + EV_PLUS_1, + EV_PLUS_2, + EV_PLUS_3, + EV_PLUS_4, + EV_MAX, +}; + +#define V4L2_CID_CAMERA_WHITE_BALANCE (V4L2_CID_PRIVATE_BASE + 73) +enum v4l2_wb_mode { + WHITE_BALANCE_BASE = 0, + WHITE_BALANCE_AUTO, + WHITE_BALANCE_SUNNY, + WHITE_BALANCE_CLOUDY, + WHITE_BALANCE_TUNGSTEN, + WHITE_BALANCE_FLUORESCENT, + WHITE_BALANCE_MAX, +}; + +#define V4L2_CID_CAMERA_EFFECT (V4L2_CID_PRIVATE_BASE + 74) +enum v4l2_effect_mode { + IMAGE_EFFECT_BASE = 0, + IMAGE_EFFECT_NONE, + IMAGE_EFFECT_BNW, + IMAGE_EFFECT_SEPIA, + IMAGE_EFFECT_AQUA, + IMAGE_EFFECT_ANTIQUE, + IMAGE_EFFECT_NEGATIVE, + IMAGE_EFFECT_SHARPEN, + IMAGE_EFFECT_MAX, +}; + +#define V4L2_CID_CAMERA_ISO (V4L2_CID_PRIVATE_BASE + 75) +enum v4l2_iso_mode { + ISO_AUTO = 0, + ISO_50, + ISO_100, + ISO_200, + ISO_400, + ISO_800, + ISO_1600, + ISO_SPORTS, + ISO_NIGHT, + ISO_MOVIE, + ISO_MAX, +}; + +#define V4L2_CID_CAMERA_METERING (V4L2_CID_PRIVATE_BASE + 76) +enum v4l2_metering_mode { + METERING_BASE = 0, + METERING_MATRIX, + METERING_CENTER, + METERING_SPOT, + METERING_MAX, +}; + +#define V4L2_CID_CAMERA_CONTRAST (V4L2_CID_PRIVATE_BASE + 77) +enum v4l2_contrast_mode { + CONTRAST_MINUS_2 = 0, + CONTRAST_MINUS_1, + CONTRAST_DEFAULT, + CONTRAST_PLUS_1, + CONTRAST_PLUS_2, + CONTRAST_MAX, +}; + +#define V4L2_CID_CAMERA_SATURATION (V4L2_CID_PRIVATE_BASE + 78) +enum v4l2_saturation_mode { + SATURATION_MINUS_2 = 0, + SATURATION_MINUS_1, + SATURATION_DEFAULT, + SATURATION_PLUS_1, + SATURATION_PLUS_2, + SATURATION_MAX, +}; + +#define V4L2_CID_CAMERA_SHARPNESS (V4L2_CID_PRIVATE_BASE + 79) +enum v4l2_sharpness_mode { + SHARPNESS_MINUS_2 = 0, + SHARPNESS_MINUS_1, + SHARPNESS_DEFAULT, + SHARPNESS_PLUS_1, + SHARPNESS_PLUS_2, + SHARPNESS_MAX, +}; + +#define V4L2_CID_CAMERA_WDR (V4L2_CID_PRIVATE_BASE + 80) +enum v4l2_wdr_mode { + WDR_OFF, + WDR_ON, + WDR_MAX, +}; + +#define V4L2_CID_CAMERA_ANTI_SHAKE (V4L2_CID_PRIVATE_BASE + 81) +enum v4l2_anti_shake_mode { + ANTI_SHAKE_OFF, + ANTI_SHAKE_STILL_ON, + ANTI_SHAKE_MOVIE_ON, + ANTI_SHAKE_MAX, +}; + +#define V4L2_CID_CAMERA_TOUCH_AF_START_STOP (V4L2_CID_PRIVATE_BASE + 82) +enum v4l2_touch_af { + TOUCH_AF_STOP = 0, + TOUCH_AF_START, + TOUCH_AF_MAX, +}; + +#define V4L2_CID_CAMERA_SMART_AUTO (V4L2_CID_PRIVATE_BASE + 83) +enum v4l2_smart_auto { + SMART_AUTO_OFF = 0, + SMART_AUTO_ON, + SMART_AUTO_MAX, +}; + +#define V4L2_CID_CAMERA_VINTAGE_MODE (V4L2_CID_PRIVATE_BASE + 84) +enum v4l2_vintage_mode { + VINTAGE_MODE_BASE, + VINTAGE_MODE_OFF, + VINTAGE_MODE_NORMAL, + VINTAGE_MODE_WARM, + VINTAGE_MODE_COOL, + VINTAGE_MODE_BNW, + VINTAGE_MODE_MAX, +}; + +#define V4L2_CID_CAMERA_JPEG_QUALITY (V4L2_CID_PRIVATE_BASE + 85) +#define V4L2_CID_CAMERA_GPS_LATITUDE (V4L2_CID_CAMERA_CLASS_BASE + 30) +#define V4L2_CID_CAMERA_GPS_LONGITUDE (V4L2_CID_CAMERA_CLASS_BASE + 31) +#define V4L2_CID_CAMERA_GPS_TIMESTAMP (V4L2_CID_CAMERA_CLASS_BASE + 32) +#define V4L2_CID_CAMERA_GPS_ALTITUDE (V4L2_CID_CAMERA_CLASS_BASE + 33) +#define V4L2_CID_CAMERA_EXIF_TIME_INFO (V4L2_CID_CAMERA_CLASS_BASE + 34) +#define V4L2_CID_CAMERA_ZOOM (V4L2_CID_PRIVATE_BASE + 90) +enum v4l2_zoom_level { + ZOOM_LEVEL_0 = 0, + ZOOM_LEVEL_1, + ZOOM_LEVEL_2, + ZOOM_LEVEL_3, + ZOOM_LEVEL_4, + ZOOM_LEVEL_5, + ZOOM_LEVEL_6, + ZOOM_LEVEL_7, + ZOOM_LEVEL_8, + ZOOM_LEVEL_9, + ZOOM_LEVEL_10, + ZOOM_LEVEL_11, + ZOOM_LEVEL_12, + ZOOM_LEVEL_MAX, +}; + +#define V4L2_CID_CAMERA_FACE_DETECTION (V4L2_CID_PRIVATE_BASE + 91) +enum v4l2_face_detection { + FACE_DETECTION_OFF = 0, + FACE_DETECTION_ON, + FACE_DETECTION_NOLINE, + FACE_DETECTION_ON_BEAUTY, + FACE_DETECTION_MAX, +}; + +#define V4L2_CID_CAMERA_SMART_AUTO_STATUS (V4L2_CID_PRIVATE_BASE + 92) +enum v4l2_smart_auto_status { + SMART_AUTO_STATUS_AUTO = 0, + SMART_AUTO_STATUS_LANDSCAPE, + SMART_AUTO_STATUS_PORTRAIT, + SMART_AUTO_STATUS_MACRO, + SMART_AUTO_STATUS_NIGHT, + SMART_AUTO_STATUS_PORTRAIT_NIGHT, + SMART_AUTO_STATUS_BACKLIT, + SMART_AUTO_STATUS_PORTRAIT_BACKLIT, + SMART_AUTO_STATUS_ANTISHAKE, + SMART_AUTO_STATUS_PORTRAIT_ANTISHAKE, + SMART_AUTO_STATUS_MAX, +}; + +#define V4L2_CID_CAMERA_SET_AUTO_FOCUS (V4L2_CID_PRIVATE_BASE + 93) +enum v4l2_auto_focus { + AUTO_FOCUS_OFF = 0, + AUTO_FOCUS_ON, + AUTO_FOCUS_MAX, +}; + +#define V4L2_CID_CAMERA_BEAUTY_SHOT (V4L2_CID_PRIVATE_BASE + 94) +enum v4l2_beauty_shot { + BEAUTY_SHOT_OFF = 0, + BEAUTY_SHOT_ON, + BEAUTY_SHOT_MAX, +}; + +#define V4L2_CID_CAMERA_AEAWB_LOCK_UNLOCK (V4L2_CID_PRIVATE_BASE + 95) +enum v4l2_ae_awb_lockunlock { + AE_UNLOCK_AWB_UNLOCK = 0, + AE_LOCK_AWB_UNLOCK, + AE_UNLOCK_AWB_LOCK, + AE_LOCK_AWB_LOCK, + AE_AWB_MAX +}; + +#define V4L2_CID_CAMERA_FACEDETECT_LOCKUNLOCK (V4L2_CID_PRIVATE_BASE + 96) +enum v4l2_face_lock { + FACE_LOCK_OFF = 0, + FACE_LOCK_ON, + FIRST_FACE_TRACKING, + FACE_LOCK_MAX, +}; + +#define V4L2_CID_CAMERA_OBJECT_POSITION_X (V4L2_CID_PRIVATE_BASE + 97) +#define V4L2_CID_CAMERA_OBJECT_POSITION_Y (V4L2_CID_PRIVATE_BASE + 98) +#define V4L2_CID_CAMERA_FOCUS_MODE (V4L2_CID_PRIVATE_BASE + 99) +enum v4l2_focusmode { + FOCUS_MODE_AUTO = 0, + FOCUS_MODE_MACRO, + FOCUS_MODE_FACEDETECT, + FOCUS_MODE_AUTO_DEFAULT, + FOCUS_MODE_MACRO_DEFAULT, + FOCUS_MODE_FACEDETECT_DEFAULT, + FOCUS_MODE_INFINITY, + FOCUS_MODE_MAX, +}; + +#define V4L2_CID_CAMERA_OBJ_TRACKING_STATUS (V4L2_CID_PRIVATE_BASE + 100) +enum v4l2_obj_tracking_status { + OBJECT_TRACKING_STATUS_BASE, + OBJECT_TRACKING_STATUS_PROGRESSING, + OBJECT_TRACKING_STATUS_SUCCESS, + OBJECT_TRACKING_STATUS_FAIL, + OBJECT_TRACKING_STATUS_MISSING, + OBJECT_TRACKING_STATUS_MAX, +}; + +#define V4L2_CID_CAMERA_OBJ_TRACKING_START_STOP (V4L2_CID_PRIVATE_BASE + 101) +enum v4l2_ot_start_stop { + OT_STOP = 0, + OT_START, + OT_MAX, +}; + +#define V4L2_CID_CAMERA_CAF_START_STOP (V4L2_CID_PRIVATE_BASE + 102) +enum v4l2_caf_start_stop { + CAF_STOP = 0, + CAF_START, + CAF_MAX, +}; + +#define V4L2_CID_CAMERA_AUTO_FOCUS_RESULT (V4L2_CID_PRIVATE_BASE + 103) +#define V4L2_CID_CAMERA_FRAME_RATE (V4L2_CID_PRIVATE_BASE + 104) +enum v4l2_frame_rate { + FRAME_RATE_AUTO = 0, + FRAME_RATE_7 = 7, + FRAME_RATE_15 = 15, + FRAME_RATE_30 = 30, + FRAME_RATE_60 = 60, + FRAME_RATE_120 = 120, + FRAME_RATE_MAX +}; + +#define V4L2_CID_CAMERA_ANTI_BANDING (V4L2_CID_PRIVATE_BASE + 105) +enum v4l2_anti_banding { + ANTI_BANDING_AUTO = 0, + ANTI_BANDING_50HZ = 1, + ANTI_BANDING_60HZ = 2, + ANTI_BANDING_OFF = 3, +}; + +#define V4L2_CID_CAMERA_SET_GAMMA (V4L2_CID_PRIVATE_BASE + 106) +enum v4l2_gamma_mode { + GAMMA_OFF = 0, + GAMMA_ON = 1, + GAMMA_MAX, +}; + +#define V4L2_CID_CAMERA_SET_SLOW_AE (V4L2_CID_PRIVATE_BASE + 107) +enum v4l2_slow_ae_mode { + SLOW_AE_OFF, + SLOW_AE_ON, + SLOW_AE_MAX, +}; + +#define V4L2_CID_CAMERA_BATCH_REFLECTION (V4L2_CID_PRIVATE_BASE + 108) +#define V4L2_CID_CAMERA_EXIF_ORIENTATION (V4L2_CID_PRIVATE_BASE + 109) + +#define V4L2_CID_CAMERA_RESET (V4L2_CID_PRIVATE_BASE + 111) +#define V4L2_CID_CAMERA_CHECK_DATALINE (V4L2_CID_PRIVATE_BASE + 112) +#define V4L2_CID_CAMERA_CHECK_DATALINE_STOP (V4L2_CID_PRIVATE_BASE + 113) +#define V4L2_CID_CAMERA_GET_ISO (V4L2_CID_PRIVATE_BASE + 114) +#define V4L2_CID_CAMERA_GET_SHT_TIME (V4L2_CID_PRIVATE_BASE + 115) +#define V4L2_CID_CAMERA_SENSOR_MODE (V4L2_CID_PRIVATE_BASE + 116) +#define V4L2_CID_ESD_INT (V4L2_CID_PRIVATE_BASE + 117) + +/* Pixel format FOURCC depth Description */ +/* 12 Y/CbCr 4:2:0 64x32 macroblocks */ +#define V4L2_PIX_FMT_NV12T v4l2_fourcc('T', 'V', '1', '2') + +/* + * * V4L2 extention for digital camera + * */ +/* Strobe flash light */ +enum v4l2_strobe_control { + /* turn off the flash light */ + V4L2_STROBE_CONTROL_OFF = 0, + /* turn on the flash light */ + V4L2_STROBE_CONTROL_ON = 1, + /* act guide light before splash */ + V4L2_STROBE_CONTROL_AFGUIDE = 2, + /* charge the flash light */ + V4L2_STROBE_CONTROL_CHARGE = 3, +}; + +enum v4l2_strobe_conf { + V4L2_STROBE_OFF = 0, /* Always off */ + V4L2_STROBE_ON = 1, /* Always splashes */ + /* Auto control presets */ + V4L2_STROBE_AUTO = 2, + V4L2_STROBE_REDEYE_REDUCTION = 3, + V4L2_STROBE_SLOW_SYNC = 4, + V4L2_STROBE_FRONT_CURTAIN = 5, + V4L2_STROBE_REAR_CURTAIN = 6, + /* Extra manual control presets */ + /* keep turned on until turning off */ + V4L2_STROBE_PERMANENT = 7, + V4L2_STROBE_EXTERNAL = 8, +}; + +enum v4l2_strobe_status { + V4L2_STROBE_STATUS_OFF = 0, + /* while processing configurations */ + V4L2_STROBE_STATUS_BUSY = 1, + V4L2_STROBE_STATUS_ERR = 2, + V4L2_STROBE_STATUS_CHARGING = 3, + V4L2_STROBE_STATUS_CHARGED = 4, +}; + +/* capabilities field */ +/* No strobe supported */ +#define V4L2_STROBE_CAP_NONE 0x0000 +/* Always flash off mode */ +#define V4L2_STROBE_CAP_OFF 0x0001 +/* Always use flash light mode */ +#define V4L2_STROBE_CAP_ON 0x0002 +/* Flashlight works automatic */ +#define V4L2_STROBE_CAP_AUTO 0x0004 +/* Red-eye reduction */ +#define V4L2_STROBE_CAP_REDEYE 0x0008 +/* Slow sync */ +#define V4L2_STROBE_CAP_SLOWSYNC 0x0010 +/* Front curtain */ +#define V4L2_STROBE_CAP_FRONT_CURTAIN 0x0020 +/* Rear curtain */ +#define V4L2_STROBE_CAP_REAR_CURTAIN 0x0040 +/* keep turned on until turning off */ +#define V4L2_STROBE_CAP_PERMANENT 0x0080 +/* use external strobe */ +#define V4L2_STROBE_CAP_EXTERNAL 0x0100 + +/* Set mode and Get status */ +struct v4l2_strobe { + /* off/on/charge:0/1/2 */ + enum v4l2_strobe_control control; + /* supported strobe capabilities */ + __u32 capabilities; + enum v4l2_strobe_conf mode; + enum v4l2_strobe_status status; /* read only */ + /* default is 0 and range of value varies from each models */ + __u32 flash_ev; + __u32 reserved[4]; +}; + +#define VIDIOC_S_STROBE _IOWR('V', 83, struct v4l2_strobe) +#define VIDIOC_G_STROBE _IOR('V', 84, struct v4l2_strobe) + +/* Object recognition and collateral actions */ +enum v4l2_recog_mode { + V4L2_RECOGNITION_MODE_OFF = 0, + V4L2_RECOGNITION_MODE_ON = 1, + V4L2_RECOGNITION_MODE_LOCK = 2, +}; + +enum v4l2_recog_action { + V4L2_RECOGNITION_ACTION_NONE = 0, /* only recognition */ + V4L2_RECOGNITION_ACTION_BLINK = 1, /* Capture on blinking */ + V4L2_RECOGNITION_ACTION_SMILE = 2, /* Capture on smiling */ +}; + +enum v4l2_recog_pattern { + V4L2_RECOG_PATTERN_FACE = 0, /* Face */ + V4L2_RECOG_PATTERN_HUMAN = 1, /* Human */ + V4L2_RECOG_PATTERN_CHAR = 2, /* Character */ +}; + +struct v4l2_recog_rect { + enum v4l2_recog_pattern p; /* detected pattern */ + struct v4l2_rect o; /* detected area */ + __u32 reserved[4]; +}; + +struct v4l2_recog_data { + __u8 detect_cnt; /* detected object counter */ + struct v4l2_rect o; /* detected area */ + __u32 reserved[4]; +}; + +struct v4l2_recognition { + enum v4l2_recog_mode mode; + + /* Which pattern to detect */ + enum v4l2_recog_pattern pattern; + + /* How many object to detect */ + __u8 obj_num; + + /* select detected object */ + __u32 detect_idx; + + /* read only :Get object coordination */ + struct v4l2_recog_data data; + + enum v4l2_recog_action action; + __u32 reserved[4]; +}; + +#define VIDIOC_S_RECOGNITION _IOWR('V', 85, struct v4l2_recognition) +#define VIDIOC_G_RECOGNITION _IOR('V', 86, struct v4l2_recognition) + +/* We use this struct as the v4l2_streamparm raw_data for + * VIDIOC_G_PARM and VIDIOC_S_PARM + */ +struct sec_cam_parm { + struct v4l2_captureparm capture; + int contrast; + int effects; + int brightness; + int flash_mode; + int focus_mode; + int iso; + int metering; + int saturation; + int scene_mode; + int sharpness; + int white_balance; +}; #endif /* __LINUX_VIDEODEV2_SAMSUNG_H */ diff --git a/libcamera/SecCamera.cpp b/libcamera/SecCamera.cpp index 733c374..d143540 100644 --- a/libcamera/SecCamera.cpp +++ b/libcamera/SecCamera.cpp @@ -576,14 +576,14 @@ static int fimc_v4l2_s_ext_ctrl(int fp, unsigned int id, void *value) return ret; } #endif -static int fimc_v4l2_g_parm(int fp) + +static int fimc_v4l2_g_parm(int fp, struct v4l2_streamparm *streamparm) { - struct v4l2_streamparm stream; int ret; - stream.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + streamparm->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - ret = ioctl(fp, VIDIOC_G_PARM, &stream); + ret = ioctl(fp, VIDIOC_G_PARM, streamparm); if (ret < 0) { LOGE("ERR(%s):VIDIOC_G_PARM failed\n", __func__); return -1; @@ -596,17 +596,13 @@ static int fimc_v4l2_g_parm(int fp) return 0; } -static int fimc_v4l2_s_parm(int fp, int fps_numerator, int fps_denominator) +static int fimc_v4l2_s_parm(int fp, struct v4l2_streamparm *streamparm) { - struct v4l2_streamparm stream; int ret; - stream.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - stream.parm.capture.capturemode = 0; - stream.parm.capture.timeperframe.numerator = fps_numerator; - stream.parm.capture.timeperframe.denominator = fps_denominator; + streamparm->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - ret = ioctl(fp, VIDIOC_S_PARM, &stream); + ret = ioctl(fp, VIDIOC_S_PARM, streamparm); if (ret < 0) { LOGE("ERR(%s):VIDIOC_S_PARM failed\n", __func__); return ret; @@ -619,8 +615,6 @@ static int fimc_v4l2_s_parm(int fp, int fps_numerator, int fps_denominator) // Constructor & Destructor SecCamera::SecCamera() : - m_focus_mode(1), - m_iso(-1), m_flag_init(0), m_camera_id(CAMERA_ID_BACK), m_preview_v4lformat(V4L2_PIX_FMT_NV21), @@ -634,18 +628,8 @@ SecCamera::SecCamera() : m_snapshot_max_width (MAX_BACK_CAMERA_SNAPSHOT_WIDTH), m_snapshot_max_height (MAX_BACK_CAMERA_SNAPSHOT_HEIGHT), m_angle(-1), - m_fps(-1), - m_autofocus(-1), - m_white_balance(-1), - m_brightness(-1), - m_image_effect(-1), #ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION m_anti_banding(-1), - m_flash_mode(-1), - m_metering(-1), - m_contrast(-1), - m_saturation(-1), - m_sharpness(-1), m_wdr(-1), m_anti_shake(-1), m_zoom_level(-1), @@ -668,7 +652,7 @@ SecCamera::SecCamera() : m_slow_ae(-1), m_camera_af_flag(-1), #else - m_image_effect(IMAGE_EFFECT_ORIGINAL), + m_autofocus(-1), #endif m_flag_camera_start(0), m_jpeg_thumbnail_width (0), @@ -679,6 +663,22 @@ SecCamera::SecCamera() : m_esd_check_count(0) #endif // ENABLE_ESD_PREVIEW_CHECK { + m_params = (struct sec_cam_parm*)&m_streamparm.parm.raw_data; + struct v4l2_captureparm capture; + m_params->capture.timeperframe.numerator = 1; + m_params->capture.timeperframe.denominator = 0; + m_params->contrast = -1; + m_params->effects = -1; + m_params->brightness = -1; + m_params->flash_mode = -1; + m_params->focus_mode = -1; + m_params->iso = -1; + m_params->metering = -1; + m_params->saturation = -1; + m_params->scene_mode = -1; + m_params->sharpness = -1; + m_params->white_balance = -1; + LOGV("%s :", __func__); } @@ -896,6 +896,9 @@ int SecCamera::flagPreviewStart(void) int SecCamera::startPreview(void) { + v4l2_streamparm streamparm; + struct sec_cam_parm *parms; + parms = (struct sec_cam_parm*)&streamparm.parm.raw_data; #ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION LOGV("%s :", __func__); #else /* SWP1_CAMERA_ADD_ADVANCED_FUNCTION */ @@ -929,12 +932,6 @@ int SecCamera::startPreview(void) ret = fimc_v4l2_querybuf(m_cam_fd, m_buffers_c, V4L2_BUF_TYPE_VIDEO_CAPTURE, MAX_BUFFERS); CHECK(ret); - /* g_parm, s_parm sample */ - ret = fimc_v4l2_g_parm(m_cam_fd); - CHECK(ret); - ret = fimc_v4l2_s_parm(m_cam_fd, 1, m_fps); - CHECK(ret); - #ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION LOGV("%s : m_preview_width: %d m_preview_height: %d m_angle: %d\n", __func__, m_preview_width, m_preview_height, m_angle); @@ -963,56 +960,16 @@ int SecCamera::startPreview(void) m_flag_camera_start = 1; //Kamat check if (m_camera_id == CAMERA_ID_BACK) { - ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_EFFECT, m_image_effect); - CHECK(ret); - ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_WHITE_BALANCE, m_white_balance); - CHECK(ret); - ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_ISO, m_iso); - CHECK(ret); - ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_FLASH_MODE, - m_flash_mode); - CHECK(ret); - if (m_focus_mode ==FOCUS_MODE_FACEDETECT) - ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_FOCUS_MODE, FOCUS_MODE_AUTO); - else { - if (m_shot_mode == 2) { //Panorama shot - ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_FOCUS_MODE, m_focus_mode); - CHECK(ret); - m_camera_af_flag = -1; - } else if (m_shot_mode == 3) { //Smile shot - ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_FOCUS_MODE, m_focus_mode); - CHECK(ret); - m_camera_af_flag = -1; - } else if (m_camera_af_flag < 0) { //After captur, Focus is fixed. - ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_FOCUS_MODE, m_focus_mode); - CHECK(ret); - m_camera_af_flag = 0; - } - } - ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_FRAME_RATE, m_fps); - CHECK(ret); - ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_METERING, m_metering); - CHECK(ret); - ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_SATURATION, m_saturation); - CHECK(ret); - ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_CONTRAST, m_contrast); - CHECK(ret); - - // Apply the scene mode only in camera not in camcorder - if (!m_sensor_mode) { - ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_SCENE_MODE, m_scene_mode); - CHECK(ret); - } - ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_BRIGHTNESS, m_brightness); - CHECK(ret); - ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_SHARPNESS, m_sharpness); + ret = fimc_v4l2_s_parm(m_cam_fd, &m_streamparm); CHECK(ret); } else { // In case VGA camera /* Brightness setting */ - ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_BRIGHTNESS, m_brightness); + ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_BRIGHTNESS, + m_params->brightness); CHECK(ret); /* Blur setting */ - ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_VGA_BLUR, m_blur_level); + ret = fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_VGA_BLUR, + m_blur_level); CHECK(ret); } #endif @@ -1115,12 +1072,6 @@ int SecCamera::startRecord(void) ret = fimc_v4l2_querybuf(m_cam_fd2, m_buffers_c2, V4L2_BUF_TYPE_VIDEO_CAPTURE, MAX_BUFFERS); CHECK(ret); - /* g_parm, s_parm sample */ - ret = fimc_v4l2_g_parm(m_cam_fd2); - CHECK(ret); - ret = fimc_v4l2_s_parm(m_cam_fd2, 1, m_fps); - CHECK(ret); - /* start with all buffers in queue */ for (int i = 0; i < MAX_BUFFERS; i++) { ret = fimc_v4l2_qbuf(m_cam_fd2, i); @@ -1448,11 +1399,6 @@ int SecCamera::setSnapshotCmd(void) ret = fimc_v4l2_querybuf(m_cam_fd, m_buffers_c, V4L2_BUF_TYPE_VIDEO_CAPTURE, nframe); CHECK_PTR(ret); - ret = fimc_v4l2_g_parm(m_cam_fd); - CHECK_PTR(ret); - ret = fimc_v4l2_s_parm(m_cam_fd, 1, m_fps); - CHECK_PTR(ret); - ret = fimc_v4l2_qbuf(m_cam_fd, 0); CHECK_PTR(ret); @@ -1704,12 +1650,6 @@ int SecCamera::getSnapshotAndJpeg(unsigned char *yuv_buf, unsigned char *jpeg_bu ret = fimc_v4l2_querybuf(m_cam_fd, m_buffers_c, V4L2_BUF_TYPE_VIDEO_CAPTURE, nframe); CHECK(ret); - /* g_parm, s_parm sample */ - ret = fimc_v4l2_g_parm(m_cam_fd); - CHECK(ret); - ret = fimc_v4l2_s_parm(m_cam_fd, 1, m_fps); - CHECK(ret); - ret = fimc_v4l2_qbuf(m_cam_fd, 0); CHECK(ret); @@ -2057,25 +1997,19 @@ void SecCamera::setFrameRate(int frame_rate) if (frame_rate < FRAME_RATE_AUTO || FRAME_RATE_MAX < frame_rate ) LOGE("ERR(%s):Invalid frame_rate(%d)", __func__, frame_rate); - if (m_fps != frame_rate) { - m_fps = frame_rate; + if (m_params->capture.timeperframe.denominator != (unsigned)frame_rate) { + m_params->capture.timeperframe.denominator = frame_rate; if (m_flag_camera_start) { if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_FRAME_RATE, frame_rate) < 0) LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_FRAME_RATE", __func__); } } #else - m_fps = frame_rate; + m_params->capture.timeperframe.denominator = frame_rate; #endif } -/* kidggang (10.7.5) - Problem - After jpegquality is capture, operation setting is normal. -void SecCamera::setJpegQuality(int quality) -{ - m_jpeg_quality = quality; -} -*/ // ----------------------------------- int SecCamera::setVerticalMirror(void) @@ -2127,8 +2061,8 @@ int SecCamera::setWhiteBalance(int white_balance) return -1; } - if (m_white_balance != white_balance) { - m_white_balance = white_balance; + if (m_params->white_balance != white_balance) { + m_params->white_balance = white_balance; #ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION if (m_flag_camera_start) { if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_WHITE_BALANCE, white_balance) < 0) { @@ -2144,8 +2078,8 @@ int SecCamera::setWhiteBalance(int white_balance) int SecCamera::getWhiteBalance(void) { - LOGV("%s : white_balance(%d)", __func__, m_white_balance); - return m_white_balance; + LOGV("%s : white_balance(%d)", __func__, m_parmas.white_balance); + return m_params->white_balance; } // ----------------------------------- @@ -2154,15 +2088,15 @@ int SecCamera::setBrightness(int brightness) { LOGV("%s(brightness(%d))", __func__, brightness); - brightness += BRIGHTNESS_NORMAL; + brightness += EV_DEFAULT; - if (brightness < BRIGHTNESS_MINUS_4 || BRIGHTNESS_PLUS_4 < brightness) { + if (brightness < EV_MINUS_4 || EV_PLUS_4 < brightness) { LOGE("ERR(%s):Invalid brightness(%d)", __func__, brightness); return -1; } - if (m_brightness != brightness) { - m_brightness = brightness; + if (m_params->brightness != brightness) { + m_params->brightness = brightness; #ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION if (m_flag_camera_start) { if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_BRIGHTNESS, brightness) < 0) { @@ -2178,8 +2112,8 @@ int SecCamera::setBrightness(int brightness) int SecCamera::getBrightness(void) { - LOGV("%s : brightness(%d)", __func__, m_brightness); - return m_brightness; + LOGV("%s : brightness(%d)", __func__, m_params->brightness); + return m_params->brightness; } // ----------------------------------- @@ -2197,8 +2131,8 @@ int SecCamera::setImageEffect(int image_effect) return -1; } - if (m_image_effect != image_effect) { - m_image_effect = image_effect; + if (m_params->effects != image_effect) { + m_params->effects = image_effect; #ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION if (m_flag_camera_start) { if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_EFFECT, image_effect) < 0) { @@ -2214,8 +2148,8 @@ int SecCamera::setImageEffect(int image_effect) int SecCamera::getImageEffect(void) { - LOGV("%s : image_effect(%d)", __func__, m_image_effect); - return m_image_effect; + LOGV("%s : image_effect(%d)", __func__, m_params->effects); + return m_params->effects; } // ====================================================================== @@ -2252,10 +2186,10 @@ int SecCamera::setSceneMode(int scene_mode) return -1; } - if (m_scene_mode != scene_mode) { - m_scene_mode = scene_mode; + if (m_params->scene_mode != scene_mode) { + m_params->scene_mode = scene_mode; if (m_flag_camera_start) { - if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_SCENE_MODE, m_scene_mode) < 0) { + if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_SCENE_MODE, scene_mode) < 0) { LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_SCENE_MODE", __func__); return -1; } @@ -2267,7 +2201,7 @@ int SecCamera::setSceneMode(int scene_mode) int SecCamera::getSceneMode(void) { - return m_scene_mode; + return m_params->scene_mode; } //====================================================================== @@ -2281,8 +2215,8 @@ int SecCamera::setFlashMode(int flash_mode) return -1; } - if (m_flash_mode != flash_mode) { - m_flash_mode = flash_mode; + if (m_params->flash_mode != flash_mode) { + m_params->flash_mode = flash_mode; if (m_flag_camera_start) { if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_FLASH_MODE, flash_mode) < 0) { LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_FLASH_MODE", __func__); @@ -2296,7 +2230,7 @@ int SecCamera::setFlashMode(int flash_mode) int SecCamera::getFlashMode(void) { - return m_flash_mode; + return m_params->flash_mode; } //====================================================================== @@ -2309,8 +2243,8 @@ int SecCamera::setISO(int iso_value) return -1; } - if (m_iso != iso_value) { - m_iso = iso_value; + if (m_params->iso != iso_value) { + m_params->iso = iso_value; if (m_flag_camera_start) { if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_ISO, iso_value) < 0) { LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_ISO", __func__); @@ -2324,7 +2258,7 @@ int SecCamera::setISO(int iso_value) int SecCamera::getISO(void) { - return m_iso; + return m_params->iso; } //====================================================================== @@ -2338,8 +2272,8 @@ int SecCamera::setContrast(int contrast_value) return -1; } - if (m_contrast != contrast_value) { - m_contrast = contrast_value; + if (m_params->contrast != contrast_value) { + m_params->contrast = contrast_value; if (m_flag_camera_start) { if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_CONTRAST, contrast_value) < 0) { LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_CONTRAST", __func__); @@ -2353,7 +2287,7 @@ int SecCamera::setContrast(int contrast_value) int SecCamera::getContrast(void) { - return m_contrast; + return m_params->contrast; } //====================================================================== @@ -2367,8 +2301,8 @@ int SecCamera::setSaturation(int saturation_value) return -1; } - if (m_saturation != saturation_value) { - m_saturation = saturation_value; + if (m_params->saturation != saturation_value) { + m_params->saturation = saturation_value; if (m_flag_camera_start) { if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_SATURATION, saturation_value) < 0) { LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_SATURATION", __func__); @@ -2382,7 +2316,7 @@ int SecCamera::setSaturation(int saturation_value) int SecCamera::getSaturation(void) { - return m_saturation; + return m_params->saturation; } //====================================================================== @@ -2396,8 +2330,8 @@ int SecCamera::setSharpness(int sharpness_value) return -1; } - if (m_sharpness != sharpness_value) { - m_sharpness = sharpness_value; + if (m_params->sharpness != sharpness_value) { + m_params->sharpness = sharpness_value; if (m_flag_camera_start) { if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_SHARPNESS, sharpness_value) < 0) { LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_SHARPNESS", __func__); @@ -2411,7 +2345,7 @@ int SecCamera::setSharpness(int sharpness_value) int SecCamera::getSharpness(void) { - return m_sharpness; + return m_params->sharpness; } //====================================================================== @@ -2484,8 +2418,8 @@ int SecCamera::setMetering(int metering_value) return -1; } - if (m_metering != metering_value) { - m_metering = metering_value; + if (m_params->metering != metering_value) { + m_params->metering = metering_value; if (m_flag_camera_start) { if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_METERING, metering_value) < 0) { LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_METERING", __func__); @@ -2499,7 +2433,7 @@ int SecCamera::setMetering(int metering_value) int SecCamera::getMetering(void) { - return m_metering; + return m_params->metering; } //====================================================================== @@ -2684,7 +2618,7 @@ int SecCamera::setBeautyShot(int beauty_shot) } } - setFaceDetect(FACE_DETECT_BEAUTY_ON); + setFaceDetect(FACE_DETECTION_ON_BEAUTY); } return 0; @@ -2735,27 +2669,13 @@ int SecCamera::setFocusMode(int focus_mode) return -1; } - if (m_focus_mode != focus_mode) { - m_focus_mode = focus_mode; + if (m_params->focus_mode != focus_mode) { + m_params->focus_mode = focus_mode; - if (m_focus_mode != FOCUS_MODE_FACEDETECT) { - m_face_detect = FACE_DETECT_OFF; - if (m_flag_camera_start) { -// setFaceDetect(m_face_detect); - - if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_FOCUS_MODE, focus_mode) < 0) { - LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_FOCUS_MODE", __func__); - return -1; - } - } - } else { - m_face_detect = FACE_DETECT_NORMAL_ON; - if (m_flag_camera_start) { - if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_FOCUS_MODE, FOCUS_MODE_AUTO) < 0) { - LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_FOCUS_MODE", __func__); - return -1; -// setFaceDetect(m_face_detect); - } + if (m_flag_camera_start) { + if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_FOCUS_MODE, focus_mode) < 0) { + LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_FOCUS_MODE", __func__); + return -1; } } } @@ -2765,7 +2685,7 @@ int SecCamera::setFocusMode(int focus_mode) int SecCamera::getFocusMode(void) { - return m_focus_mode; + return m_params->focus_mode; } //====================================================================== @@ -2777,7 +2697,7 @@ int SecCamera::setFaceDetect(int face_detect) if (m_face_detect != face_detect) { m_face_detect = face_detect; if (m_flag_camera_start) { - if (m_face_detect != FACE_DETECT_OFF) { + if (m_face_detect != FACE_DETECTION_OFF) { if (fimc_v4l2_s_ctrl(m_cam_fd, V4L2_CID_CAMERA_FOCUS_MODE, FOCUS_MODE_AUTO) < 0) { LOGE("ERR(%s):Fail on V4L2_CID_CAMERA_FOCUS_MODin face detecion", __func__); return -1; @@ -2940,7 +2860,7 @@ int SecCamera::setSlowAE(int slow_ae) //====================================================================== int SecCamera::setRecordingSize(int width, int height) { - LOGE("%s(width(%d), height(%d))", __func__, width, height); + LOGV("%s(width(%d), height(%d))", __func__, width, height); m_recording_width = width; m_recording_height = height; @@ -3412,10 +3332,10 @@ void SecCamera::setExifChangedAttribute() //3 ISO Speed Rating int iso = fimc_v4l2_g_ctrl(m_cam_fd, V4L2_CID_CAMERA_GET_ISO); - if (m_iso == ISO_AUTO) { + if (m_params->iso == ISO_AUTO) { mExifInfo.iso_speed_rating = iso; } else { - switch(m_iso) { + switch(m_params->iso) { case ISO_50: mExifInfo.iso_speed_rating = 50; break; @@ -3456,7 +3376,7 @@ void SecCamera::setExifChangedAttribute() mExifInfo.brightness.num = bv*EXIF_DEF_APEX_DEN; mExifInfo.brightness.den = EXIF_DEF_APEX_DEN; //3 Exposure Bias - if (m_scene_mode == SCENE_MODE_BEACH_SNOW) { + if (m_params->scene_mode == SCENE_MODE_BEACH_SNOW) { mExifInfo.exposure_bias.num = EXIF_DEF_APEX_DEN; mExifInfo.exposure_bias.den = EXIF_DEF_APEX_DEN; } else { @@ -3464,7 +3384,7 @@ void SecCamera::setExifChangedAttribute() mExifInfo.exposure_bias.den = 0; } //3 Metering Mode - switch (m_metering) { + switch (m_params->metering) { case METERING_SPOT: mExifInfo.metering_mode = EXIF_METERING_SPOT; break; @@ -3479,12 +3399,12 @@ void SecCamera::setExifChangedAttribute() break; } //3 White Balance - if (m_white_balance == WHITE_BALANCE_AUTO) + if (m_params->white_balance == WHITE_BALANCE_AUTO) mExifInfo.white_balance = EXIF_WB_AUTO; else mExifInfo.white_balance = EXIF_WB_MANUAL; //3 Scene Capture Type - switch (m_scene_mode) { + switch (m_params->scene_mode) { case SCENE_MODE_PORTRAIT: mExifInfo.scene_capture_type = EXIF_SCENE_PORTRAIT; break; diff --git a/libcamera/SecCamera.h b/libcamera/SecCamera.h index 46a638b..6d7b782 100644 --- a/libcamera/SecCamera.h +++ b/libcamera/SecCamera.h @@ -215,155 +215,7 @@ public: CAMERA_ID_FRONT = 1, }; - enum AUTO_FOCUS { - AUTO_FOCUS_OFF = 0, - AUTO_FOCUS_ON, - AUTO_FOCUS_MAX, - }; - - enum WHILTE_BALANCE { - #ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION - WHITE_BALANCE_BASE, - WHITE_BALANCE_AUTO, - WHITE_BALANCE_DAYLIGHT, - WHITE_BALANCE_CLOUDY, - WHITE_BALANCE_INCANDESCENT, - WHITE_BALANCE_FLUORESCENT, - WHITE_BALANCE_MAX, - #else - WHITE_BALANCE_AUTO, - WHITE_BALANCE_INDOOR3100, - WHITE_BALANCE_OUTDOOR5100, - WHITE_BALANCE_INDOOR2000, - WHITE_BALANCE_HALT, - WHITE_BALANCE_CLOUDY, - WHITE_BALANCE_SUNNY, - #endif - }; - - enum BRIGHTNESS { - BRIGHTNESS_MINUS_4= 0, - BRIGHTNESS_MINUS_3, - BRIGHTNESS_MINUS_2, - BRIGHTNESS_MINUS_1, - BRIGHTNESS_NORMAL, - BRIGHTNESS_PLUS_1, - BRIGHTNESS_PLUS_2, - BRIGHTNESS_PLUS_3, - BRIGHTNESS_PLUS_4, - }; - - enum IMAGE_EFFECT { - #ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION - IMAGE_EFFECT_BASE, - IMAGE_EFFECT_NONE, - IMAGE_EFFECT_BNW, - IMAGE_EFFECT_SEPIA, - IMAGE_EFFECT_AQUA, - IMAGE_EFFECT_ANTIQUE, - IMAGE_EFFECT_NEGATIVE, - IMAGE_EFFECT_SHARPEN, - IMAGE_EFFECT_MAX, - #else - IMAGE_EFFECT_ORIGINAL, - IMAGE_EFFECT_ARBITRARY, - IMAGE_EFFECT_NEGATIVE, - IMAGE_EFFECT_FREEZE, - IMAGE_EFFECT_EMBOSSING, - IMAGE_EFFECT_SILHOUETTE, - #endif - }; - #ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION - enum SCENE_MODE { - SCENE_MODE_BASE, - SCENE_MODE_NONE, - SCENE_MODE_PORTRAIT, - SCENE_MODE_NIGHTSHOT, - SCENE_MODE_BACK_LIGHT, - SCENE_MODE_LANDSCAPE, - SCENE_MODE_SPORTS, - SCENE_MODE_PARTY_INDOOR, - SCENE_MODE_BEACH_SNOW, - SCENE_MODE_SUNSET, - SCENE_MODE_DUSK_DAWN, - SCENE_MODE_FALL_COLOR, - SCENE_MODE_FIREWORKS, - SCENE_MODE_TEXT, - SCENE_MODE_CANDLE_LIGHT, - SCENE_MODE_MAX, - }; - - enum FLASH_MODE { - FLASH_MODE_BASE, - FLASH_MODE_OFF, - FLASH_MODE_AUTO, - FLASH_MODE_ON, - FLASH_MODE_TORCH, - FLASH_MODE_MAX, - }; - - enum ISO { - ISO_AUTO, - ISO_50, - ISO_100, - ISO_200, - ISO_400, - ISO_800, - ISO_1600, - ISO_SPORTS, - ISO_NIGHT, - ISO_MOVIE, - ISO_MAX, - }; - - enum METERING { - METERING_BASE = 0, - METERING_MATRIX, - METERING_CENTER, - METERING_SPOT, - METERING_MAX, - }; - - enum CONTRAST { - CONTRAST_MINUS_2 = 0, - CONTRAST_MINUS_1, - CONTRAST_NORMAL, - CONTRAST_PLUS_1, - CONTRAST_PLUS_2, - CONTRAST_MAX, - }; - - enum SATURATION { - SATURATION_MINUS_2= 0, - SATURATION_MINUS_1, - SATURATION_NORMAL, - SATURATION_PLUS_1, - SATURATION_PLUS_2, - SATURATION_MAX, - }; - - enum SHARPNESS { - SHARPNESS_MINUS_2 = 0, - SHARPNESS_MINUS_1, - SHARPNESS_NORMAL, - SHARPNESS_PLUS_1, - SHARPNESS_PLUS_2, - SHARPNESS_MAX, - }; - - enum WDR { - WDR_OFF, - WDR_ON, - WDR_MAX, - }; - - enum ANTI_SHAKE { - ANTI_SHAKE_OFF, - ANTI_SHAKE_ON, - ANTI_SHAKE_MAX, - }; - enum JPEG_QUALITY { JPEG_QUALITY_ECONOMY = 0, JPEG_QUALITY_NORMAL = 50, @@ -371,128 +223,12 @@ public: JPEG_QUALITY_MAX, }; - enum ZOOM_LEVEL { - ZOOM_LEVEL_0 = 0, - ZOOM_LEVEL_1, - ZOOM_LEVEL_2, - ZOOM_LEVEL_3, - ZOOM_LEVEL_4, - ZOOM_LEVEL_5, - ZOOM_LEVEL_6, - ZOOM_LEVEL_7, - ZOOM_LEVEL_8, - ZOOM_LEVEL_9, - ZOOM_LEVEL_10, - ZOOM_LEVEL_11, - ZOOM_LEVEL_12, - ZOOM_LEVEL_MAX, - }; - enum OBJECT_TRACKING { OBJECT_TRACKING_OFF, OBJECT_TRACKING_ON, OBJECT_TRACKING_MAX, }; - enum OBJECT_TRACKING_STAUS { - OBJECT_TRACKING_STATUS_BASE, - OBJECT_TRACKING_STATUS_PROGRESSING, - OBJECT_TRACKING_STATUS_SUCCESS, - OBJECT_TRACKING_STATUS_FAIL, - OBJECT_TRACKING_STATUS_MISSING, - OBJECT_TRACKING_STATUS_MAX, - }; - - enum SMART_AUTO { - SMART_AUTO_OFF, - SMART_AUTO_ON, - SMART_AUTO_MAX, - }; - - enum BEAUTY_SHOT { - BEAUTY_SHOT_OFF, - BEAUTY_SHOT_ON, - BEAUTY_SHOT_MAX, - }; - - enum VINTAGE_MODE { - VINTAGE_MODE_BASE, - VINTAGE_MODE_OFF, - VINTAGE_MODE_NORMAL, - VINTAGE_MODE_WARM, - VINTAGE_MODE_COOL, - VINTAGE_MODE_BNW, - VINTAGE_MODE_MAX, - }; - - enum FOCUS_MODE { - FOCUS_MODE_AUTO, - FOCUS_MODE_MACRO, - FOCUS_MODE_FACEDETECT, - FOCUS_MODE_AUTO_DEFAULT, - FOCUS_MODE_MACRO_DEFAULT, - FOCUS_MODE_FACEDETECT_DEFAULT, - FOCUS_MODE_INFINITY, - FOCUS_MODE_MAX, - }; - - enum FACE_DETECT { - FACE_DETECT_OFF, - FACE_DETECT_NORMAL_ON, - FACE_DETECT_BEAUTY_ON, - FACE_DETECT_NO_LINE, - FACE_DETECT_MAX, - }; - - enum AE_AWB_LOCK_UNLOCK { - AE_UNLOCK_AWB_UNLOCK = 0, - AE_LOCK_AWB_UNLOCK, - AE_UNLOCK_AWB_LOCK, - AE_LOCK_AWB_LOCK, - AE_AWB_MAX - }; - - enum FRAME_RATE { - FRAME_RATE_AUTO = 0, - FRAME_RATE_15 = 15, - FRAME_RATE_30 = 30, - FRAME_RATE_60 = 60, - FRAME_RATE_120 = 120, - FRAME_RATE_MAX - }; - enum ANTI_BANDING { - ANTI_BANDING_AUTO = 0, - ANTI_BANDING_50HZ = 1, - ANTI_BANDING_60HZ = 2, - ANTI_BANDING_OFF = 3, - }; - - enum SMART_AUTO_SCENE { - SMART_AUTO_STATUS_AUTO = 0, - SMART_AUTO_STATUS_LANDSCAPE, - SMART_AUTO_STATUS_PORTRAIT, - SMART_AUTO_STATUS_MACRO, - SMART_AUTO_STATUS_NIGHT, - SMART_AUTO_STATUS_PORTRAIT_NIGHT, - SMART_AUTO_STATUS_BACKLIT, - SMART_AUTO_STATUS_PORTRAIT_BACKLIT, - SMART_AUTO_STATUS_ANTISHAKE, - SMART_AUTO_STATUS_PORTRAIT_ANTISHAKE, - SMART_AUTO_STATUS_MAX, - }; - - enum GAMMA { - GAMMA_OFF, - GAMMA_ON, - GAMMA_MAX, - }; - - enum SLOW_AE { - SLOW_AE_OFF, - SLOW_AE_ON, - SLOW_AE_MAX, - }; - /*VT call*/ enum VT_MODE { VT_MODE_OFF, @@ -515,30 +251,13 @@ public: SHOT_MODE_SELF = 6, }; - enum BLUR_LEVEL { - BLUR_LEVEL_0 = 0, - BLUR_LEVEL_1, - BLUR_LEVEL_2, - BLUR_LEVEL_3, - BLUR_LEVEL_MAX, - }; - enum CHK_DATALINE { CHK_DATALINE_OFF, CHK_DATALINE_ON, CHK_DATALINE_MAX, }; - enum FACE_LOCK { - FACE_LOCK_OFF, - FACE_LOCK_ON, - FIRST_FACE_TRACKING, - FACE_LOCK_MAX - }; - int m_touch_af_start_stop; - int m_focus_mode; - int m_iso; #ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION struct gps_info_latiude { @@ -590,9 +309,7 @@ public: unsigned int getRecPhyAddrC(int); #endif int flagPreviewStart(void); - //int getPreview (unsigned char *buffer, unsigned int buffer_size); int getPreview(void); - //int getPreview(int *offset, int *size, unsigned char *buffer, unsigned int buffer_size); int setPreviewSize(int width, int height, int pixel_format); int getPreviewSize(int *width, int *height, int *frame_size); int getPreviewMaxSize(int *width, int *height); @@ -724,7 +441,6 @@ public: #endif void setFrameRate(int frame_rate); -// void setJpegQuality(int quality); unsigned char* getJpeg(int*, unsigned int*); int getSnapshotAndJpeg(unsigned char *yuv_buf, unsigned char *jpeg_buf, unsigned int *output_size); @@ -784,6 +500,8 @@ public: private: + v4l2_streamparm m_streamparm; + struct sec_cam_parm *m_params; int m_flag_init; int m_camera_id; @@ -812,19 +530,11 @@ private: int m_snapshot_max_height; int m_angle; - int m_fps; +#ifndef SWP1_CAMERA_ADD_ADVANCED_FUNCTION int m_autofocus; - int m_white_balance; - int m_brightness; - int m_image_effect; +#endif #ifdef SWP1_CAMERA_ADD_ADVANCED_FUNCTION int m_anti_banding; - int m_scene_mode; - int m_flash_mode; - int m_metering; - int m_contrast; - int m_saturation; - int m_sharpness; int m_wdr; int m_anti_shake; int m_zoom_level; diff --git a/libcamera/SecCameraHWInterface.cpp b/libcamera/SecCameraHWInterface.cpp index 4eccb31..e8df8eb 100644 --- a/libcamera/SecCameraHWInterface.cpp +++ b/libcamera/SecCameraHWInterface.cpp @@ -1668,18 +1668,18 @@ status_t CameraHardwareSec::setParameters(const CameraParameters& params) const char *new_flash_mode_str = NULL; if (!strcmp(new_scene_mode_str, CameraParameters::SCENE_MODE_AUTO)) { - new_scene_mode = SecCamera::SCENE_MODE_NONE; + new_scene_mode = SCENE_MODE_NONE; } else { // defaults for the scene modes mInternalParameters.set("iso", "auto"); mInternalParameters.set("metering", "center"); mParameters.set(CameraParameters::KEY_EXPOSURE_COMPENSATION, - SecCamera::BRIGHTNESS_NORMAL); + EV_DEFAULT); mParameters.set(CameraParameters::KEY_WHITE_BALANCE, CameraParameters::WHITE_BALANCE_AUTO); - mInternalParameters.set("sharpness", SecCamera::SHARPNESS_NORMAL); - mInternalParameters.set("saturation", SecCamera::SATURATION_NORMAL); + mInternalParameters.set("sharpness", SHARPNESS_DEFAULT); + mInternalParameters.set("saturation", SATURATION_DEFAULT); if (new_camera_id == SecCamera::CAMERA_ID_BACK) { mParameters.set(CameraParameters::KEY_FOCUS_MODE, CameraParameters::FOCUS_MODE_AUTO); @@ -1689,47 +1689,46 @@ status_t CameraHardwareSec::setParameters(const CameraParameters& params) if (!strcmp(new_scene_mode_str, CameraParameters::SCENE_MODE_PORTRAIT)) { - new_scene_mode = SecCamera::SCENE_MODE_PORTRAIT; + new_scene_mode = SCENE_MODE_PORTRAIT; - mInternalParameters.set("sharpness", - SecCamera::SHARPNESS_MINUS_1); + mInternalParameters.set("sharpness", SHARPNESS_MINUS_1); } else if (!strcmp(new_scene_mode_str, CameraParameters::SCENE_MODE_LANDSCAPE)) { - new_scene_mode = SecCamera::SCENE_MODE_LANDSCAPE; + new_scene_mode = SCENE_MODE_LANDSCAPE; mInternalParameters.set("metering", "matrix"); - mInternalParameters.set("sharpness", SecCamera::SHARPNESS_PLUS_1); - mInternalParameters.set("saturation", SecCamera::SATURATION_PLUS_1); + mInternalParameters.set("sharpness", SHARPNESS_PLUS_1); + mInternalParameters.set("saturation", SATURATION_PLUS_1); mParameters.set(CameraParameters::KEY_FLASH_MODE, CameraParameters::FLASH_MODE_OFF); } else if (!strcmp(new_scene_mode_str, CameraParameters::SCENE_MODE_SPORTS)) { - new_scene_mode = SecCamera::SCENE_MODE_SPORTS; + new_scene_mode = SCENE_MODE_SPORTS; mInternalParameters.set("iso", "sports"); mParameters.set(CameraParameters::KEY_FLASH_MODE, CameraParameters::FLASH_MODE_OFF); } else if (!strcmp(new_scene_mode_str, CameraParameters::SCENE_MODE_PARTY)) { - new_scene_mode = SecCamera::SCENE_MODE_PARTY_INDOOR; + new_scene_mode = SCENE_MODE_PARTY_INDOOR; mInternalParameters.set("iso", "200"); - mInternalParameters.set("saturation", SecCamera::SATURATION_PLUS_1); + mInternalParameters.set("saturation", SATURATION_PLUS_1); } else if ((!strcmp(new_scene_mode_str, CameraParameters::SCENE_MODE_BEACH)) || (!strcmp(new_scene_mode_str, CameraParameters::SCENE_MODE_SNOW))) { - new_scene_mode = SecCamera::SCENE_MODE_BEACH_SNOW; + new_scene_mode = SCENE_MODE_BEACH_SNOW; mInternalParameters.set("iso", "50"); mParameters.set(CameraParameters::KEY_EXPOSURE_COMPENSATION, - SecCamera::BRIGHTNESS_PLUS_2); - mInternalParameters.set("saturation", SecCamera::SATURATION_PLUS_1); + EV_PLUS_2); + mInternalParameters.set("saturation", SATURATION_PLUS_1); mParameters.set(CameraParameters::KEY_FLASH_MODE, CameraParameters::FLASH_MODE_OFF); } else if (!strcmp(new_scene_mode_str, CameraParameters::SCENE_MODE_SUNSET)) { - new_scene_mode = SecCamera::SCENE_MODE_SUNSET; + new_scene_mode = SCENE_MODE_SUNSET; mParameters.set(CameraParameters::KEY_WHITE_BALANCE, CameraParameters::WHITE_BALANCE_DAYLIGHT); @@ -1737,7 +1736,7 @@ status_t CameraHardwareSec::setParameters(const CameraParameters& params) CameraParameters::FLASH_MODE_OFF); } else if (!strcmp(new_scene_mode_str, CameraParameters::SCENE_MODE_NIGHT)) { - new_scene_mode = SecCamera::SCENE_MODE_NIGHTSHOT; + new_scene_mode = SCENE_MODE_NIGHTSHOT; mParameters.set(CameraParameters::KEY_PREVIEW_FPS_RANGE, "3780,30000"); @@ -1746,14 +1745,14 @@ status_t CameraHardwareSec::setParameters(const CameraParameters& params) CameraParameters::FLASH_MODE_OFF); } else if (!strcmp(new_scene_mode_str, CameraParameters::SCENE_MODE_FIREWORKS)) { - new_scene_mode = SecCamera::SCENE_MODE_FIREWORKS; + new_scene_mode = SCENE_MODE_FIREWORKS; mInternalParameters.set("iso", "50"); mParameters.set(CameraParameters::KEY_FLASH_MODE, CameraParameters::FLASH_MODE_OFF); } else if (!strcmp(new_scene_mode_str, CameraParameters::SCENE_MODE_CANDLELIGHT)) { - new_scene_mode = SecCamera::SCENE_MODE_CANDLE_LIGHT; + new_scene_mode = SCENE_MODE_CANDLE_LIGHT; mParameters.set(CameraParameters::KEY_WHITE_BALANCE, CameraParameters::WHITE_BALANCE_DAYLIGHT); @@ -1780,25 +1779,25 @@ status_t CameraHardwareSec::setParameters(const CameraParameters& params) if (new_iso_str != NULL) { int new_iso = -1; if (!strcmp(new_iso_str, "auto")) - new_iso = SecCamera::ISO_AUTO; + new_iso = ISO_AUTO; else if (!strcmp(new_iso_str, "50")) - new_iso = SecCamera::ISO_50; + new_iso = ISO_50; else if (!strcmp(new_iso_str, "100")) - new_iso = SecCamera::ISO_100; + new_iso = ISO_100; else if (!strcmp(new_iso_str, "200")) - new_iso = SecCamera::ISO_200; + new_iso = ISO_200; else if (!strcmp(new_iso_str, "400")) - new_iso = SecCamera::ISO_400; + new_iso = ISO_400; else if (!strcmp(new_iso_str, "800")) - new_iso = SecCamera::ISO_800; + new_iso = ISO_800; else if (!strcmp(new_iso_str, "1600")) - new_iso = SecCamera::ISO_1600; + new_iso = ISO_1600; else if (!strcmp(new_iso_str, "sports")) - new_iso = SecCamera::ISO_SPORTS; + new_iso = ISO_SPORTS; else if (!strcmp(new_iso_str, "night")) - new_iso = SecCamera::ISO_NIGHT; + new_iso = ISO_NIGHT; else if (!strcmp(new_iso_str, "movie")) - new_iso = SecCamera::ISO_MOVIE; + new_iso = ISO_MOVIE; else { LOGE("%s::unmatched iso(%d)", __func__, new_iso); ret = UNKNOWN_ERROR; @@ -1816,11 +1815,11 @@ status_t CameraHardwareSec::setParameters(const CameraParameters& params) if (new_metering_str != NULL) { int new_metering = -1; if (!strcmp(new_metering_str, "matrix")) - new_metering = SecCamera::METERING_MATRIX; + new_metering = METERING_MATRIX; else if (!strcmp(new_metering_str, "center")) - new_metering = SecCamera::METERING_CENTER; + new_metering = METERING_CENTER; else if (!strcmp(new_metering_str, "spot")) - new_metering = SecCamera::METERING_SPOT; + new_metering = METERING_SPOT; else { LOGE("%s::unmatched metering(%s)", __func__, new_metering_str); ret = UNKNOWN_ERROR; @@ -1850,19 +1849,19 @@ status_t CameraHardwareSec::setParameters(const CameraParameters& params) int new_white = -1; if (!strcmp(new_white_str, CameraParameters::WHITE_BALANCE_AUTO)) - new_white = SecCamera::WHITE_BALANCE_AUTO; + new_white = WHITE_BALANCE_AUTO; else if (!strcmp(new_white_str, CameraParameters::WHITE_BALANCE_DAYLIGHT)) - new_white = SecCamera::WHITE_BALANCE_DAYLIGHT; + new_white = WHITE_BALANCE_SUNNY; else if (!strcmp(new_white_str, CameraParameters::WHITE_BALANCE_CLOUDY_DAYLIGHT)) - new_white = SecCamera::WHITE_BALANCE_CLOUDY; + new_white = WHITE_BALANCE_CLOUDY; else if (!strcmp(new_white_str, CameraParameters::WHITE_BALANCE_FLUORESCENT)) - new_white = SecCamera::WHITE_BALANCE_FLUORESCENT; + new_white = WHITE_BALANCE_FLUORESCENT; else if (!strcmp(new_white_str, CameraParameters::WHITE_BALANCE_INCANDESCENT)) - new_white = SecCamera::WHITE_BALANCE_INCANDESCENT; + new_white = WHITE_BALANCE_TUNGSTEN; else { LOGE("ERR(%s):Invalid white balance(%s)", __func__, new_white_str); //twilight, shade, warm_flourescent ret = UNKNOWN_ERROR; @@ -1899,19 +1898,19 @@ status_t CameraHardwareSec::setParameters(const CameraParameters& params) if (!strcmp(new_focus_mode_str, CameraParameters::FOCUS_MODE_AUTO)) { - new_focus_mode = SecCamera::FOCUS_MODE_AUTO; + new_focus_mode = FOCUS_MODE_AUTO; mParameters.set(CameraParameters::KEY_FOCUS_DISTANCES, BACK_CAMERA_AUTO_FOCUS_DISTANCES_STR); } else if (!strcmp(new_focus_mode_str, CameraParameters::FOCUS_MODE_MACRO)) { - new_focus_mode = SecCamera::FOCUS_MODE_MACRO; + new_focus_mode = FOCUS_MODE_MACRO; mParameters.set(CameraParameters::KEY_FOCUS_DISTANCES, BACK_CAMERA_MACRO_FOCUS_DISTANCES_STR); } else if (!strcmp(new_focus_mode_str, CameraParameters::FOCUS_MODE_INFINITY)) { - new_focus_mode = SecCamera::FOCUS_MODE_INFINITY; + new_focus_mode = FOCUS_MODE_INFINITY; mParameters.set(CameraParameters::KEY_FOCUS_DISTANCES, BACK_CAMERA_INFINITY_FOCUS_DISTANCES_STR); } @@ -1933,11 +1932,11 @@ status_t CameraHardwareSec::setParameters(const CameraParameters& params) int new_flash_mode = -1; if (!strcmp(new_flash_mode_str, CameraParameters::FLASH_MODE_OFF)) - new_flash_mode = SecCamera::FLASH_MODE_OFF; + new_flash_mode = FLASH_MODE_OFF; else if (!strcmp(new_flash_mode_str, CameraParameters::FLASH_MODE_AUTO)) - new_flash_mode = SecCamera::FLASH_MODE_AUTO; + new_flash_mode = FLASH_MODE_AUTO; else if (!strcmp(new_flash_mode_str, CameraParameters::FLASH_MODE_ON)) - new_flash_mode = SecCamera::FLASH_MODE_ON; + new_flash_mode = FLASH_MODE_ON; else { LOGE("%s::unmatched flash_mode(%s)", __func__, new_flash_mode_str); //red-eye ret = UNKNOWN_ERROR; @@ -1968,15 +1967,15 @@ status_t CameraHardwareSec::setParameters(const CameraParameters& params) int new_image_effect = -1; if (!strcmp(new_image_effect_str, CameraParameters::EFFECT_NONE)) - new_image_effect = SecCamera::IMAGE_EFFECT_NONE; + new_image_effect = IMAGE_EFFECT_NONE; else if (!strcmp(new_image_effect_str, CameraParameters::EFFECT_MONO)) - new_image_effect = SecCamera::IMAGE_EFFECT_BNW; + new_image_effect = IMAGE_EFFECT_BNW; else if (!strcmp(new_image_effect_str, CameraParameters::EFFECT_SEPIA)) - new_image_effect = SecCamera::IMAGE_EFFECT_SEPIA; + new_image_effect = IMAGE_EFFECT_SEPIA; else if (!strcmp(new_image_effect_str, CameraParameters::EFFECT_AQUA)) - new_image_effect = SecCamera::IMAGE_EFFECT_AQUA; + new_image_effect = IMAGE_EFFECT_AQUA; else if (!strcmp(new_image_effect_str, CameraParameters::EFFECT_NEGATIVE)) - new_image_effect = SecCamera::IMAGE_EFFECT_NEGATIVE; + new_image_effect = IMAGE_EFFECT_NEGATIVE; else { //posterize, whiteboard, blackboard, solarize LOGE("ERR(%s):Invalid effect(%s)", __func__, new_image_effect_str); @@ -1998,13 +1997,13 @@ status_t CameraHardwareSec::setParameters(const CameraParameters& params) int new_antibanding = -1; if (!strcmp(new_antibanding_str, CameraParameters::ANTIBANDING_AUTO)) - new_antibanding = SecCamera::ANTI_BANDING_AUTO; + new_antibanding = ANTI_BANDING_AUTO; else if (!strcmp(new_antibanding_str, CameraParameters::ANTIBANDING_50HZ)) - new_antibanding = SecCamera::ANTI_BANDING_50HZ; + new_antibanding = ANTI_BANDING_50HZ; else if (!strcmp(new_antibanding_str, CameraParameters::ANTIBANDING_60HZ)) - new_antibanding = SecCamera::ANTI_BANDING_60HZ; + new_antibanding = ANTI_BANDING_60HZ; else if (!strcmp(new_antibanding_str, CameraParameters::ANTIBANDING_OFF)) - new_antibanding = SecCamera::ANTI_BANDING_OFF; + new_antibanding = ANTI_BANDING_OFF; else { LOGE("%s::unmatched antibanding(%s)", __func__, new_antibanding_str); ret = UNKNOWN_ERROR; @@ -2102,9 +2101,9 @@ status_t CameraHardwareSec::setParameters(const CameraParameters& params) if (new_gamma_str != NULL) { int new_gamma = -1; if (!strcmp(new_gamma_str, "off")) - new_gamma = SecCamera::GAMMA_OFF; + new_gamma = GAMMA_OFF; else if (!strcmp(new_gamma_str, "on")) - new_gamma = SecCamera::GAMMA_ON; + new_gamma = GAMMA_ON; else { LOGE("%s::unmatched gamma(%s)", __func__, new_gamma_str); ret = UNKNOWN_ERROR; @@ -2125,9 +2124,9 @@ status_t CameraHardwareSec::setParameters(const CameraParameters& params) int new_slow_ae = -1; if (!strcmp(new_slow_ae_str, "off")) - new_slow_ae = SecCamera::SLOW_AE_OFF; + new_slow_ae = SLOW_AE_OFF; else if (!strcmp(new_slow_ae_str, "on")) - new_slow_ae = SecCamera::SLOW_AE_ON; + new_slow_ae = SLOW_AE_ON; else { LOGE("%s::unmatched slow_ae(%s)", __func__, new_slow_ae_str); ret = UNKNOWN_ERROR; |