Fix Svace issue
[platform/core/multimedia/libmm-camcorder.git] / src / mm_camcorder_audiorec.c
index 70eb27a..ca5dd30 100644 (file)
 /*---------------------------------------------------------------------------------------
 |    GLOBAL VARIABLE DEFINITIONS for internal                                          |
 ---------------------------------------------------------------------------------------*/
-#define MM_CAMCORDER_START_CHANGE_STATE _MMCamcorderStartHelperFunc((void *)hcamcorder)
-#define MM_CAMCORDER_STOP_CHANGE_STATE _MMCamcorderStopHelperFunc((void *)hcamcorder)
+
 /*---------------------------------------------------------------------------------------
 |    LOCAL VARIABLE DEFINITIONS for internal                                           |
 ---------------------------------------------------------------------------------------*/
 #define RESET_PAUSE_TIME                        0
-#define _MMCAMCORDER_AUDIO_MINIMUM_SPACE        (100*1024)
-#define _MMCAMCORDER_AUDIO_MARGIN_SPACE         (1*1024)
-#define _MMCAMCORDER_RETRIAL_COUNT              10
-#define _MMCAMCORDER_FRAME_WAIT_TIME            200000 /* micro second */
+#define _MMCAMCORDER_AUDIO_MINIMUM_SPACE        ((100*1024) + (5*1024))
+#define _MMCAMCORDER_RETRIAL_COUNT              15
+#define _MMCAMCORDER_FRAME_WAIT_TIME            200000  /* us */
 #define _MMCAMCORDER_FREE_SPACE_CHECK_INTERVAL  10
 
 /*---------------------------------------------------------------------------------------
@@ -62,10 +60,12 @@ static gboolean __mmcamcorder_audio_add_metadata_info_m4a(MMHandleType handle);
 static int __mmcamcorder_create_audiop_with_encodebin(MMHandleType handle)
 {
        int err = MM_ERROR_NONE;
-       int ret = MM_ERROR_NONE;
+       int file_name_len = 0;
 
+       char *file_name = NULL;
        const char *aenc_name = NULL;
        const char *mux_name = NULL;
+       const char *sink_name = NULL;
 
        GstBus *bus = NULL;
        GstPad *srcpad = NULL;
@@ -77,6 +77,7 @@ static int __mmcamcorder_create_audiop_with_encodebin(MMHandleType handle)
        _MMCamcorderSubContext *sc = NULL;
        type_element *aenc_elem = NULL;
        type_element *mux_elem = NULL;
+       type_element *sink_elem = NULL;
 
        mmf_return_val_if_fail(hcamcorder, MM_ERROR_CAMCORDER_NOT_INITIALIZED);
        sc = MMF_CAMCORDER_SUBCONTEXT(handle);
@@ -87,17 +88,17 @@ static int __mmcamcorder_create_audiop_with_encodebin(MMHandleType handle)
 
        info = (_MMCamcorderAudioInfo *)sc->info_audio;
 
-       _mmcam_dbg_log("");
+       MMCAM_LOG_INFO("");
 
        mux_elem = _mmcamcorder_get_type_element(handle, MM_CAM_FILE_FORMAT);
        err = _mmcamcorder_conf_get_value_element_name(mux_elem, &mux_name);
 
        if (!mux_name || !strcmp(mux_name, "wavenc")) {
                /* IF MUX in not chosen then record in raw file */
-               _mmcam_dbg_log("Record without muxing.");
+               MMCAM_LOG_INFO("Record without muxing.");
                info->bMuxing = FALSE;
        } else {
-               _mmcam_dbg_log("Record with mux.");
+               MMCAM_LOG_INFO("Record with mux.");
                info->bMuxing = TRUE;
        }
 
@@ -113,22 +114,43 @@ static int __mmcamcorder_create_audiop_with_encodebin(MMHandleType handle)
                err = _mmcamcorder_create_encodesink_bin((MMHandleType)hcamcorder, MM_CAMCORDER_ENCBIN_PROFILE_AUDIO);
                if (err != MM_ERROR_NONE)
                        return err;
+
+               /* Add and link elements */
+               gst_bin_add_many(GST_BIN(sc->encode_element[_MMCAMCORDER_ENCODE_MAIN_PIPE].gst),
+                       sc->encode_element[_MMCAMCORDER_AUDIOSRC_BIN].gst,
+                       sc->encode_element[_MMCAMCORDER_ENCSINK_BIN].gst,
+                       NULL);
+
+               srcpad = gst_element_get_static_pad(sc->encode_element[_MMCAMCORDER_AUDIOSRC_BIN].gst, "src");
+               sinkpad = gst_element_get_static_pad(sc->encode_element[_MMCAMCORDER_ENCSINK_BIN].gst, "audio_sink0");
+               _MM_GST_PAD_LINK_UNREF(srcpad, sinkpad, err, pipeline_creation_error);
        } else {
+               err = mm_camcorder_get_attributes(handle, NULL,
+                       MMCAM_TARGET_FILENAME, &file_name, &file_name_len,
+                       NULL);
+               if (err != MM_ERROR_NONE) {
+                       MMCAM_LOG_ERROR("failed to get filename [0x%x]", err);
+                       err = MM_ERROR_CAMCORDER_RESOURCE_CREATION;
+                       goto pipeline_creation_error;
+               }
+
                /* without muxing. can't use encodebin. */
                aenc_elem = _mmcamcorder_get_type_element(handle, MM_CAM_AUDIO_ENCODER);
                if (!aenc_elem) {
-                       _mmcam_dbg_err("Fail to get type element");
+                       MMCAM_LOG_ERROR("Fail to get type element");
                        err = MM_ERROR_CAMCORDER_RESOURCE_CREATION;
                        goto pipeline_creation_error;
                }
 
                err = _mmcamcorder_conf_get_value_element_name(aenc_elem, &aenc_name);
                if ((!err) || (!aenc_name)) {
-                       _mmcam_dbg_err("Fail to get element name");
+                       MMCAM_LOG_ERROR("Fail to get element name");
                        err = MM_ERROR_CAMCORDER_RESOURCE_CREATION;
                        goto pipeline_creation_error;
                }
 
+               element_list = g_list_append(element_list, &sc->encode_element[_MMCAMCORDER_AUDIOSRC_BIN]);
+
                _MMCAMCORDER_ELEMENT_MAKE(sc, sc->encode_element, _MMCAMCORDER_ENCSINK_AQUE, "queue",  NULL, element_list, err);
 
                if (strcmp(aenc_name, "wavenc") != 0)
@@ -136,58 +158,30 @@ static int __mmcamcorder_create_audiop_with_encodebin(MMHandleType handle)
 
                _MMCAMCORDER_ELEMENT_MAKE(sc, sc->encode_element, _MMCAMCORDER_ENCSINK_AENC, aenc_name, NULL, element_list, err);
 
-               _MMCAMCORDER_ELEMENT_MAKE(sc, sc->encode_element, _MMCAMCORDER_ENCSINK_SINK, "filesink", NULL, element_list, err);
-       }
+               _mmcamcorder_conf_get_element(handle, hcamcorder->conf_main,
+                       CONFIGURE_CATEGORY_MAIN_RECORD,
+                       "RecordsinkElement",
+                       &sink_elem);
+               _mmcamcorder_conf_get_value_element_name(sink_elem, &sink_name);
 
