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
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
/*-----------------------------------------------------------------------
| LOCAL VARIABLE DEFINITIONS |
-----------------------------------------------------------------------*/
+#define DEFAULT_AUDIO_BUFFER_INTERVAL 50
+
char *get_new_string(char* src_string)
{
{ "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 */
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;
/* 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);
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;
+}