From f0ed1a1f30501b3e0586a32e95163ee788a37147 Mon Sep 17 00:00:00 2001 From: Jeongmo Yang Date: Wed, 15 Sep 2021 17:14:03 +0900 Subject: [PATCH] Add new field to mmfw_camcorder.ini for default encoded preview bitrate - Field name : "DefaultEncodedPreviewBitrate" in [VideoInput] category. - Minor change : Change default encoded preview bitrate from 10M to 4M. : Remove duplicated set for bitrate and GOP interval. : Remove preview format restriction in commit function for MMCAM_ENCODED_PREVIEW_BITRATE attribute. [Version] 0.10.247 [Issue Type] New feature Change-Id: I8f87f9872685997d24dbe6009e8b865019d8c71f Signed-off-by: Jeongmo Yang --- packaging/libmm-camcorder.spec | 2 +- src/include/mm_camcorder_internal.h | 1 + src/mm_camcorder_attribute.c | 11 +---------- src/mm_camcorder_configure.c | 20 +++++++++++--------- src/mm_camcorder_gstcommon.c | 19 ------------------- src/mm_camcorder_internal.c | 11 +++++++++-- src/mm_camcorder_stillshot.c | 12 ++++-------- 7 files changed, 27 insertions(+), 49 deletions(-) diff --git a/packaging/libmm-camcorder.spec b/packaging/libmm-camcorder.spec index 87c0f61..d1d7efc 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.246 +Version: 0.10.247 Release: 0 Group: Multimedia/Libraries License: Apache-2.0 diff --git a/src/include/mm_camcorder_internal.h b/src/include/mm_camcorder_internal.h index 9fc3273..b875239 100644 --- a/src/include/mm_camcorder_internal.h +++ b/src/include/mm_camcorder_internal.h @@ -806,6 +806,7 @@ typedef struct mmf_camcorder { int recreate_decoder; /**< Flag of decoder element recreation for encoded preview format */ gboolean is_network; /**< Flag for network camera */ const char *network_hal_name; /**< Name of network camera HAL library */ + int default_encoded_preview_bitrate; /**< Default bitrate for encoded preview */ _MMCamcorderInfoConverting caminfo_convert[CAMINFO_CONVERT_NUM]; /**< converting structure of camera info */ _MMCamcorderEnumConvert enum_conv[ENUM_CONVERT_NUM]; /**< enum converting list that is modified by ini info */ diff --git a/src/mm_camcorder_attribute.c b/src/mm_camcorder_attribute.c index 320faf1..8bfda03 100644 --- a/src/mm_camcorder_attribute.c +++ b/src/mm_camcorder_attribute.c @@ -34,7 +34,6 @@ -----------------------------------------------------------------------*/ #define MMCAMCORDER_DEFAULT_CAMERA_WIDTH 640 #define MMCAMCORDER_DEFAULT_CAMERA_HEIGHT 480 -#define MMCAMCORDER_DEFAULT_ENCODED_PREVIEW_BITRATE (1024*1024*10) #define MMCAMCORDER_DEFAULT_ENCODED_PREVIEW_GOP_INTERVAL 1000 #define MMCAMCORDER_DEFAULT_REPLAY_GAIN_REFERENCE_LEVEL 89.0 @@ -1474,7 +1473,7 @@ _mmcamcorder_alloc_attribute(MMHandleType handle) "encoded-preview-bitrate", MM_ATTRS_TYPE_INT, MM_ATTRS_FLAG_RW, - {(void*)MMCAMCORDER_DEFAULT_ENCODED_PREVIEW_BITRATE}, + {(void*)0}, MM_ATTRS_VALID_TYPE_INT_RANGE, {.int_min = 0}, {.int_max = _MMCAMCORDER_MAX_INT}, @@ -4647,19 +4646,11 @@ bool _mmcamcorder_commit_detect(MMHandleType handle, int attr_idx, const MMAttrs bool _mmcamcorder_commit_encoded_preview_bitrate(MMHandleType handle, int attr_idx, const MMAttrsValue *value) { int current_state = MM_CAMCORDER_STATE_NONE; - int preview_format = MM_PIXEL_FORMAT_NV12; mmf_return_val_if_fail(handle && value, FALSE); MMCAM_LOG_INFO("Commit : encoded preview bitrate - %d", value->value.i_val); - /* check preview format */ - mm_camcorder_get_attributes(handle, NULL, MMCAM_CAMERA_FORMAT, &preview_format, NULL); - if (!_mmcamcorder_is_encoded_preview_pixel_format(preview_format)) { - MMCAM_LOG_ERROR("current preview format[%d] is not encoded format", preview_format); - return FALSE; - } - /* check state */ current_state = _mmcamcorder_get_state(handle); if (current_state < MM_CAMCORDER_STATE_READY) { diff --git a/src/mm_camcorder_configure.c b/src/mm_camcorder_configure.c index ab14db8..ab1472b 100644 --- a/src/mm_camcorder_configure.c +++ b/src/mm_camcorder_configure.c @@ -42,6 +42,7 @@ | LOCAL VARIABLE DEFINITIONS | -----------------------------------------------------------------------*/ #define DEFAULT_AUDIO_BUFFER_INTERVAL 50 +#define DEFAULT_ENCODED_PREVIEW_BITRATE (1024*1024*4) #define MMCAMCORDER_CONF_FILEPATH_LENGTH 128 #define MMCAMCORDER_BUFFER_LINE_MAX 256 @@ -664,15 +665,16 @@ int _mmcamcorder_conf_init(MMHandleType handle, int type, camera_conf *configure /* [VideoInput] matching table */ static conf_info_table conf_main_video_input_table[] = { - { "VideosrcElement", CONFIGURE_VALUE_ELEMENT, {&_videosrc_element_default} }, - { "UseVideoscale", CONFIGURE_VALUE_INT, {.value_int = 0} }, - { "VideoscaleElement", CONFIGURE_VALUE_ELEMENT, {&_videoscale_element_default} }, - { "UseZeroCopyFormat", CONFIGURE_VALUE_INT, {.value_int = 0} }, - { "DeviceCount", CONFIGURE_VALUE_INT, {.value_int = MM_VIDEO_DEVICE_NUM} }, - { "SupportMediaPacketPreviewCb", CONFIGURE_VALUE_INT, {.value_int = 0} }, - { "SupportUserBuffer", CONFIGURE_VALUE_INT, {.value_int = 0} }, - { "MeasurePreviewFPS", CONFIGURE_VALUE_INT, {.value_int = 0} }, - { "SupportExtraPreview", CONFIGURE_VALUE_INT, {.value_int = 0} }, + { "VideosrcElement", CONFIGURE_VALUE_ELEMENT, {&_videosrc_element_default} }, + { "UseVideoscale", CONFIGURE_VALUE_INT, {.value_int = 0} }, + { "VideoscaleElement", CONFIGURE_VALUE_ELEMENT, {&_videoscale_element_default} }, + { "UseZeroCopyFormat", CONFIGURE_VALUE_INT, {.value_int = 0} }, + { "DeviceCount", CONFIGURE_VALUE_INT, {.value_int = MM_VIDEO_DEVICE_NUM} }, + { "SupportMediaPacketPreviewCb", CONFIGURE_VALUE_INT, {.value_int = 0} }, + { "SupportUserBuffer", CONFIGURE_VALUE_INT, {.value_int = 0} }, + { "MeasurePreviewFPS", CONFIGURE_VALUE_INT, {.value_int = 0} }, + { "SupportExtraPreview", CONFIGURE_VALUE_INT, {.value_int = 0} }, + { "DefaultEncodedPreviewBitrate", CONFIGURE_VALUE_INT, {.value_int = DEFAULT_ENCODED_PREVIEW_BITRATE} }, }; /* [AudioInput] matching table */ diff --git a/src/mm_camcorder_gstcommon.c b/src/mm_camcorder_gstcommon.c index bf2e9b3..6e708b2 100755 --- a/src/mm_camcorder_gstcommon.c +++ b/src/mm_camcorder_gstcommon.c @@ -602,25 +602,6 @@ int _mmcamcorder_create_preview_elements(MMHandleType handle) &hcamcorder->recreate_decoder); } - if (_mmcamcorder_is_encoded_preview_pixel_format(sc->info_image->preview_format)) { - int preview_bitrate = 0; - int gop_interval = 0; - mm_camcorder_get_attributes(handle, NULL, - MMCAM_ENCODED_PREVIEW_BITRATE, &preview_bitrate, - MMCAM_ENCODED_PREVIEW_GOP_INTERVAL, &gop_interval, - NULL); - - /* set encoded preview bitrate */ - if (!_mmcamcorder_set_encoded_preview_bitrate(handle, preview_bitrate)) - MMCAM_LOG_WARNING("_mmcamcorder_set_encoded_preview_bitrate failed"); - - /* set encoded preview iframe interval */ - if (sc->info_image->preview_format == MM_PIXEL_FORMAT_ENCODED_H264) { - if (!_mmcamcorder_set_encoded_preview_gop_interval(handle, gop_interval)) - MMCAM_LOG_WARNING("_mmcamcorder_set_encoded_preview_gop_interval failed"); - } - } - if (display_surface_type != MM_DISPLAY_SURFACE_NULL && _mmcamcorder_is_encoded_preview_pixel_format(sc->info_image->preview_format)) { switch (sc->info_image->preview_format) { diff --git a/src/mm_camcorder_internal.c b/src/mm_camcorder_internal.c index 44c743b..66802b5 100644 --- a/src/mm_camcorder_internal.c +++ b/src/mm_camcorder_internal.c @@ -475,6 +475,11 @@ static gint __mmcamcorder_init_configure_video_capture(mmf_camcorder_t *hcamcord "MeasurePreviewFPS", &hcamcorder->measure_preview_fps); + _mmcamcorder_conf_get_value_int((MMHandleType)hcamcorder, hcamcorder->conf_main, + CONFIGURE_CATEGORY_MAIN_VIDEO_INPUT, + "DefaultEncodedPreviewBitrate", + &hcamcorder->default_encoded_preview_bitrate); + ret = mm_camcorder_get_attributes((MMHandleType)hcamcorder, NULL, MMCAM_CAMERA_WIDTH, &resolution_width, MMCAM_CAMERA_HEIGHT, &resolution_height, @@ -490,10 +495,11 @@ static gint __mmcamcorder_init_configure_video_capture(mmf_camcorder_t *hcamcord return MM_ERROR_CAMCORDER_INTERNAL; } - MMCAM_LOG_INFO("ZC %d, UB %d, VC %d, MPPC %d, EP %d, MPFPS %d", + MMCAM_LOG_INFO("ZC %d, UB %d, VC %d, MPPC %d, EP %d, MPFPS %d, DEPB %d", hcamcorder->use_zero_copy_format, hcamcorder->support_user_buffer, hcamcorder->use_videoconvert, hcamcorder->support_media_packet_preview_cb, - hcamcorder->support_extra_preview, hcamcorder->measure_preview_fps); + hcamcorder->support_extra_preview, hcamcorder->measure_preview_fps, + hcamcorder->default_encoded_preview_bitrate); MMCAM_LOG_INFO("res : %d X %d, Default FPS by resolution : %d", resolution_width, resolution_height, fps_info.int_array.def); @@ -535,6 +541,7 @@ static gint __mmcamcorder_init_configure_video_capture(mmf_camcorder_t *hcamcord MMCAM_CAPTURE_SOUND_ENABLE, play_capture_sound, MMCAM_PLATFORM_PRIVILEGE_CAMERA, platform_privilege_camera, platform_privilege_camera ? strlen(platform_privilege_camera) : 0, + MMCAM_ENCODED_PREVIEW_BITRATE, hcamcorder->default_encoded_preview_bitrate, NULL); if (ret != MM_ERROR_NONE) { MMCAM_LOG_ERROR("[0x%x] Set %s FAILED.", ret, err_attr_name ? err_attr_name : "[UNKNOWN]"); diff --git a/src/mm_camcorder_stillshot.c b/src/mm_camcorder_stillshot.c index 340a6d7..0687b9c 100644 --- a/src/mm_camcorder_stillshot.c +++ b/src/mm_camcorder_stillshot.c @@ -860,17 +860,13 @@ int _mmcamcorder_image_cmd_preview_start(MMHandleType handle) _mmcamcorder_sound_finalize(handle); } else { if (_mmcamcorder_is_encoded_preview_pixel_format(info->preview_format)) { - ret = mm_camcorder_get_attributes(handle, NULL, + mm_camcorder_get_attributes(handle, NULL, MMCAM_ENCODED_PREVIEW_BITRATE, &bitrate, - NULL); - if (ret == MM_ERROR_NONE) - _mmcamcorder_set_encoded_preview_bitrate(handle, bitrate); - - ret = mm_camcorder_get_attributes(handle, NULL, MMCAM_ENCODED_PREVIEW_GOP_INTERVAL, &gop_interval, NULL); - if (ret == MM_ERROR_NONE) - _mmcamcorder_set_encoded_preview_gop_interval(handle, gop_interval); + + _mmcamcorder_set_encoded_preview_bitrate(handle, bitrate); + _mmcamcorder_set_encoded_preview_gop_interval(handle, gop_interval); } MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSRC_QUE].gst, "empty-buffers", FALSE); -- 2.34.1