From: Jeongmo Yang Date: Tue, 2 Feb 2021 08:08:43 +0000 (+0900) Subject: Add new attribute for strobe brightness X-Git-Tag: submit/tizen/20210204.050939^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b575f6e3fd4bd05db866b2a126065a0698417cd3;p=platform%2Fcore%2Fmultimedia%2Flibmm-camcorder.git Add new attribute for strobe brightness [Version] 0.10.228 [Issue Type] New feature Change-Id: I29fdbe03708191c80b8ee8099d41637d0bdd870d Signed-off-by: Jeongmo Yang --- diff --git a/packaging/libmm-camcorder.spec b/packaging/libmm-camcorder.spec index a701e7a..cf80bc8 100755 --- a/packaging/libmm-camcorder.spec +++ b/packaging/libmm-camcorder.spec @@ -1,6 +1,6 @@ Name: libmm-camcorder Summary: Camera and recorder library -Version: 0.10.227 +Version: 0.10.228 Release: 0 Group: Multimedia/Libraries License: Apache-2.0 diff --git a/src/include/mm_camcorder.h b/src/include/mm_camcorder.h index 388f2f7..fb90c14 100644 --- a/src/include/mm_camcorder.h +++ b/src/include/mm_camcorder.h @@ -1156,6 +1156,11 @@ extern "C" { */ #define MMCAM_STROBE_MODE "strobe-mode" +/** + * Brightness of strobe + */ +#define MMCAM_STROBE_BRIGHTNESS "strobe-brightness" + /** * Detection mode * @see MMCamcorderDetectMode diff --git a/src/include/mm_camcorder_attribute.h b/src/include/mm_camcorder_attribute.h index 7ea258d..b4c1b77 100644 --- a/src/include/mm_camcorder_attribute.h +++ b/src/include/mm_camcorder_attribute.h @@ -192,6 +192,7 @@ typedef enum { MM_CAM_USER_BUFFER_FD, MM_CAM_PLATFORM_PRIVILEGE_CAMERA, MM_CAM_LOG_LEVEL, + MM_CAM_STROBE_BRIGHTNESS, MM_CAM_ATTRIBUTE_NUM } MMCamcorderAttrsID; diff --git a/src/include/mm_camcorder_platform.h b/src/include/mm_camcorder_platform.h index f1f2954..88c9e82 100644 --- a/src/include/mm_camcorder_platform.h +++ b/src/include/mm_camcorder_platform.h @@ -144,7 +144,7 @@ extern "C" { #define _MMCAMCORDER_SENSOR_ENUM_NONE -255 /* camera information related */ -#define CAMINFO_CONVERT_NUM 45 +#define CAMINFO_CONVERT_NUM 46 /*======================================================================================= diff --git a/src/include/mm_camcorder_util.h b/src/include/mm_camcorder_util.h index 655ce9a..0ade9f9 100644 --- a/src/include/mm_camcorder_util.h +++ b/src/include/mm_camcorder_util.h @@ -336,7 +336,7 @@ int _mmcamcorder_get_file_system_type(const gchar *path, int *file_system_type); void *_mmcamcorder_util_task_thread_func(void *data); /* device */ -int _mmcamcorder_get_device_flash_brightness(GDBusConnection *conn, int *brightness); +int _mmcamcorder_get_device_led_brightness(GDBusConnection *conn, int *brightness); /* sound play via dbus*/ int _mmcamcorder_send_sound_play_message(GDBusConnection *conn, _MMCamcorderGDbusCbInfo *gdbus_info, diff --git a/src/mm_camcorder_attribute.c b/src/mm_camcorder_attribute.c index faff126..81b6ab2 100644 --- a/src/mm_camcorder_attribute.c +++ b/src/mm_camcorder_attribute.c @@ -1655,6 +1655,17 @@ _mmcamcorder_alloc_attribute(MMHandleType handle) {.int_min = MM_CAMCORDER_LOG_LEVEL_CRITICAL}, {.int_max = MM_CAMCORDER_LOG_LEVEL_VERBOSE}, NULL, + }, + { + MM_CAM_STROBE_BRIGHTNESS, + "strobe-brightness", + MM_ATTRS_TYPE_INT, + MM_ATTRS_FLAG_RW, + {(void*)1}, + MM_ATTRS_VALID_TYPE_INT_RANGE, + {.int_min = 0}, + {.int_max = -1}, + _mmcamcorder_commit_strobe, } }; @@ -4263,7 +4274,6 @@ bool _mmcamcorder_commit_display_evas_do_scaling(MMHandleType handle, int attr_i bool _mmcamcorder_commit_strobe(MMHandleType handle, int attr_idx, const MMAttrsValue *value) { - bool bret = FALSE; _MMCamcorderSubContext *sc = NULL; mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(handle); int strobe_type, mslVal, newVal, cur_value; @@ -4281,26 +4291,25 @@ bool _mmcamcorder_commit_strobe(MMHandleType handle, int attr_idx, const MMAttrs /* check flash state */ if (attr_idx == MM_CAM_STROBE_MODE) { - int flash_brightness = 0; + int led_brightness = 0; - /* get current flash brightness */ - if (_mmcamcorder_get_device_flash_brightness(hcamcorder->gdbus_conn, &flash_brightness) != MM_ERROR_NONE) { - MMCAM_LOG_ERROR("_mmcamcorder_get_device_flash_brightness failed"); + if (_mmcamcorder_get_device_led_brightness(hcamcorder->gdbus_conn, &led_brightness) != MM_ERROR_NONE) { + MMCAM_LOG_ERROR("_mmcamcorder_get_device_led_brightness failed"); hcamcorder->error_code = MM_ERROR_COMMON_INVALID_PERMISSION; return FALSE; } - MMCAM_LOG_INFO("flash brightness %d", flash_brightness); + MMCAM_LOG_INFO("LED brightness[%d] from deviced", led_brightness); - if (flash_brightness > 0 && + if (led_brightness > 0 && mslVal != MM_CAMCORDER_STROBE_MODE_OFF) { - /* other module already turned on flash */ + /* other module already turned on LED */ hcamcorder->error_code = MM_ERROR_CAMCORDER_DEVICE_BUSY; - MMCAM_LOG_ERROR("other module already turned on flash. avoid to set flash mode here."); + MMCAM_LOG_ERROR("other module already turned on LED. avoid to set strobe mode here."); return FALSE; - } else { - MMCAM_LOG_INFO("keep going"); } + + MMCAM_LOG_INFO("keep going"); } /* check state */ @@ -4333,42 +4342,45 @@ bool _mmcamcorder_commit_strobe(MMHandleType handle, int attr_idx, const MMAttrs strobe_type = GST_CAMERA_CONTROL_STROBE_MODE; newVal = _mmcamcorder_convert_msl_to_sensor(handle, MM_CAM_STROBE_MODE, mslVal); break; + case MM_CAM_STROBE_BRIGHTNESS: + strobe_type = GST_CAMERA_CONTROL_STROBE_BRIGHTNESS; + newVal = mslVal; + break; default: - MMCAM_LOG_ERROR("Commit : strobe attribute(attr_idx(%d) is out of range)", attr_idx); + MMCAM_LOG_ERROR("invalid attribute[%d]", attr_idx); return FALSE; } GstCameraControl *control = NULL; if (!GST_IS_CAMERA_CONTROL(sc->element[_MMCAMCORDER_VIDEOSRC_SRC].gst)) { MMCAM_LOG_ERROR("Can't cast Video source into camera control."); - bret = FALSE; - } else { - control = GST_CAMERA_CONTROL(sc->element[_MMCAMCORDER_VIDEOSRC_SRC].gst); - if (control == NULL) { - MMCAM_LOG_ERROR("cast CAMERA_CONTROL failed"); - return FALSE; - } + return FALSE; + } - if (gst_camera_control_get_strobe(control, strobe_type, &cur_value)) { - if (newVal != cur_value) { - if (gst_camera_control_set_strobe(control, strobe_type, newVal)) { - MMCAM_LOG_INFO("Succeed in setting strobe. Type[%d],value[%d]", strobe_type, mslVal); - bret = TRUE; - } else { - MMCAM_LOG_WARNING("Set strobe failed. Type[%d],value[%d]", strobe_type, mslVal); - bret = FALSE; - } - } else { - MMCAM_LOG_INFO("No need to set strobe. Type[%d],value[%d]", strobe_type, mslVal); - bret = TRUE; - } - } else { - MMCAM_LOG_WARNING("Failed to get strobe. Type[%d]", strobe_type); - bret = FALSE; - } + control = GST_CAMERA_CONTROL(sc->element[_MMCAMCORDER_VIDEOSRC_SRC].gst); + if (control == NULL) { + MMCAM_LOG_ERROR("cast CAMERA_CONTROL failed"); + return FALSE; } - return bret; + if (!gst_camera_control_get_strobe(control, strobe_type, &cur_value)) { + MMCAM_LOG_WARNING("Failed to get strobe. Type[%d]", strobe_type); + return FALSE; + } + + if (newVal == cur_value) { + MMCAM_LOG_INFO("No need to set strobe. Type[%d],value[%d]", strobe_type, mslVal); + return TRUE; + } + + if (!gst_camera_control_set_strobe(control, strobe_type, newVal)) { + MMCAM_LOG_WARNING("Set strobe failed. Type[%d],value[%d]", strobe_type, mslVal); + return FALSE; + } + + MMCAM_LOG_INFO("Succeed in setting strobe. Type[%d],value[%d]", strobe_type, mslVal); + + return TRUE; } @@ -4737,7 +4749,8 @@ bool _mmcamcorder_set_attribute_to_camsensor(MMHandleType handle) MM_CAM_CAMERA_WDR, MM_CAM_FILTER_CONTRAST, MM_CAM_FILTER_HUE, - MM_CAM_DETECT_MODE + MM_CAM_DETECT_MODE, + MM_CAM_STROBE_BRIGHTNESS }; int attr_idxs_extra[] = { diff --git a/src/mm_camcorder_configure.c b/src/mm_camcorder_configure.c index 0556d76..7580875 100644 --- a/src/mm_camcorder_configure.c +++ b/src/mm_camcorder_configure.c @@ -797,6 +797,7 @@ int _mmcamcorder_conf_init(MMHandleType handle, int type, camera_conf *configure { "StrobeControl", CONFIGURE_VALUE_INT_ARRAY, {NULL} }, { "StrobeMode", CONFIGURE_VALUE_INT_ARRAY, {NULL} }, { "StrobeEV", CONFIGURE_VALUE_INT_RANGE, {NULL} }, + { "StrobeBrightness", CONFIGURE_VALUE_INT_RANGE, {NULL} }, }; /* [Effect] matching table */ diff --git a/src/mm_camcorder_platform.c b/src/mm_camcorder_platform.c index 0533d0a..3a82f40 100644 --- a/src/mm_camcorder_platform.c +++ b/src/mm_camcorder_platform.c @@ -652,6 +652,15 @@ static _MMCamcorderInfoConverting g_caminfo_convert[CAMINFO_CONVERT_NUM] = { "VideoResolution", MM_CAMCONVERT_TYPE_INT_PAIR_ARRAY, NULL, + }, + { + CONFIGURE_TYPE_CTRL, + CONFIGURE_CATEGORY_CTRL_STROBE, + MM_CAM_STROBE_BRIGHTNESS, + MM_CAMCORDER_ATTR_NONE, + "StrobeBrightness", + MM_CAMCONVERT_TYPE_INT_RANGE, + NULL, } }; diff --git a/src/mm_camcorder_util.c b/src/mm_camcorder_util.c index 3114bc0..a3d6738 100644 --- a/src/mm_camcorder_util.c +++ b/src/mm_camcorder_util.c @@ -874,7 +874,7 @@ int _mmcamcorder_get_file_system_type(const gchar *path, int *file_system_type) } -int _mmcamcorder_get_device_flash_brightness(GDBusConnection *conn, int *brightness) +int _mmcamcorder_get_device_led_brightness(GDBusConnection *conn, int *brightness) { int get_value = 0; int ret = MM_ERROR_NONE;