Add new attribute for strobe brightness 83/252783/6 accepted/tizen/unified/20210208.061747 submit/tizen/20210204.050939
authorJeongmo Yang <jm80.yang@samsung.com>
Tue, 2 Feb 2021 08:08:43 +0000 (17:08 +0900)
committerJeongmo Yang <jm80.yang@samsung.com>
Wed, 3 Feb 2021 09:25:50 +0000 (18:25 +0900)
[Version] 0.10.228
[Issue Type] New feature

Change-Id: I29fdbe03708191c80b8ee8099d41637d0bdd870d
Signed-off-by: Jeongmo Yang <jm80.yang@samsung.com>
packaging/libmm-camcorder.spec
src/include/mm_camcorder.h
src/include/mm_camcorder_attribute.h
src/include/mm_camcorder_platform.h
src/include/mm_camcorder_util.h
src/mm_camcorder_attribute.c
src/mm_camcorder_configure.c
src/mm_camcorder_platform.c
src/mm_camcorder_util.c

index a701e7a221dbb535838eb6b9ac9a8a5348e61d73..cf80bc8146da9e41c56b735282fa584ed412d00c 100755 (executable)
@@ -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
index 388f2f7581ebf67ed9cd25a9d5730a9337855e59..fb90c148c040ee408763db12b085382e8afc1941 100644 (file)
@@ -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
index 7ea258d6b6256385d39ed3dbd2243688c10bf9f4..b4c1b7773a4c92686e715f97ca3586e41afabd52 100644 (file)
@@ -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;
 
index f1f2954a8821241e1a6a7ea60ce64860d08b05b7..88c9e8278333ec7380ee2b25b701e08082eaf2d0 100644 (file)
@@ -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
 
 
 /*=======================================================================================
index 655ce9a83d078898321cfa8e1238d48c99343dc9..0ade9f937e9d128f693cf2b827791c859219dda9 100644 (file)
@@ -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,
index faff1266971864515e68b0f0d41e588acbf825f4..81b6ab27a667d2fac474f83db8cc9fe78a30f654 100644 (file)
@@ -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[] = {
index 0556d76848309feafcbcc08ce5149a8d778c6e03..7580875ddf68eeeb7f5f6fb8c2312dc7d9b086b9 100644 (file)
@@ -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 */
index 0533d0a5fd2d1160e009b093672b4321b788a38c..3a82f40af24d855f37b5371ccc737fba9d54cfcb 100644 (file)
@@ -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,
        }
 };
 
index 3114bc0bdc657b67464565d4951501c03d61c640..a3d6738876b0f62b2cc8ba40ed6c14d0743de4d5 100644 (file)
@@ -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;