-       /* Add and link elements */
-       if (info->bMuxing) {
-               /* IF MUX is indicated create MUX */
-               gst_bin_add_many(GST_BIN(sc->encode_element[_MMCAMCORDER_ENCODE_MAIN_PIPE].gst),
-                       sc->encode_element[_MMCAMCORDER_AUDIOSRC_BIN].gst,
-                       sc->encode_element[_MMCAMCORDER_ENCSINK_BIN].gst,
-                       NULL);
+               MMCAM_LOG_INFO("encode sink : %s", sink_name);
 
-               srcpad = gst_element_get_static_pad(sc->encode_element[_MMCAMCORDER_AUDIOSRC_BIN].gst, "src");
-               sinkpad = gst_element_get_static_pad(sc->encode_element[_MMCAMCORDER_ENCSINK_BIN].gst, "audio_sink0");
-               _MM_GST_PAD_LINK_UNREF(srcpad, sinkpad, err, pipeline_creation_error);
-       } else {
-               /* IF MUX in not chosen then record in raw amr file */
-               if (!strcmp(aenc_name, "wavenc")) {
-                       gst_bin_add_many(GST_BIN(sc->encode_element[_MMCAMCORDER_ENCODE_MAIN_PIPE].gst),
-                               sc->encode_element[_MMCAMCORDER_AUDIOSRC_BIN].gst,
-                               sc->encode_element[_MMCAMCORDER_ENCSINK_AQUE].gst,
-                               sc->encode_element[_MMCAMCORDER_ENCSINK_AENC].gst,
-                               sc->encode_element[_MMCAMCORDER_ENCSINK_SINK].gst,
-                               NULL);
+               _MMCAMCORDER_ELEMENT_MAKE(sc, sc->encode_element, _MMCAMCORDER_ENCSINK_SINK, sink_name, NULL, element_list, err);
 
-                       ret = _MM_GST_ELEMENT_LINK_MANY(sc->encode_element[_MMCAMCORDER_AUDIOSRC_BIN].gst,
-                               sc->encode_element[_MMCAMCORDER_ENCSINK_AQUE].gst,
-                               sc->encode_element[_MMCAMCORDER_ENCSINK_AENC].gst,
-                               sc->encode_element[_MMCAMCORDER_ENCSINK_SINK].gst,
-                               NULL);
-                       if (!ret) {
-                               err = MM_ERROR_CAMCORDER_GST_LINK;
-                               goto pipeline_creation_error;
-                       }
-               } else {
-                       gst_bin_add_many(GST_BIN(sc->encode_element[_MMCAMCORDER_ENCODE_MAIN_PIPE].gst),
-                               sc->encode_element[_MMCAMCORDER_AUDIOSRC_BIN].gst,
-                               sc->encode_element[_MMCAMCORDER_ENCSINK_AQUE].gst,
-                               sc->encode_element[_MMCAMCORDER_ENCSINK_CONV].gst,
-                               sc->encode_element[_MMCAMCORDER_ENCSINK_AENC].gst,
-                               sc->encode_element[_MMCAMCORDER_ENCSINK_SINK].gst,
-                               NULL);
+               _mmcamcorder_conf_set_value_element_property(sc->encode_element[_MMCAMCORDER_ENCSINK_SINK].gst, sink_elem);
 
-                       ret = _MM_GST_ELEMENT_LINK_MANY(sc->encode_element[_MMCAMCORDER_AUDIOSRC_BIN].gst,
-                               sc->encode_element[_MMCAMCORDER_ENCSINK_AQUE].gst,
-                               sc->encode_element[_MMCAMCORDER_ENCSINK_CONV].gst,
-                               sc->encode_element[_MMCAMCORDER_ENCSINK_AENC].gst,
-                               sc->encode_element[_MMCAMCORDER_ENCSINK_SINK].gst,
-                               NULL);
-                       if (!ret) {
-                               err = MM_ERROR_CAMCORDER_GST_LINK;
-                               goto pipeline_creation_error;
-                       }
+               /* add elements to encode pipeline */
+               if (!_mmcamcorder_add_elements_to_bin(GST_BIN(sc->encode_element[_MMCAMCORDER_ENCODE_MAIN_PIPE].gst), element_list)) {
+                       MMCAM_LOG_ERROR("add encode elements error.");
+                       err = MM_ERROR_CAMCORDER_RESOURCE_CREATION;
+                       goto pipeline_creation_error;
+               }
+
+               /* link elements */
+               if (!_mmcamcorder_link_elements(element_list)) {
+                       MMCAM_LOG_ERROR("encode element link error.");
+                       err = MM_ERROR_CAMCORDER_GST_LINK;
+                       goto pipeline_creation_error;
                }
        }
 
@@ -201,13 +195,23 @@ static int __mmcamcorder_create_audiop_with_encodebin(MMHandleType handle)
        srcpad = gst_element_get_static_pad(sc->encode_element[_MMCAMCORDER_ENCSINK_AENC].gst, "src");
        MMCAMCORDER_ADD_BUFFER_PROBE(srcpad, _MMCAMCORDER_HANDLER_AUDIOREC,
                __mmcamcorder_audio_dataprobe_record, hcamcorder);
+
+       /* for replay gain tag */
+       MMCAMCORDER_ADD_EVENT_PROBE(srcpad, _MMCAMCORDER_HANDLER_AUDIOREC,
+               __mmcamcorder_eventprobe_monitor, hcamcorder);
+
        gst_object_unref(srcpad);
        srcpad = NULL;
 
-       bus = gst_pipeline_get_bus(GST_PIPELINE(sc->encode_element[_MMCAMCORDER_ENCODE_MAIN_PIPE].gst));
+       sinkpad = gst_element_get_static_pad(sc->encode_element[_MMCAMCORDER_ENCSINK_SINK].gst, "sink");
+       MMCAMCORDER_ADD_BUFFER_PROBE(sinkpad, _MMCAMCORDER_HANDLER_AUDIOREC,
+               __mmcamcorder_muxed_dataprobe, hcamcorder);
+       MMCAMCORDER_ADD_EVENT_PROBE(sinkpad, _MMCAMCORDER_HANDLER_AUDIOREC,
+               __mmcamcorder_eventprobe_monitor, hcamcorder);
+       gst_object_unref(sinkpad);
+       sinkpad = NULL;
 
-       /* register message callback  */
-       hcamcorder->pipeline_cb_event_id = gst_bus_add_watch(bus, (GstBusFunc)_mmcamcorder_pipeline_cb_message, hcamcorder);
+       bus = gst_pipeline_get_bus(GST_PIPELINE(sc->encode_element[_MMCAMCORDER_ENCODE_MAIN_PIPE].gst));
 
        /* set sync callback */
        gst_bus_set_sync_handler(bus, _mmcamcorder_encode_pipeline_bus_sync_callback, hcamcorder, NULL);
@@ -278,10 +282,10 @@ _mmcamcorder_destroy_audio_pipeline(MMHandleType handle)
 
        info = sc->info_audio;
 
-       _mmcam_dbg_log("start");
+       MMCAM_LOG_INFO("start");
 
        if (sc->encode_element[_MMCAMCORDER_ENCODE_MAIN_PIPE].gst) {
-               _mmcam_dbg_warn("release audio pipeline");
+               MMCAM_LOG_WARNING("release audio pipeline");
 
                _mmcamcorder_gst_set_state(handle, sc->encode_element[_MMCAMCORDER_ENCODE_MAIN_PIPE].gst, GST_STATE_NULL);
 
@@ -306,51 +310,17 @@ _mmcamcorder_destroy_audio_pipeline(MMHandleType handle)
                gst_object_unref(sc->encode_element[_MMCAMCORDER_ENCODE_MAIN_PIPE].gst);
        }
 
-       _mmcam_dbg_log("done");
+       MMCAM_LOG_INFO("done");
 
        return;
 }
 
 
