Add new attributes for element name 56/255956/3 accepted/tizen/unified/20210329.144939 submit/tizen/20210326.080631
authorJeongmo Yang <jm80.yang@samsung.com>
Thu, 25 Mar 2021 11:12:21 +0000 (20:12 +0900)
committerJeongmo Yang <jm80.yang@samsung.com>
Thu, 25 Mar 2021 11:39:35 +0000 (20:39 +0900)
- MMCAM_VIDEOSRC_ELEMENT_NAME for VideosrcElement
- MMCAM_AUDIOSRC_ELEMENT_NAME for AudiosrcElement
- Additional minor change : Remove unnecessary code

[Version] 0.10.231
[Issue Type] New attribute

Change-Id: Id01a5509c10fc5530688d5eaeecc127bd5322976
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/mm_camcorder_attribute.c
src/mm_camcorder_internal.c
src/mm_camcorder_stillshot.c

index e43fd53..dedd179 100755 (executable)
@@ -1,6 +1,6 @@
 Name:       libmm-camcorder
 Summary:    Camera and recorder library
-Version:    0.10.230
+Version:    0.10.231
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0
index 0f625a4..0bebbaf 100644 (file)
@@ -1329,6 +1329,17 @@ extern "C" {
  */
 #define MMCAM_PLATFORM_PRIVILEGE_CAMERA         "platform-privilege-camera"
 
+/**
+ * The name of videosrc element
+ */
+#define MMCAM_VIDEOSRC_ELEMENT_NAME             "videosrc-element-name"
+
+/**
+ * The name of audiosrc element
+ */
+#define MMCAM_AUDIOSRC_ELEMENT_NAME             "audiosrc-element-name"
+
+
 
 /*=======================================================================================
 | ENUM DEFINITIONS                                                                     |
index 953ff80..caef1ba 100644 (file)
@@ -192,6 +192,8 @@ typedef enum {
        MM_CAM_USER_BUFFER_FD,
        MM_CAM_PLATFORM_PRIVILEGE_CAMERA,
        MM_CAM_STROBE_BRIGHTNESS,
+       MM_CAM_VIDEOSRC_ELEMENT_NAME,
+       MM_CAM_AUDIOSRC_ELEMENT_NAME,
        MM_CAM_ATTRIBUTE_NUM
 } MMCamcorderAttrsID;
 
index c772f3d..2cc4e4d 100644 (file)
@@ -63,7 +63,9 @@ static int readonly_attributes[] = {
        MM_CAM_SUPPORT_ZSL_CAPTURE,
        MM_CAM_SUPPORT_ZERO_COPY_FORMAT,
        MM_CAM_SUPPORT_MEDIA_PACKET_PREVIEW_CB,
-       MM_CAM_PLATFORM_PRIVILEGE_CAMERA
+       MM_CAM_PLATFORM_PRIVILEGE_CAMERA,
+       MM_CAM_VIDEOSRC_ELEMENT_NAME,
+       MM_CAM_AUDIOSRC_ELEMENT_NAME
 };
 
 /*-----------------------------------------------------------------------
@@ -1654,6 +1656,28 @@ _mmcamcorder_alloc_attribute(MMHandleType handle)
                        {.int_min = 0},
                        {.int_max = -1},
                        _mmcamcorder_commit_strobe,
+               },
+               {
+                       MM_CAM_VIDEOSRC_ELEMENT_NAME,
+                       "videosrc-element-name",
+                       MM_ATTRS_TYPE_STRING,
+                       MM_ATTRS_FLAG_RW,
+                       {NULL},
+                       MM_ATTRS_VALID_TYPE_NONE,
+                       {0},
+                       {0},
+                       NULL,
+               },
+               {
+                       MM_CAM_AUDIOSRC_ELEMENT_NAME,
+                       "audiosrc-element-name",
+                       MM_ATTRS_TYPE_STRING,
+                       MM_ATTRS_FLAG_RW,
+                       {NULL},
+                       MM_ATTRS_VALID_TYPE_NONE,
+                       {0},
+                       {0},
+                       NULL,
                }
        };
 
@@ -2091,24 +2115,15 @@ bool _mmcamcorder_commit_capture_break_cont_shot(MMHandleType handle, int attr_i
 {
        int current_state = 0;
        int ivalue = 0;
-       const char *videosrc_name = NULL;
-       mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(handle);
        _MMCamcorderSubContext *sc = NULL;
        _MMCamcorderImageInfo *info = NULL;
        GstCameraControl *control = NULL;
-       type_element *VideosrcElement = NULL;
 
        mmf_return_val_if_fail(handle && value, FALSE);
 
        current_state = _mmcamcorder_get_state(handle);
        ivalue = value->value.i_val;
 
-       _mmcamcorder_conf_get_element(handle, hcamcorder->conf_main,
-               CONFIGURE_CATEGORY_MAIN_VIDEO_INPUT,
-               "VideosrcElement",
-               &VideosrcElement);
-       _mmcamcorder_conf_get_value_element_name(VideosrcElement, &videosrc_name);
-
        sc = MMF_CAMCORDER_SUBCONTEXT(handle);
        if (!sc)
                return TRUE;
index cd5d2b9..7742c4d 100644 (file)
@@ -72,6 +72,7 @@ static gint     __mmcamcorder_init_handle(mmf_camcorder_t **hcamcorder, int devi
 static void     __mmcamcorder_deinit_handle(mmf_camcorder_t *hcamcorder);
 static gint     __mmcamcorder_init_configure_video_capture(mmf_camcorder_t *hcamcorder);
 static gint     __mmcamcorder_init_configure_audio(mmf_camcorder_t *hcamcorder);
+static gint     __mmcamcorder_init_configure_common(mmf_camcorder_t *hcamcorder);
 static void     __mmcamcorder_deinit_configure(mmf_camcorder_t *hcamcorder);
 static gboolean __mmcamcorder_init_gstreamer(camera_conf *conf);
 static void     __mmcamcorder_get_system_info(mmf_camcorder_t *hcamcorder);
@@ -326,7 +327,6 @@ static gint __mmcamcorder_init_configure_video_capture(mmf_camcorder_t *hcamcord
        int rcmd_fmt_recording = MM_PIXEL_FORMAT_NV12;
        int rcmd_dpy_rotation = MM_DISPLAY_ROTATION_270;
        int play_capture_sound = TRUE;
-       int camera_device_count = MM_VIDEO_DEVICE_NUM;
        int camera_default_flip = MM_FLIP_NONE;
        int camera_facing_direction = MM_CAMCORDER_CAMERA_FACING_DIRECTION_REAR;
        char *err_attr_name = NULL;
@@ -419,11 +419,6 @@ static gint __mmcamcorder_init_configure_video_capture(mmf_camcorder_t *hcamcord
                "PlayCaptureSound",
                &play_capture_sound);
 
-       _mmcamcorder_conf_get_value_int((MMHandleType)hcamcorder, hcamcorder->conf_main,
-               CONFIGURE_CATEGORY_MAIN_VIDEO_INPUT,
-               "DeviceCount",
-               &camera_device_count);
-
        _mmcamcorder_conf_get_value_int((MMHandleType)hcamcorder, hcamcorder->conf_ctrl,
                CONFIGURE_CATEGORY_CTRL_CAMERA,
                "FacingDirection",
@@ -439,9 +434,9 @@ static gint __mmcamcorder_init_configure_video_capture(mmf_camcorder_t *hcamcord
                "SupportZSL",
                &hcamcorder->support_zsl_capture);
 
-       MMCAM_LOG_INFO("Recommend fmt[cap:%d,rec:%d], dpy rot %d, cap snd %d, dev cnt %d, cam facing dir %d, step denom %d, support zsl %d",
+       MMCAM_LOG_INFO("Recommend fmt[cap:%d,rec:%d], dpy rot %d, cap snd %d, cam facing dir %d, step denom %d, support zsl %d",
                rcmd_fmt_capture, rcmd_fmt_recording, rcmd_dpy_rotation,
-               play_capture_sound, camera_device_count, camera_facing_direction,
+               play_capture_sound, camera_facing_direction,
                hcamcorder->brightness_step_denominator, hcamcorder->support_zsl_capture);
 
        _mmcamcorder_conf_get_value_int((MMHandleType)hcamcorder, hcamcorder->conf_main,
@@ -510,7 +505,6 @@ static gint __mmcamcorder_init_configure_video_capture(mmf_camcorder_t *hcamcord
        }
 
        ret = mm_camcorder_set_attributes((MMHandleType)hcamcorder, &err_attr_name,
-               MMCAM_CAMERA_DEVICE_COUNT, camera_device_count,
                MMCAM_CAMERA_FACING_DIRECTION, camera_facing_direction,
                MMCAM_RECOMMEND_PREVIEW_FORMAT_FOR_CAPTURE, rcmd_fmt_capture,
                MMCAM_RECOMMEND_PREVIEW_FORMAT_FOR_RECORDING, rcmd_fmt_recording,
@@ -549,31 +543,65 @@ static gint __mmcamcorder_init_configure_video_capture(mmf_camcorder_t *hcamcord
 static gint __mmcamcorder_init_configure_audio(mmf_camcorder_t *hcamcorder)
 {
        int ret = MM_ERROR_NONE;
-       int camera_device_count = 0;
 
        if (!hcamcorder) {
                MMCAM_LOG_ERROR("NULL handle");
                return MM_ERROR_CAMCORDER_NOT_INITIALIZED;
        }
 
+       ret = _mmcamcorder_init_attr_from_configure((MMHandleType)hcamcorder, MM_CAMCONVERT_CATEGORY_AUDIO);
+       if (ret != MM_ERROR_NONE) {
+               MMCAM_LOG_ERROR("there is no audio device");
+               return MM_ERROR_CAMCORDER_NOT_SUPPORTED;
+       }
+
+       return ret;
+}
+
+
+static gint __mmcamcorder_init_configure_common(mmf_camcorder_t *hcamcorder)
+{
+       int ret = MM_ERROR_NONE;
+       int device_count = 0;
+       const char *videosrc_name = NULL;
+       const char *audiosrc_name = NULL;
+       type_element *SrcElement = NULL;
+
+       if (!hcamcorder) {
+               MMCAM_LOG_ERROR("NULL handle");
+               return MM_ERROR_CAMCORDER_NOT_INITIALIZED;
+       }
+
+       /* Device count */
        _mmcamcorder_conf_get_value_int((MMHandleType)hcamcorder, hcamcorder->conf_main,
                CONFIGURE_CATEGORY_MAIN_VIDEO_INPUT,
                "DeviceCount",
-               &camera_device_count);
+               &device_count);
+
+       /* Videosrc element name */
+       _mmcamcorder_conf_get_element((MMHandleType)hcamcorder, hcamcorder->conf_main,
+               CONFIGURE_CATEGORY_MAIN_VIDEO_INPUT,
+               "VideosrcElement",
+               &SrcElement);
+       _mmcamcorder_conf_get_value_element_name(SrcElement, &videosrc_name);
+
+       /* Audiosrc element name */
+       _mmcamcorder_conf_get_element((MMHandleType)hcamcorder, hcamcorder->conf_main,
+               CONFIGURE_CATEGORY_MAIN_AUDIO_INPUT,
+               "AudiosrcElement",
+               &SrcElement);
+       _mmcamcorder_conf_get_value_element_name(SrcElement, &audiosrc_name);
+
+       MMCAM_LOG_INFO("Device count[%d], Videosrc[%s], Audiosrc[%s]",
+               device_count, videosrc_name, audiosrc_name);
 
        ret = mm_camcorder_set_attributes((MMHandleType)hcamcorder, NULL,
-               MMCAM_CAMERA_DEVICE_COUNT, camera_device_count,
+               MMCAM_CAMERA_DEVICE_COUNT, device_count,
+               MMCAM_VIDEOSRC_ELEMENT_NAME, videosrc_name, videosrc_name ? strlen(videosrc_name) : 0,
+               MMCAM_AUDIOSRC_ELEMENT_NAME, audiosrc_name, audiosrc_name ? strlen(audiosrc_name) : 0,
                NULL);
