From: Jeongmo Yang Date: Fri, 11 Nov 2016 08:39:45 +0000 (+0900) Subject: Add new field to configure to control interval of audio buffer X-Git-Tag: accepted/tizen/common/20161115.200739^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1b05dc8590744478df20004a4ad175df69f8a288;hp=03041f41755720384ba66fe805030377316115d6;p=platform%2Fcore%2Fmultimedia%2Flibmm-camcorder.git Add new field to configure to control interval of audio buffer [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 --- diff --git a/packaging/libmm-camcorder.spec b/packaging/libmm-camcorder.spec index b6de7e4..7918607 100644 --- 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.91 +Version: 0.10.92 Release: 0 Group: Multimedia/Libraries License: Apache-2.0 diff --git a/src/include/mm_camcorder_util.h b/src/include/mm_camcorder_util.h index f47de14..75a8a6a 100644 --- a/src/include/mm_camcorder_util.h +++ b/src/include/mm_camcorder_util.h @@ -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 diff --git a/src/mm_camcorder_configure.c b/src/mm_camcorder_configure.c index 1f64188..5114681 100644 --- a/src/mm_camcorder_configure.c +++ b/src/mm_camcorder_configure.c @@ -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 */ diff --git a/src/mm_camcorder_gstcommon.c b/src/mm_camcorder_gstcommon.c index a17cb9e..7ad12b8 100644 --- a/src/mm_camcorder_gstcommon.c +++ b/src/mm_camcorder_gstcommon.c @@ -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); diff --git a/src/mm_camcorder_util.c b/src/mm_camcorder_util.c index 8a4f12f..02a7cf8 100644 --- a/src/mm_camcorder_util.c +++ b/src/mm_camcorder_util.c @@ -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; +}