Add new field to mmfw_camcorder.ini for default encoded preview bitrate 68/264268/3 accepted/tizen/6.5/unified/20211028.122328 accepted/tizen/unified/20210916.014311 submit/tizen/20210915.115302 submit/tizen_6.5/20211028.162401 tizen_6.5.m2_release
authorJeongmo Yang <jm80.yang@samsung.com>
Wed, 15 Sep 2021 08:14:03 +0000 (17:14 +0900)
committerJeongmo Yang <jm80.yang@samsung.com>
Wed, 15 Sep 2021 10:39:22 +0000 (19:39 +0900)
- 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 <jm80.yang@samsung.com>
packaging/libmm-camcorder.spec
src/include/mm_camcorder_internal.h
src/mm_camcorder_attribute.c
src/mm_camcorder_configure.c
src/mm_camcorder_gstcommon.c
src/mm_camcorder_internal.c
src/mm_camcorder_stillshot.c

index 87c0f61..d1d7efc 100755 (executable)
@@ -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
index 9fc3273..b875239 100644 (file)
@@ -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 */
index 320faf1..8bfda03 100644 (file)
@@ -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) {
index ab14db8..ab1472b 100644 (file)
@@ -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 */
index bf2e9b3..6e708b2 100755 (executable)
@@ -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) {
index 44c743b..66802b5 100644 (file)
@@ -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]");
index 340a6d7..0687b9c 100644 (file)
@@ -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);