-       if (ret != MM_ERROR_NONE) {
-               MMCAM_LOG_ERROR("Set device count FAILED");
-               return MM_ERROR_CAMCORDER_INTERNAL;
-       }
-
-       ret = _mmcamcorder_init_attr_from_configure((MMHandleType)hcamcorder, MM_CAMCONVERT_CATEGORY_AUDIO);
-       if (ret != MM_ERROR_NONE) {
-               MMCAM_LOG_ERROR("there is no audio device");
-               return MM_ERROR_CAMCORDER_NOT_SUPPORTED;
-       }
+       if (ret != MM_ERROR_NONE)
+               MMCAM_LOG_ERROR("Set FAILED[0x%x]", ret);
 
        return ret;
 }
@@ -629,11 +657,14 @@ int _mmcamcorder_create(MMHandleType *handle, MMCamPreset *info)
 
        MMCAM_LOG_WARNING("DPM handle %p", hcamcorder->dpm_handle);
 
+       ret = __mmcamcorder_init_configure_common(hcamcorder);
+       if (ret != MM_ERROR_NONE)
+               goto _ERR_DEFAULT_VALUE_INIT;
+
        if (hcamcorder->device_type != MM_VIDEO_DEVICE_NONE) {
                ret = __mmcamcorder_init_configure_video_capture(hcamcorder);
-               if (ret != MM_ERROR_NONE) {
+               if (ret != MM_ERROR_NONE)
                        goto _ERR_DEFAULT_VALUE_INIT;
-               }
 
                /* add DPM camera policy changed callback */
                if (hcamcorder->dpm_handle) {
@@ -660,9 +691,8 @@ int _mmcamcorder_create(MMHandleType *handle, MMCamPreset *info)
 #endif /* _MMCAMCORDER_MM_RM_SUPPORT */
        } else {
                ret = __mmcamcorder_init_configure_audio(hcamcorder);
-               if (ret != MM_ERROR_NONE) {
+               if (ret != MM_ERROR_NONE)
                        goto _ERR_DEFAULT_VALUE_INIT;
-               }
        }
 
        traceBegin(TTRACE_TAG_CAMERA, "MMCAMCORDER:CREATE:INIT_GSTREAMER");
index cdd2b1a..a7853d1 100644 (file)
@@ -303,16 +303,13 @@ int _mmcamcorder_image_cmd_capture(MMHandleType handle)
        int is_modified_size = FALSE;
        int tag_orientation = 0;
        unsigned int cap_fourcc = 0;
-
        char *err_name = NULL;
-       const char *videosrc_name = NULL;
 
        GstCameraControl *control = NULL;
 
        mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(handle);
        _MMCamcorderImageInfo *info = NULL;
        _MMCamcorderSubContext *sc = NULL;
-       type_element *VideosrcElement = NULL;
        MMCamcorderStateType current_state = MM_CAMCORDER_STATE_NONE;
 
        mmf_return_val_if_fail(hcamcorder, MM_ERROR_CAMCORDER_NOT_INITIALIZED);
@@ -334,13 +331,6 @@ int _mmcamcorder_image_cmd_capture(MMHandleType handle)
                "UseCaptureMode",
                &UseCaptureMode);
 