-/**
- * This function operates each command on audio mode.
- *
- * @param      c               [in]    Handle of camcorder context.
- * @param      command [in]    command type received from Multimedia Framework.
- *
- * @return     This function returns MM_ERROR_NONE on success, or the other values
- *                     on error.
- * @remark
- * @see                _mmcamcorder_set_functions()
- *
- */
- /* ADDED BY SISO */
-
-
-void* _MMCamcorderStartHelperFunc(void *handle)
-{
-       mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(handle);
-       _mmcamcorder_set_state((MMHandleType)hcamcorder, hcamcorder->target_state);
-
-       return NULL;
-}
-
-void* _MMCamcorderStopHelperFunc(void *handle)
-{
-       mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(handle);
-       _mmcamcorder_set_state((MMHandleType)hcamcorder, hcamcorder->target_state);
-
-       return NULL;
-}
-
-
 int
 _mmcamcorder_audio_command(MMHandleType handle, int command)
 {
        int cmd = command;
        int ret = MM_ERROR_NONE;
-       int err = 0;
-       guint64 free_space = 0;
        char *err_attr_name = NULL;
 
        GstElement *pipeline = NULL;
@@ -369,7 +339,7 @@ _mmcamcorder_audio_command(MMHandleType handle, int command)
        pipeline = sc->element[_MMCAMCORDER_MAIN_PIPE].gst;
        info = sc->info_audio;
 
-       _mmcam_dbg_log("");
+       MMCAM_LOG_INFO("");
 
        pipeline = sc->encode_element[_MMCAMCORDER_ENCODE_MAIN_PIPE].gst;
        audioSrc = sc->encode_element[_MMCAMCORDER_AUDIOSRC_SRC].gst;
@@ -377,11 +347,10 @@ _mmcamcorder_audio_command(MMHandleType handle, int command)
        case _MMCamcorder_CMD_RECORD:
                /* check status for resume case */
                if (_mmcamcorder_get_state((MMHandleType)hcamcorder) != MM_CAMCORDER_STATE_PAUSED) {
+                       gboolean storage_validity = FALSE;
                        guint imax_size = 0;
                        guint imax_time = 0;
-                       char *temp_filename = NULL;
-                       char *dir_name = NULL;
-                       int file_system_type = 0;
+                       char *target_filename = NULL;
                        int filename_length = 0;
                        int root_directory_length = 0;
 
@@ -394,34 +363,42 @@ _mmcamcorder_audio_command(MMHandleType handle, int command)
                                MMCAM_TARGET_MAX_SIZE, &imax_size,
                                MMCAM_TARGET_TIME_LIMIT, &imax_time,
                                MMCAM_FILE_FORMAT, &(info->fileformat),
-                               MMCAM_TARGET_FILENAME, &temp_filename, &filename_length,
+                               MMCAM_TARGET_FILENAME, &target_filename, &filename_length,
                                MMCAM_ROOT_DIRECTORY, &hcamcorder->root_directory, &root_directory_length,
                                NULL);
                        if (ret != MM_ERROR_NONE) {
-                               _mmcam_dbg_warn("failed to get attribute. (%s:%x)", err_attr_name, ret);
+                               MMCAM_LOG_WARNING("failed to get attribute. (%s:%x)", err_attr_name, ret);
                                SAFE_FREE(err_attr_name);
                                goto _ERR_CAMCORDER_AUDIO_COMMAND;
                        }
 
-                       if (temp_filename == NULL) {
-                               _mmcam_dbg_err("filename is not set");
+                       if (!target_filename && !hcamcorder->mstream_cb) {
+                               MMCAM_LOG_ERROR("filename is not set and muxed stream cb is NULL");
                                ret = MM_ERROR_CAMCORDER_INVALID_ARGUMENT;
                                goto _ERR_CAMCORDER_AUDIO_COMMAND;
                        }
 
-                       info->filename = g_strdup(temp_filename);
-                       if (!info->filename) {
-                               _mmcam_dbg_err("STRDUP was failed");
-                               goto _ERR_CAMCORDER_AUDIO_COMMAND;
-                       }
+                       SAFE_G_FREE(info->filename);
 
-                       _mmcam_dbg_log("Record start : set file name using attribute - %s\n ", info->filename);
+                       if (target_filename) {
+                               info->filename = g_strdup(target_filename);
+                               if (!info->filename) {
+                                       MMCAM_LOG_ERROR("STRDUP was failed for [%s]", target_filename);
+                                       goto _ERR_CAMCORDER_AUDIO_COMMAND;
+                               }
 
-                       MMCAMCORDER_G_OBJECT_SET_POINTER(sc->encode_element[_MMCAMCORDER_ENCSINK_SINK].gst, "location", info->filename);
+                               MMCAM_LOG_INFO("Record start : file name [%s]", info->filename);
+
+                               MMCAMCORDER_G_OBJECT_SET_POINTER(sc->encode_element[_MMCAMCORDER_ENCSINK_SINK].gst, "location", info->filename);
+                       } else {
+                               MMCAM_LOG_INFO("Recorded data will be written in [%s]", _MMCamcorder_FILENAME_NULL);
+                               MMCAMCORDER_G_OBJECT_SET_POINTER(sc->encode_element[_MMCAMCORDER_ENCSINK_SINK].gst, "location", _MMCamcorder_FILENAME_NULL);
+                       }
 
                        sc->ferror_send = FALSE;
                        sc->ferror_count = 0;
                        sc->bget_eos = FALSE;
+                       sc->muxed_stream_offset = 0;
                        info->filesize = 0;
 
                        /* set max size */
@@ -436,48 +413,14 @@ _mmcamcorder_audio_command(MMHandleType handle, int command)
                        else
                                info->max_time = ((guint64)imax_time) * 1000; /* to millisecond */
 
-                       /* TODO : check free space before recording start */
-                       dir_name = g_path_get_dirname(info->filename);
-                       if (dir_name) {
-                               err = _mmcamcorder_get_storage_info(dir_name, hcamcorder->root_directory, &hcamcorder->storage_info);
-                               if (err != 0) {
-                                       _mmcam_dbg_err("get storage info failed");
-                                       g_free(dir_name);
-                                       dir_name = NULL;
-                                       return MM_ERROR_OUT_OF_STORAGE;
-                               }
-
-                               err = _mmcamcorder_get_freespace(hcamcorder->storage_info.type, &free_space);
-
-                               _mmcam_dbg_warn("current space - %s [%" G_GUINT64_FORMAT "]", dir_name, free_space);
-
-                               if (_mmcamcorder_get_file_system_type(dir_name, &file_system_type) == 0) {
-                                       /* MSDOS_SUPER_MAGIC : 0x4d44 */
-                                       if (file_system_type == MSDOS_SUPER_MAGIC &&
-                                           (info->max_size == 0 || info->max_size > FAT32_FILE_SYSTEM_MAX_SIZE)) {
-                                               _mmcam_dbg_warn("FAT32 and too large max[%"G_GUINT64_FORMAT"], set max as %"G_GUINT64_FORMAT,
-                                                       info->max_size, FAT32_FILE_SYSTEM_MAX_SIZE);
-                                               info->max_size = FAT32_FILE_SYSTEM_MAX_SIZE;
-                                       } else {
-                                               _mmcam_dbg_warn("file system 0x%x, max size %"G_GUINT64_FORMAT,
-                                                                               file_system_type, info->max_size);
-                                       }
-                               } else {
-                                       _mmcam_dbg_warn("_mmcamcorder_get_file_system_type failed");
-                               }
-
-                               g_free(dir_name);
-                               dir_name = NULL;
-                       } else {
-                               _mmcam_dbg_err("failed to get directory name");
-                               err = -1;
+                       ret = _mmcamcorder_get_storage_validity(handle, info->filename,
+                               _MMCAMCORDER_AUDIO_MINIMUM_SPACE, &storage_validity);
+                       if (ret != MM_ERROR_NONE || !storage_validity) {
+                               MMCAM_LOG_ERROR("storage validation failed[0x%x]:%d", ret, storage_validity);
+                               return ret;
                        }
 
-                       if ((err == -1) || free_space <= (_MMCAMCORDER_AUDIO_MINIMUM_SPACE+(5*1024))) {
-                               _mmcam_dbg_err("OUT of STORAGE [err:%d or free space [%" G_GUINT64_FORMAT "] is smaller than [%d]",
-                                       err, free_space, (_MMCAMCORDER_AUDIO_MINIMUM_SPACE+(5*1024)));
-                               return MM_ERROR_OUT_OF_STORAGE;
-                       }
+                       _mmcamcorder_adjust_recording_max_size(info->filename, &info->max_size);
                }
 
                ret = _mmcamcorder_gst_set_state(handle, pipeline, GST_STATE_PLAYING);
@@ -491,8 +434,8 @@ _mmcamcorder_audio_command(MMHandleType handle, int command)
                GstClock *pipe_clock = NULL;
                int count = 0;
 
-               if (info->b_commiting) {
-                       _mmcam_dbg_warn("now on commiting previous file!!(cmd : %d)", cmd);
+               if (info->b_committing) {
+                       MMCAM_LOG_WARNING("now on commiting previous file!!(cmd : %d)", cmd);
                        return MM_ERROR_CAMCORDER_CMD_IS_RUNNING;
                }
 
@@ -500,11 +443,11 @@ _mmcamcorder_audio_command(MMHandleType handle, int command)
                        if (info->filesize > 0) {
                                break;
                        } else if (count == _MMCAMCORDER_RETRIAL_COUNT) {
-                               _mmcam_dbg_err("Pause fail, wait 200 ms, but file size is %lld",
+                               MMCAM_LOG_ERROR("Pause fail, wait 200 ms, but file size is %"G_GUINT64_FORMAT,
                                        info->filesize);
                                return MM_ERROR_CAMCORDER_INVALID_CONDITION;
                        } else {
-                               _mmcam_dbg_warn("Wait for enough audio frame, retry count[%d], file size is %lld",
+                               MMCAM_LOG_WARNING("Wait for enough audio frame, retry count[%d], file size is %"G_GUINT64_FORMAT,
                                        count, info->filesize);
                        }
                        usleep(_MMCAMCORDER_FRAME_WAIT_TIME);
@@ -521,8 +464,8 @@ _mmcamcorder_audio_command(MMHandleType handle, int command)
        }
 
        case _MMCamcorder_CMD_CANCEL:
-               if (info->b_commiting) {
-                       _mmcam_dbg_warn("now on commiting previous file!!(cmd : %d)", cmd);
+               if (info->b_committing) {
+                       MMCAM_LOG_WARNING("now on commiting previous file!!(cmd : %d)", cmd);
                        return MM_ERROR_CAMCORDER_CMD_IS_RUNNING;
                }
 
@@ -530,13 +473,18 @@ _mmcamcorder_audio_command(MMHandleType handle, int command)
                if (ret != MM_ERROR_NONE)
                        goto _ERR_CAMCORDER_AUDIO_COMMAND;
 
-               if (info->bMuxing) {
+               if (info->bMuxing)
                        MMCAMCORDER_G_OBJECT_SET(sc->encode_element[_MMCAMCORDER_ENCSINK_ENCBIN].gst, "block", FALSE);
-               } else {
+               else
                        MMCAMCORDER_G_OBJECT_SET(sc->encode_element[_MMCAMCORDER_ENCSINK_AQUE].gst, "empty-buffers", FALSE);
-               }
 
-               _mmcamcorder_gst_set_state(handle, sc->encode_element[_MMCAMCORDER_ENCSINK_SINK].gst, GST_STATE_NULL);
+               _mmcamcorder_gst_set_state(handle, pipeline, GST_STATE_NULL);
+
+               /* Reconstruct audio encoding pipeline,
+                  because some muxer(ex:avmux_amr) should be created newly for next recording after cancel.
+                  Otherwise, it returns error when start next recording. */
+               _mmcamcorder_destroy_audio_pipeline(handle);
+               ret = _mmcamcorder_create_audio_pipeline(handle);
 
                sc->pipeline_time = 0;
                sc->pause_time = 0;
@@ -544,7 +492,7 @@ _mmcamcorder_audio_command(MMHandleType handle, int command)
                sc->isMaxtimePausing = FALSE;
 
                if (info->filename) {
-                       _mmcam_dbg_log("file delete(%s)", info->filename);
+                       MMCAM_LOG_INFO("file delete(%s)", info->filename);
                        unlink(info->filename);
                        SAFE_G_FREE(info->filename);
                }
@@ -553,60 +501,67 @@ _mmcamcorder_audio_command(MMHandleType handle, int command)
        case _MMCamcorder_CMD_COMMIT:
        {
                int count = 0;
+               guint64 free_space = 0;
+               MMCAM_LOG_INFO("_MMCamcorder_CMD_COMMIT");
 
-               _mmcam_dbg_log("_MMCamcorder_CMD_COMMIT");
-
-               if (info->b_commiting) {
-                       _mmcam_dbg_warn("now on commiting previous file!!(cmd : %d)", cmd);
+               if (info->b_committing) {
+                       MMCAM_LOG_WARNING("now on commiting previous file!!(cmd : %d)", cmd);
                        return MM_ERROR_CAMCORDER_CMD_IS_RUNNING;
                } else {
-                       _mmcam_dbg_log("_MMCamcorder_CMD_COMMIT : start");
-                       info->b_commiting = TRUE;
+                       MMCAM_LOG_INFO("_MMCamcorder_CMD_COMMIT : start");
+                       info->b_committing = TRUE;
                }
 
                for (count = 0 ; count <= _MMCAMCORDER_RETRIAL_COUNT ; count++) {
                        if (info->filesize > 0) {
                                break;
                        } else if (count == _MMCAMCORDER_RETRIAL_COUNT) {
-                               _mmcam_dbg_err("Commit fail, waited 200 ms, but file size is %lld", info->filesize);
-                                       info->b_commiting = FALSE;
+                               MMCAM_LOG_ERROR("Commit fail, waited 200 ms, but file size is %"G_GUINT64_FORMAT, info->filesize);
+                                       info->b_committing = FALSE;
                                return MM_ERROR_CAMCORDER_INVALID_CONDITION;
                        } else {
-                               _mmcam_dbg_warn("Waiting for enough audio frame, re-count[%d], file size is %lld",
+                               MMCAM_LOG_WARNING("Waiting for enough audio frame, re-count[%d], file size is %"G_GUINT64_FORMAT,
                                        count, info->filesize);
                        }
                        usleep(_MMCAMCORDER_FRAME_WAIT_TIME);
                }
 
+               _mmcamcorder_get_freespace(hcamcorder->storage_info.type, &free_space);
+               if (free_space < _MMCAMCORDER_AUDIO_MINIMUM_SPACE) {
+                       MMCAM_LOG_WARNING("_MMCamcorder_CMD_COMMIT out of storage [%" G_GUINT64_FORMAT "]", free_space);
+                       ret = MM_ERROR_OUT_OF_STORAGE;
+                       goto _ERR_CAMCORDER_AUDIO_COMMAND;
+               }
+
                if (audioSrc) {
                        if (gst_element_send_event(audioSrc, gst_event_new_eos()) == FALSE) {
-                               _mmcam_dbg_err("send EOS failed");
-                               info->b_commiting = FALSE;
+                               MMCAM_LOG_ERROR("send EOS failed");
+                               info->b_committing = FALSE;
                                ret = MM_ERROR_CAMCORDER_INTERNAL;
                                goto _ERR_CAMCORDER_AUDIO_COMMAND;
                        }
 
-                       _mmcam_dbg_log("send EOS done");
+                       MMCAM_LOG_INFO("send EOS done");
 
                        /* for pause -> commit case */
                        if (_mmcamcorder_get_state((MMHandleType)hcamcorder) == MM_CAMCORDER_STATE_PAUSED) {
                                ret = _mmcamcorder_gst_set_state(handle, pipeline, GST_STATE_PLAYING);
                                if (ret != MM_ERROR_NONE) {
-                                       info->b_commiting = FALSE;
+                                       info->b_committing = FALSE;
                                        goto _ERR_CAMCORDER_AUDIO_COMMAND;
                                }
                        }
                } else {
-                       _mmcam_dbg_err("No audio stream source");
-                       info->b_commiting = FALSE;
+                       MMCAM_LOG_ERROR("No audio stream source");
+                       info->b_committing = FALSE;
                        ret = MM_ERROR_CAMCORDER_INTERNAL;
                        goto _ERR_CAMCORDER_AUDIO_COMMAND;
                }
 
                /* wait until finishing EOS */
-               _mmcam_dbg_log("Start to wait EOS");
+               MMCAM_LOG_INFO("Start to wait EOS");
                if ((ret = _mmcamcorder_get_eos_message(handle)) != MM_ERROR_NONE) {
-                       info->b_commiting = FALSE;
+                       info->b_committing = FALSE;
                        goto _ERR_CAMCORDER_AUDIO_COMMAND;
                }
                break;
@@ -646,7 +601,7 @@ int _mmcamcorder_audio_handle_eos(MMHandleType handle)
        mmf_return_val_if_fail(sc, FALSE);
        mmf_return_val_if_fail(sc->info_audio, FALSE);
 
-       _mmcam_dbg_err("");
+       MMCAM_LOG_ERROR("");
 
        info = sc->info_audio;
 
@@ -654,15 +609,11 @@ int _mmcamcorder_audio_handle_eos(MMHandleType handle)
 
        err = _mmcamcorder_gst_set_state(handle, pipeline, GST_STATE_READY);
        if (err != MM_ERROR_NONE)
-               _mmcam_dbg_warn("Failed:_MMCamcorder_CMD_COMMIT:GST_STATE_READY. err[%x]", err);
+               MMCAM_LOG_WARNING("Failed:_MMCamcorder_CMD_COMMIT:GST_STATE_READY. err[%x]", err);
 
        /* Send recording report message to application */
        msg.id = MM_MESSAGE_CAMCORDER_AUDIO_CAPTURED;
-       report = (MMCamRecordingReport*) g_malloc(sizeof(MMCamRecordingReport));
-       if (!report) {
-               _mmcam_dbg_err("Recording report fail(%s). Out of memory.", info->filename);
-               return FALSE;
-       }
+       report = (MMCamRecordingReport *)g_malloc(sizeof(MMCamRecordingReport));
 
 /* START TAG HERE */
        /* MM_AUDIO_CODEC_AAC + MM_FILE_FORMAT_MP4 */
@@ -675,11 +626,10 @@ int _mmcamcorder_audio_handle_eos(MMHandleType handle)
 
        _mmcamcorder_send_message(handle, &msg);
 
-       if (info->bMuxing) {
+       if (info->bMuxing)
                MMCAMCORDER_G_OBJECT_SET(sc->encode_element[_MMCAMCORDER_ENCSINK_ENCBIN].gst, "block", FALSE);
-       } else {
+       else
                MMCAMCORDER_G_OBJECT_SET(sc->encode_element[_MMCAMCORDER_ENCSINK_AQUE].gst, "empty-buffers", FALSE);
-       }
 
        _mmcamcorder_gst_set_state(handle, pipeline, GST_STATE_NULL);
 
@@ -690,9 +640,9 @@ int _mmcamcorder_audio_handle_eos(MMHandleType handle)
 
        SAFE_G_FREE(info->filename);
 
-       _mmcam_dbg_err("_MMCamcorder_CMD_COMMIT : end");
+       MMCAM_LOG_ERROR("_MMCamcorder_CMD_COMMIT : end");
 
-       info->b_commiting = FALSE;
+       info->b_committing = FALSE;
 
        return TRUE;
 }
@@ -743,7 +693,7 @@ __mmcamcorder_get_decibel(unsigned char* raw, int size, MMCamcorderAudioFormat f
        }
 
        /*
-       _mmcam_dbg_log("size[%d],depthByte[%d],count[%d],rms[%f],db[%f]",
+       MMCAM_LOG_INFO("size[%d],depthByte[%d],count[%d],rms[%f],db[%f]",
                                        size, depthByte, count, rms, db);
        */
 
@@ -755,6 +705,7 @@ static GstPadProbeReturn __mmcamcorder_audio_dataprobe_voicerecorder(GstPad *pad
 {
        mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(u_data);
        double volume = 0.0;
+       int current_state = MM_CAMCORDER_STATE_NONE;
        int format = 0;
        int channel = 0;
        float curdcb = 0.0;
@@ -766,6 +717,12 @@ static GstPadProbeReturn __mmcamcorder_audio_dataprobe_voicerecorder(GstPad *pad
 
        mmf_return_val_if_fail(hcamcorder, GST_PAD_PROBE_OK);
 
+       current_state = _mmcamcorder_get_state((MMHandleType)hcamcorder);
+       if (current_state < MM_CAMCORDER_STATE_PREPARE) {
+               MMCAM_LOG_WARNING("Not ready for stream callback");
+               return GST_PAD_PROBE_OK;
+       }
+
        memset(&mapinfo, 0x0, sizeof(GstMapInfo));
 
        /* Set volume to audio input */
@@ -776,12 +733,15 @@ static GstPadProbeReturn __mmcamcorder_audio_dataprobe_voicerecorder(GstPad *pad
                NULL);
 
        if (err < 0) {
-               _mmcam_dbg_warn("Get attrs fail. (%s:%x)", err_name, err);
+               MMCAM_LOG_WARNING("Get attrs fail. (%s:%x)", err_name, err);
                SAFE_FREE(err_name);
-               return err;
+               return GST_PAD_PROBE_OK;
        }
 
-       gst_buffer_map(buffer, &mapinfo, GST_MAP_READWRITE);
+       if (!gst_buffer_map(buffer, &mapinfo, GST_MAP_READWRITE)) {
+               MMCAM_LOG_WARNING("map failed : buffer[%p]", buffer);
+               return GST_PAD_PROBE_OK;
+       }
 
        if (volume == 0)
                memset(mapinfo.data, 0, mapinfo.size);
@@ -793,37 +753,29 @@ static GstPadProbeReturn __mmcamcorder_audio_dataprobe_voicerecorder(GstPad *pad
        msg.param.rec_volume_dB = curdcb;
        _mmcamcorder_send_message((MMHandleType)hcamcorder, &msg);
 
-       /* CALL audio stream callback */
-       if ((hcamcorder->astream_cb) && buffer && mapinfo.data && mapinfo.size > 0) {
-               MMCamcorderAudioStreamDataType stream;
+       _MMCAMCORDER_LOCK_ASTREAM_CALLBACK(hcamcorder);
 
-               if (_mmcamcorder_get_state((MMHandleType)hcamcorder) < MM_CAMCORDER_STATE_PREPARE) {
-                       _mmcam_dbg_warn("Not ready for stream callback");
-                       gst_buffer_unmap(buffer, &mapinfo);
-                       return GST_PAD_PROBE_OK;
-               }
+       MMCAM_LOG_DEBUG("audio stream cb[%p][%"GST_TIME_FORMAT"] - fmt[%d], ch[%d], size[%"G_GSIZE_FORMAT"], dB[%f]",
+               hcamcorder->astream_cb, GST_TIME_ARGS(GST_BUFFER_PTS(buffer)), format, channel, mapinfo.size, curdcb);
 
-               /*
-               _mmcam_dbg_log("Call audio steramCb, data[%p], format[%d], channel[%d], length[%d], volume_dB[%f]",
-                       GST_BUFFER_DATA(buffer), format, channel, GST_BUFFER_SIZE(buffer), curdcb);
-               */
+       /* CALL audio stream callback */
+       if (hcamcorder->astream_cb) {
+               MMCamcorderAudioStreamDataType stream;
 
                stream.data = (void *)mapinfo.data;
                stream.format = format;
                stream.channel = channel;
                stream.length = mapinfo.size;
-               stream.timestamp = (unsigned int)(GST_BUFFER_PTS(buffer)/1000000);      /* nano -> msecond */
+               stream.timestamp = (unsigned int)(GST_TIME_AS_MSECONDS(GST_BUFFER_PTS(buffer)));
                stream.volume_dB = curdcb;
 
-               _MMCAMCORDER_LOCK_ASTREAM_CALLBACK(hcamcorder);
-
-               if (hcamcorder->astream_cb)
-                       hcamcorder->astream_cb(&stream, hcamcorder->astream_cb_param);
-
-               _MMCAMCORDER_UNLOCK_ASTREAM_CALLBACK(hcamcorder);
+               hcamcorder->astream_cb(&stream, hcamcorder->astream_cb_param);
        }
 
+       _MMCAMCORDER_UNLOCK_ASTREAM_CALLBACK(hcamcorder);
+
        gst_buffer_unmap(buffer, &mapinfo);
+
        return GST_PAD_PROBE_OK;
 }
 
@@ -852,7 +804,7 @@ static GstPadProbeReturn __mmcamcorder_audio_dataprobe_record(GstPad *pad, GstPa
        audioinfo = sc->info_audio;
 
        if (sc->isMaxtimePausing || sc->isMaxsizePausing) {
-               _mmcam_dbg_warn("isMaxtimePausing[%d],isMaxsizePausing[%d]",
+               MMCAM_LOG_WARNING("isMaxtimePausing[%d],isMaxsizePausing[%d]",
                        sc->isMaxtimePausing, sc->isMaxsizePausing);
                return GST_PAD_PROBE_DROP;
        }
@@ -870,7 +822,7 @@ static GstPadProbeReturn __mmcamcorder_audio_dataprobe_record(GstPad *pad, GstPa
        }
 
        if (sc->ferror_send) {
-               _mmcam_dbg_warn("file write error, drop frames");
+               MMCAM_LOG_WARNING("file write error, drop frames");
                return GST_PAD_PROBE_DROP;
        }
 
@@ -881,7 +833,7 @@ static GstPadProbeReturn __mmcamcorder_audio_dataprobe_record(GstPad *pad, GstPa
                audioinfo->fileformat == MM_FILE_FORMAT_AAC) ? TRUE : FALSE;
        if (get_trailer_size) {
                MMCAMCORDER_G_OBJECT_GET(sc->encode_element[_MMCAMCORDER_ENCSINK_MUX].gst, "expected-trailer-size", &trailer_size);
-               /*_mmcam_dbg_log("trailer_size %d", trailer_size);*/
+               MMCAM_LOG_VERBOSE("trailer_size %"G_GUINT64_FORMAT, trailer_size);
        } else {
                trailer_size = 0; /* no trailer */
        }
@@ -895,7 +847,7 @@ static GstPadProbeReturn __mmcamcorder_audio_dataprobe_record(GstPad *pad, GstPa
                /* check free space */
                free_space_ret = _mmcamcorder_get_freespace(hcamcorder->storage_info.type, &free_space);
                if (free_space_ret != 0) {
-                       _mmcam_dbg_err("Error occured. [%d]", free_space_ret);
+                       MMCAM_LOG_ERROR("Error occurred. [%d]", free_space_ret);
                        if (sc->ferror_count == 2 && sc->ferror_send == FALSE) {
                                sc->ferror_send = TRUE;
 
@@ -914,16 +866,16 @@ static GstPadProbeReturn __mmcamcorder_audio_dataprobe_record(GstPad *pad, GstPa
                        /* check storage state */
                        storage_get_state(hcamcorder->storage_info.id, &storage_state);
 
-                       _mmcam_dbg_warn("storage state %d", storage_state);
+                       MMCAM_LOG_WARNING("storage state %d", storage_state);
 
                        if (storage_state == STORAGE_STATE_REMOVED ||
                                storage_state == STORAGE_STATE_UNMOUNTABLE) {
-                               _mmcam_dbg_err("storage was removed!");
+                               MMCAM_LOG_ERROR("storage was removed!");
 
                                _MMCAMCORDER_LOCK(hcamcorder);
 
                                if (sc->ferror_send == FALSE) {
-                                       _mmcam_dbg_err("OUT_OF_STORAGE error");
+                                       MMCAM_LOG_ERROR("OUT_OF_STORAGE error");
 
                                        sc->ferror_send = TRUE;
 
@@ -935,7 +887,7 @@ static GstPadProbeReturn __mmcamcorder_audio_dataprobe_record(GstPad *pad, GstPa
                                        _mmcamcorder_send_message((MMHandleType)hcamcorder, &msg);
                                } else {
                                        _MMCAMCORDER_UNLOCK(hcamcorder);
-                                       _mmcam_dbg_warn("error was already sent");
+                                       MMCAM_LOG_WARNING("error was already sent");
                                }
 
                                return GST_PAD_PROBE_DROP;
@@ -943,15 +895,14 @@ static GstPadProbeReturn __mmcamcorder_audio_dataprobe_record(GstPad *pad, GstPa
                }
 
                if (free_space < (guint64)(_MMCAMCORDER_AUDIO_MINIMUM_SPACE + buffer_size + trailer_size)) {
-                       _mmcam_dbg_warn("No more space for recording!!!");
-                       _mmcam_dbg_warn("Free Space : [%" G_GUINT64_FORMAT "], file size : [%" G_GUINT64_FORMAT "]",
+                       MMCAM_LOG_WARNING("No more space for recording!!!");
+                       MMCAM_LOG_WARNING("Free Space : [%" G_GUINT64_FORMAT "], file size : [%" G_GUINT64_FORMAT "]",
                                free_space, audioinfo->filesize);
 
-                       if (audioinfo->bMuxing) {
+                       if (audioinfo->bMuxing)
                                MMCAMCORDER_G_OBJECT_SET(sc->encode_element[_MMCAMCORDER_ENCSINK_ENCBIN].gst, "block", TRUE);
-                       } else {
+                       else
                                MMCAMCORDER_G_OBJECT_SET(sc->encode_element[_MMCAMCORDER_ENCSINK_AQUE].gst, "empty-buffers", TRUE);
-                       }
 
                        sc->isMaxsizePausing = TRUE;
                        msg.id = MM_MESSAGE_CAMCORDER_NO_FREE_SPACE;
@@ -962,7 +913,7 @@ static GstPadProbeReturn __mmcamcorder_audio_dataprobe_record(GstPad *pad, GstPa
        }
 
        if (!GST_CLOCK_TIME_IS_VALID(GST_BUFFER_PTS(buffer))) {
-               _mmcam_dbg_err("Buffer timestamp is invalid, check it");
+               MMCAM_LOG_ERROR("Buffer timestamp is invalid, check it");
                return GST_PAD_PROBE_DROP;
        }
 
@@ -978,21 +929,18 @@ static GstPadProbeReturn __mmcamcorder_audio_dataprobe_record(GstPad *pad, GstPa
                remained_time = (unsigned long long)((long double)rec_pipe_time * (max_size/current_size)) - rec_pipe_time;
        }
 
-       /*_mmcam_dbg_log("remained time : %u", remained_time);*/
-
        /* check max size of recorded file */
        if (audioinfo->max_size > 0 &&
                        audioinfo->max_size < audioinfo->filesize + buffer_size + trailer_size + _MMCAMCORDER_MMS_MARGIN_SPACE) {
-               _mmcam_dbg_warn("Max size!!! Recording is paused.");
-               _mmcam_dbg_warn("Max [%" G_GUINT64_FORMAT "], file [%" G_GUINT64_FORMAT "], trailer : [%" G_GUINT64_FORMAT "]", \
+               MMCAM_LOG_WARNING("Max size!!! Recording is paused.");
+               MMCAM_LOG_WARNING("Max [%" G_GUINT64_FORMAT "], file [%" G_GUINT64_FORMAT "], trailer : [%" G_GUINT64_FORMAT "]", \
                        audioinfo->max_size, audioinfo->filesize, trailer_size);
 
                /* just same as pause status. After blocking two queue, this function will not call again. */
-               if (audioinfo->bMuxing) {
+               if (audioinfo->bMuxing)
                        MMCAMCORDER_G_OBJECT_SET(sc->encode_element[_MMCAMCORDER_ENCSINK_ENCBIN].gst, "block", TRUE);
-               } else {
+               else
                        MMCAMCORDER_G_OBJECT_SET(sc->encode_element[_MMCAMCORDER_ENCSINK_AQUE].gst, "empty-buffers", TRUE);
-               }
 
                msg.id = MM_MESSAGE_CAMCORDER_RECORDING_STATUS;
                msg.param.recording_status.elapsed = (unsigned long long)rec_pipe_time;
@@ -1000,7 +948,7 @@ static GstPadProbeReturn __mmcamcorder_audio_dataprobe_record(GstPad *pad, GstPa
                msg.param.recording_status.remained_time = 0;
                _mmcamcorder_send_message((MMHandleType)hcamcorder, &msg);
 
-               _mmcam_dbg_warn("Last filesize sent by message : %d", audioinfo->filesize + trailer_size);
+               MMCAM_LOG_WARNING("Last filesize sent by message : %"G_GUINT64_FORMAT, audioinfo->filesize + trailer_size);
 
                sc->isMaxsizePausing = TRUE;
                msg.id = MM_MESSAGE_CAMCORDER_MAX_SIZE;
@@ -1012,14 +960,13 @@ static GstPadProbeReturn __mmcamcorder_audio_dataprobe_record(GstPad *pad, GstPa
 
        /* check recording time limit and send recording status message */
        if (audioinfo->max_time > 0 && rec_pipe_time > audioinfo->max_time) {
-               _mmcam_dbg_warn("Current time : [%" G_GUINT64_FORMAT "], Maximum time : [%" G_GUINT64_FORMAT "]", \
-                       rec_pipe_time, audioinfo->max_time);
+               MMCAM_LOG_WARNING("Current time : [%"GST_TIME_FORMAT"], Maximum time : [%"GST_TIME_FORMAT"]",
+                       GST_TIME_ARGS(GST_BUFFER_PTS(buffer)), GST_TIME_ARGS(audioinfo->max_time * GST_MSECOND));
 
-               if (audioinfo->bMuxing) {
+               if (audioinfo->bMuxing)
                        MMCAMCORDER_G_OBJECT_SET(sc->encode_element[_MMCAMCORDER_ENCSINK_ENCBIN].gst, "block", TRUE);
-               } else {
+               else
                        MMCAMCORDER_G_OBJECT_SET(sc->encode_element[_MMCAMCORDER_ENCSINK_AQUE].gst, "empty-buffers", TRUE);
-               }
 
                sc->isMaxtimePausing = TRUE;
                msg.id = MM_MESSAGE_CAMCORDER_TIME_LIMIT;
@@ -1030,13 +977,17 @@ static GstPadProbeReturn __mmcamcorder_audio_dataprobe_record(GstPad *pad, GstPa
        }
 
        /* send message for recording time and recorded file size */
-       if (audioinfo->b_commiting == FALSE) {
+       if (audioinfo->b_committing == FALSE) {
                audioinfo->filesize += buffer_size;
 
                msg.id = MM_MESSAGE_CAMCORDER_RECORDING_STATUS;
                msg.param.recording_status.elapsed = (unsigned long long)rec_pipe_time;
                msg.param.recording_status.filesize = (unsigned long long)((audioinfo->filesize + trailer_size) >> 10);
                msg.param.recording_status.remained_time = remained_time;
+
+               MMCAM_LOG_DEBUG("audio rec[%"GST_TIME_FORMAT"], size[%"G_GUINT64_FORMAT"(trailer:%"G_GUINT64_FORMAT")]",
+                       GST_TIME_ARGS(GST_BUFFER_PTS(buffer)), audioinfo->filesize + trailer_size, trailer_size);
+
                _mmcamcorder_send_message((MMHandleType)hcamcorder, &msg);
 
                return GST_PAD_PROBE_OK;
@@ -1097,7 +1048,7 @@ static gboolean __mmcamcorder_audio_add_metadata_info_m4a(MMHandleType handle)
        f = fopen64(info->filename, "rb+");
        if (f == NULL) {
                strerror_r(errno, err_msg, 128);
-               _mmcam_dbg_err("file open failed [%s]", err_msg);
+               MMCAM_LOG_ERROR("file open failed [%s]", err_msg);
                return FALSE;
        }
 
@@ -1107,7 +1058,7 @@ static gboolean __mmcamcorder_audio_add_metadata_info_m4a(MMHandleType handle)
        if (_mmcamcorder_find_fourcc(f, MMCAM_FOURCC('u', 'd', 't', 'a'), TRUE)) {
                size_t nread = 0;
 
-               _mmcam_dbg_log("find udta container");
+               MMCAM_LOG_INFO("find udta container");
 
                /* read size */
                if (fseek(f, -8L, SEEK_CUR) != 0)
@@ -1119,7 +1070,7 @@ static gboolean __mmcamcorder_audio_add_metadata_info_m4a(MMHandleType handle)
 
                nread = fread(&buf, sizeof(char), sizeof(buf), f);
 
-               _mmcam_dbg_log("recorded file fread %d", nread);
+               MMCAM_LOG_INFO("recorded file fread %zu", nread);
 
                udta_size = _mmcamcorder_get_container_size(buf);
 
@@ -1142,7 +1093,7 @@ static gboolean __mmcamcorder_audio_add_metadata_info_m4a(MMHandleType handle)
                if (!_mmcamcorder_update_size(f, udta_pos, current_pos))
                        goto fail;
        } else {
-               _mmcam_dbg_log("No udta container");
+               MMCAM_LOG_INFO("No udta container");
                if (fseek(f, 0, SEEK_END) != 0)
                        goto fail;
 
@@ -1157,7 +1108,7 @@ static gboolean __mmcamcorder_audio_add_metadata_info_m4a(MMHandleType handle)
 
        if (_mmcamcorder_find_fourcc(f, MMCAM_FOURCC('m', 'o', 'o', 'v'), TRUE)) {
 
-               _mmcam_dbg_log("found moov container");
+               MMCAM_LOG_INFO("found moov container");
                if (fseek(f, -8L, SEEK_CUR) != 0)
                        goto fail;
 
@@ -1169,7 +1120,7 @@ static gboolean __mmcamcorder_audio_add_metadata_info_m4a(MMHandleType handle)
                        goto fail;
 
        } else {
-               _mmcam_dbg_err("No 'moov' container");
+               MMCAM_LOG_ERROR("No 'moov' container");
                goto fail;
        }
 
@@ -1182,7 +1133,7 @@ fail:
        return FALSE;
 
 ftell_fail:
-       _mmcam_dbg_err("ftell() returns negative value.");
+       MMCAM_LOG_ERROR("ftell() returns negative value.");
        fclose(f);
        return FALSE;
 }