[libmm-camcorder] g_free and g_printf function fixes
[platform/core/multimedia/libmm-camcorder.git] / src / mm_camcorder_audiorec.c
index 7281018..4cfbb72 100644 (file)
@@ -349,10 +349,7 @@ _mmcamcorder_audio_command(MMHandleType handle, int command)
        int cmd = command;
        int ret = MM_ERROR_NONE;
        int err = 0;
-       int size=0;
        guint64 free_space = 0;
-       guint64 free_space_exceptsystem = 0;
-       char *dir_name = NULL;
        char *err_attr_name = NULL;
 
        GstElement *pipeline = NULL;
@@ -382,7 +379,10 @@ _mmcamcorder_audio_command(MMHandleType handle, int command)
                        guint imax_size = 0;
                        guint imax_time = 0;
                        char *temp_filename = NULL;
+                       char *dir_name = NULL;
                        int file_system_type = 0;
+                       int filename_length = 0;
+                       int root_directory_length = 0;
 
                        if(sc->pipeline_time) {
                                gst_element_set_start_time(pipeline, sc->pipeline_time);
@@ -393,7 +393,8 @@ _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, &size,
+                                                         MMCAM_TARGET_FILENAME, &temp_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);
@@ -407,7 +408,7 @@ _mmcamcorder_audio_command(MMHandleType handle, int command)
                                goto _ERR_CAMCORDER_AUDIO_COMMAND;
                        }
 
-                       info->filename = strdup(temp_filename);
+                       info->filename = g_strdup(temp_filename);
                        if (!info->filename) {
                                _mmcam_dbg_err("STRDUP was failed");
                                goto _ERR_CAMCORDER_AUDIO_COMMAND;
@@ -415,7 +416,7 @@ _mmcamcorder_audio_command(MMHandleType handle, int command)
 
                        _mmcam_dbg_log("Record start : set file name using attribute - %s\n ",info->filename);
 
-                       MMCAMCORDER_G_OBJECT_SET(sc->encode_element[_MMCAMCORDER_ENCSINK_SINK].gst, "location", info->filename);
+                       MMCAMCORDER_G_OBJECT_SET_POINTER(sc->encode_element[_MMCAMCORDER_ENCSINK_SINK].gst, "location", info->filename);
 
                        sc->ferror_send = FALSE;
                        sc->ferror_count = 0;
@@ -439,18 +440,9 @@ _mmcamcorder_audio_command(MMHandleType handle, int command)
                        /* TODO : check free space before recording start */
                        dir_name = g_path_get_dirname(info->filename);
                        if (dir_name) {
-                               err = _mmcamcorder_get_freespace(dir_name, &free_space);
-                               if(_mmcamcorder_check_file_path(dir_name)) {
-                                       if (_mmcamcorder_get_freespace_except_system(&free_space_exceptsystem) == MM_ERROR_NONE) {
-                                               hcamcorder->system_memory = free_space - free_space_exceptsystem;
-                                               free_space = free_space - hcamcorder->system_memory;
-                                       } else {
-                                               hcamcorder->system_memory = 0;
-                                       }
-                               }
+                               err = _mmcamcorder_get_freespace(dir_name, hcamcorder->root_directory, &free_space);
 
-                               _mmcam_dbg_warn("current space - %s [%" G_GUINT64_FORMAT "], system [%" G_GUINT64_FORMAT "]",
-                                               dir_name, free_space, hcamcorder->system_memory);
+                               _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 */
@@ -549,8 +541,7 @@ _mmcamcorder_audio_command(MMHandleType handle, int command)
                if (info->filename) {
                        _mmcam_dbg_log("file delete(%s)", info->filename);
                        unlink(info->filename);
-                       g_free(info->filename);
-                       info->filename = NULL;
+                       SAFE_G_FREE(info->filename);
                }
                break;
 
@@ -583,7 +574,15 @@ _mmcamcorder_audio_command(MMHandleType handle, int command)
                }
 
                if (audioSrc) {
-                       ret = gst_element_send_event(audioSrc, gst_event_new_eos());
+                       if (gst_element_send_event(audioSrc, gst_event_new_eos()) == FALSE) {
+                               _mmcam_dbg_err("send EOS failed");
+                               info->b_commiting = FALSE;
+                               ret = MM_ERROR_CAMCORDER_INTERNAL;
+                               goto _ERR_CAMCORDER_AUDIO_COMMAND;
+                       }
+
+                       _mmcam_dbg_log("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);
@@ -592,6 +591,11 @@ _mmcamcorder_audio_command(MMHandleType handle, int command)
                                        goto _ERR_CAMCORDER_AUDIO_COMMAND;
                                }
                        }
+               } else {
+                       _mmcam_dbg_err("No audio stream source");
+                       info->b_commiting = FALSE;
+                       ret = MM_ERROR_CAMCORDER_INTERNAL;
+                       goto _ERR_CAMCORDER_AUDIO_COMMAND;
                }
 
                /* wait until finishing EOS */