-       _mmcamcorder_conf_get_element(handle, hcamcorder->conf_main,
-               CONFIGURE_CATEGORY_MAIN_VIDEO_INPUT,
-               "VideosrcElement",
-               &VideosrcElement);
-
-       _mmcamcorder_conf_get_value_element_name(VideosrcElement, &videosrc_name);
-
        /* get current state */
        mm_camcorder_get_state(handle, &current_state);
 
@@ -637,7 +627,6 @@ int _mmcamcorder_image_cmd_preview_start(MMHandleType handle)
        int current_state = MM_CAMCORDER_STATE_NONE;
        gboolean fps_auto = FALSE;
        char *err_name = NULL;
-       const char *videosrc_name = NULL;
 
        GstState state;
        GstElement *pipeline = NULL;
@@ -646,7 +635,6 @@ int _mmcamcorder_image_cmd_preview_start(MMHandleType handle)
        mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(handle);
        _MMCamcorderImageInfo *info = NULL;
        _MMCamcorderSubContext *sc = NULL;
-       type_element *VideosrcElement = NULL;
 
        mmf_return_val_if_fail(hcamcorder, MM_ERROR_CAMCORDER_NOT_INITIALIZED);
 
@@ -658,13 +646,6 @@ int _mmcamcorder_image_cmd_preview_start(MMHandleType handle)
        pipeline = sc->element[_MMCAMCORDER_MAIN_PIPE].gst;
        info = sc->info_image;
 
-       _mmcamcorder_conf_get_element(handle, hcamcorder->conf_main,
-               CONFIGURE_CATEGORY_MAIN_VIDEO_INPUT,
-               "VideosrcElement",
-               &VideosrcElement);
-
-       _mmcamcorder_conf_get_value_element_name(VideosrcElement, &videosrc_name);
-
        sc->display_interval = 0;
        sc->previous_slot_time = 0;