From c9fd230fc3a626f7131fb8e1a5ad2a1f71660df7 Mon Sep 17 00:00:00 2001 From: Jeongmo Yang Date: Thu, 25 Mar 2021 20:12:21 +0900 Subject: [PATCH] Add new attributes for element name - 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 --- packaging/libmm-camcorder.spec | 2 +- src/include/mm_camcorder.h | 11 +++++ src/include/mm_camcorder_attribute.h | 2 + src/mm_camcorder_attribute.c | 35 ++++++++++----- src/mm_camcorder_internal.c | 82 ++++++++++++++++++++++++------------ src/mm_camcorder_stillshot.c | 19 --------- 6 files changed, 95 insertions(+), 56 deletions(-) diff --git a/packaging/libmm-camcorder.spec b/packaging/libmm-camcorder.spec index e43fd53..dedd179 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.230 +Version: 0.10.231 Release: 0 Group: Multimedia/Libraries License: Apache-2.0 diff --git a/src/include/mm_camcorder.h b/src/include/mm_camcorder.h index 0f625a4..0bebbaf 100644 --- a/src/include/mm_camcorder.h +++ b/src/include/mm_camcorder.h @@ -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 | diff --git a/src/include/mm_camcorder_attribute.h b/src/include/mm_camcorder_attribute.h index 953ff80..caef1ba 100644 --- a/src/include/mm_camcorder_attribute.h +++ b/src/include/mm_camcorder_attribute.h @@ -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; diff --git a/src/mm_camcorder_attribute.c b/src/mm_camcorder_attribute.c index c772f3d..2cc4e4d 100644 --- a/src/mm_camcorder_attribute.c +++ b/src/mm_camcorder_attribute.c @@ -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; diff --git a/src/mm_camcorder_internal.c b/src/mm_camcorder_internal.c index cd5d2b9..7742c4d 100644 --- a/src/mm_camcorder_internal.c +++ b/src/mm_camcorder_internal.c @@ -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"); diff --git a/src/mm_camcorder_stillshot.c b/src/mm_camcorder_stillshot.c index cdd2b1a..a7853d1 100644 --- a/src/mm_camcorder_stillshot.c +++ b/src/mm_camcorder_stillshot.c @@ -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, ¤t_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; -- 2.7.4