@@ -650,7 +654,7 @@ int _mmcamcorder_audio_handle_eos(MMHandleType handle)
 
        /* Send recording report message to application */
        msg.id = MM_MESSAGE_CAMCORDER_AUDIO_CAPTURED;
-       report = (MMCamRecordingReport*) malloc(sizeof(MMCamRecordingReport));
+       report = (MMCamRecordingReport*) g_malloc(sizeof(MMCamRecordingReport));
        if (!report) {
                _mmcam_dbg_err("Recording report fail(%s). Out of memory.", info->filename);
                return FALSE;
@@ -663,7 +667,7 @@ int _mmcamcorder_audio_handle_eos(MMHandleType handle)
        }
 /* END TAG HERE */
 
-       report->recording_filename = strdup(info->filename);
+       report->recording_filename = g_strdup(info->filename);
        msg.param.data= report;
 
        _mmcamcorder_send_message(handle, &msg);
@@ -681,8 +685,7 @@ int _mmcamcorder_audio_handle_eos(MMHandleType handle)
        sc->isMaxsizePausing = FALSE;
        sc->isMaxtimePausing = FALSE;
 
-       g_free(info->filename);
-       info->filename = NULL;
+       SAFE_G_FREE(info->filename);
 
        _mmcam_dbg_err("_MMCamcorder_CMD_COMMIT : end");
 
@@ -732,7 +735,7 @@ __mmcamcorder_get_decibel(unsigned char* raw, int size, MMCamcorderAudioFormat f
        }
 
        if (count > 0) {
-               rms = sqrt( square_sum/count );
+               rms = sqrt( (double)square_sum/(double)count );
                if (depthByte == 1) {
                        db = 20 * log10( rms/MAX_AMPLITUDE_MEAN_08BIT );
                } else {
@@ -892,10 +895,16 @@ static GstPadProbeReturn __mmcamcorder_audio_dataprobe_record(GstPad *pad, GstPa
        /* to minimizing free space check overhead */
        count = count % _MMCAMCORDER_FREE_SPACE_CHECK_INTERVAL;
        if (count++ == 0) {
-               gint free_space_ret = _mmcamcorder_get_freespace(filename, &free_space);
+               char *dir_name = g_path_get_dirname(filename);
+               gint free_space_ret = 0;
 
-               if(_mmcamcorder_check_file_path(filename) && hcamcorder->system_memory) {
-                       free_space = free_space - hcamcorder->system_memory;
+               if (dir_name) {
+                       free_space_ret = _mmcamcorder_get_freespace(dir_name, hcamcorder->root_directory, &free_space);
+                       g_free(dir_name);
+                       dir_name = NULL;
+               } else {
+                       _mmcam_dbg_err("failed to get dir name from [%s]", filename);
+                       free_space_ret = -1;
                }
 
                /*_mmcam_dbg_log("check free space for recording");*/
@@ -1038,7 +1047,6 @@ static gboolean __mmcamcorder_audio_add_metadata_info_m4a(MMHandleType handle)
        gint64 udta_pos = 0;
        // supporting audio geo tag for mobile
        int gps_enable = 0;
-       char *err_name = NULL;
        gdouble longitude = 0;
        gdouble latitude = 0;
        gdouble altitude = 0;
@@ -1058,12 +1066,12 @@ static gboolean __mmcamcorder_audio_add_metadata_info_m4a(MMHandleType handle)
        mmf_return_val_if_fail(sc->info_audio, MM_ERROR_CAMCORDER_NOT_INITIALIZED);
 
        info = sc->info_audio;
-       mm_camcorder_get_attributes(handle, &err_name,
+       mm_camcorder_get_attributes(handle, NULL,
                                    MMCAM_TAG_GPS_ENABLE, &gps_enable,
                                    NULL);
 
        if (gps_enable) {
-               mm_camcorder_get_attributes(handle, &err_name,
+               mm_camcorder_get_attributes(handle, NULL,
                                            MMCAM_TAG_LATITUDE, &latitude,
                                            MMCAM_TAG_LONGITUDE, &longitude,
                                            MMCAM_TAG_ALTITUDE, &altitude,
@@ -1080,10 +1088,6 @@ static gboolean __mmcamcorder_audio_add_metadata_info_m4a(MMHandleType handle)
        if (f == NULL) {
                strerror_r(errno, err_msg, 128);
                _mmcam_dbg_err("file open failed [%s]", err_msg);
-               if (err_name) {
-                       free(err_name);
-                       err_name = NULL;
-               }
                return FALSE;
        }
 
@@ -1173,27 +1177,16 @@ static gboolean __mmcamcorder_audio_add_metadata_info_m4a(MMHandleType handle)
        }
 
        fclose(f);
-       if (err_name) {
-               free(err_name);
-               err_name = NULL;
-       }
+
        return TRUE;
 
 fail:
        fclose(f);
-       if (err_name) {
-               free(err_name);
-               err_name = NULL;
-       }
        return FALSE;
 
 ftell_fail:
        _mmcam_dbg_err("ftell() returns negative value.");
        fclose(f);
-       if (err_name) {
-               free(err_name);
-               err_name = NULL;
-       }
        return FALSE;
 }