Add new field to configure to control interval of audio buffer 49/97149/2 accepted/tizen/common/20161115.200739 accepted/tizen/ivi/20161115.234322 accepted/tizen/mobile/20161115.234124 accepted/tizen/tv/20161115.234212 accepted/tizen/wearable/20161115.234245 submit/tizen/20161115.062308
authorJeongmo Yang <jm80.yang@samsung.com>
Fri, 11 Nov 2016 08:39:45 +0000 (17:39 +0900)
committerJeongmo Yang <jm80.yang@samsung.com>
Fri, 11 Nov 2016 08:45:06 +0000 (17:45 +0900)
[Version] 0.10.91
[Profile] Common
[Issue Type] Update
[Dependency module] N/A
[Test] [M(T) - Boot=(OK), sdb=(OK), Home=(OK), Touch=(OK), Version=tizen-mobile_20161110.1]

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

index b6de7e4..7918607 100644 (file)
@@ -1,6 +1,6 @@
 Name:       libmm-camcorder
 Summary:    Camera and recorder library
-Version:    0.10.91
+Version:    0.10.92
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0
index f47de14..75a8a6a 100644 (file)
@@ -315,6 +315,9 @@ int _mmcamcorder_send_sound_play_message(GDBusConnection *conn, _MMCamcorderGDbu
 void _mmcamcorder_emit_dbus_signal(GDBusConnection *conn, const char *object_name,
        const char *interface_name, const char *signal_name, int value);
 
+/* audio buffer */
+int _mmcamcorder_get_audiosrc_blocksize(int samplerate, int format, int channel, int interval, int *blocksize);
+
 #ifdef __cplusplus
 }
 #endif
index 1f64188..5114681 100644 (file)
@@ -41,6 +41,8 @@
 /*-----------------------------------------------------------------------
 |    LOCAL VARIABLE DEFINITIONS                                                |
 -----------------------------------------------------------------------*/
+#define DEFAULT_AUDIO_BUFFER_INTERVAL   50
+
 
 char *get_new_string(char* src_string)
 {
@@ -641,6 +643,7 @@ void _mmcamcorder_conf_init(MMHandleType handle, int type, camera_conf** configu
                { "AudioDevice",          CONFIGURE_VALUE_INT_ARRAY, {NULL} },
                { "AudiosrcElement",      CONFIGURE_VALUE_ELEMENT, {&_audiosrc_element_default} },
                { "AudiomodemsrcElement", CONFIGURE_VALUE_ELEMENT, {&_audiomodemsrc_element_default} },
+               { "AudioBufferInterval",  CONFIGURE_VALUE_INT,     {.value_int = DEFAULT_AUDIO_BUFFER_INTERVAL} },
        };
 
        /* [VideoOutput] matching table */
index a17cb9e..7ad12b8 100644 (file)
@@ -480,6 +480,8 @@ int _mmcamcorder_create_audiosrc_bin(MMHandleType handle)
        char *stream_type = NULL;
        char stream_type_len = 0;
        int stream_index = 0;
+       int buffer_interval = 0;
+       int blocksize = 0;
 
        GstCaps *caps = NULL;
        GstPad *pad = NULL;
@@ -562,6 +564,17 @@ int _mmcamcorder_create_audiosrc_bin(MMHandleType handle)
        /* set audiosrc properties in ini configuration */
        _mmcamcorder_conf_set_value_element_property(sc->encode_element[_MMCAMCORDER_AUDIOSRC_SRC].gst, AudiosrcElement);
 
+       /* set block size */
+       _mmcamcorder_conf_get_value_int((MMHandleType)hcamcorder, hcamcorder->conf_main,
+               CONFIGURE_CATEGORY_MAIN_AUDIO_INPUT,
+               "AudioBufferInterval",
+               &buffer_interval);
+
+       if (_mmcamcorder_get_audiosrc_blocksize(rate, format, channel, buffer_interval, &blocksize)) {
+               _mmcam_dbg_log("set audiosrc block size %d", blocksize);
+               MMCAMCORDER_G_OBJECT_SET(sc->encode_element[_MMCAMCORDER_AUDIOSRC_SRC].gst, "blocksize", blocksize);
+       }
+
        _MMCAMCORDER_ELEMENT_MAKE(sc, sc->encode_element, _MMCAMCORDER_AUDIOSRC_FILT, "capsfilter", "audiosrc_capsfilter", element_list, err);
 
        _MMCAMCORDER_ELEMENT_MAKE(sc, sc->encode_element, _MMCAMCORDER_AUDIOSRC_QUE, "queue", "audiosrc_queue", element_list, err);
index 8a4f12f..02a7cf8 100644 (file)
@@ -2257,3 +2257,26 @@ void _mmcamcorder_emit_dbus_signal(GDBusConnection *conn, const char *object_nam
 
        return;
 }
+
+
+int _mmcamcorder_get_audiosrc_blocksize(int samplerate, int format, int channel, int interval, int *blocksize)
+{
+       int depth = 8;
+
+       if (!blocksize) {
+               _mmcam_dbg_err("NULL ptr");
+               return FALSE;
+       }
+
+       if (samplerate == 0 || channel == 0 || interval == 0) {
+               _mmcam_dbg_err("invalid param %d %d %d", samplerate, channel, interval);
+               return FALSE;
+       }
+
+       if (format == MM_CAMCORDER_AUDIO_FORMAT_PCM_S16_LE)
+               depth = 16;
+
+       *blocksize = samplerate * depth * channel * interval / 8000;
+
+       return TRUE;
+}