X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fmm_camcorder_audiorec.c;h=8362140a94d0a2cf07db84579e4dd60a5cde8813;hb=refs%2Ftags%2Fsubmit%2Ftizen%2F20160121.080042;hp=4bb2253970cb93efa6901f9f5a8c18ade938385e;hpb=c8f57d6b6b2d7fc65adeedb5acd6eae45d28537f;p=platform%2Fcore%2Fmultimedia%2Flibmm-camcorder.git diff --git a/src/mm_camcorder_audiorec.c b/src/mm_camcorder_audiorec.c index 4bb2253..8362140 100644 --- a/src/mm_camcorder_audiorec.c +++ b/src/mm_camcorder_audiorec.c @@ -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); @@ -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 */ @@ -583,7 +575,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 +592,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 */ @@ -666,7 +671,7 @@ int _mmcamcorder_audio_handle_eos(MMHandleType handle) report->recording_filename = strdup(info->filename); msg.param.data= report; - _mmcamcroder_send_message(handle, &msg); + _mmcamcorder_send_message(handle, &msg); if (info->bMuxing) { MMCAMCORDER_G_OBJECT_SET(sc->encode_element[_MMCAMCORDER_ENCSINK_ENCBIN].gst, "block", FALSE); @@ -732,7 +737,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 { @@ -789,7 +794,7 @@ static GstPadProbeReturn __mmcamcorder_audio_dataprobe_voicerecorder(GstPad *pad msg.id = MM_MESSAGE_CAMCORDER_CURRENT_VOLUME; msg.param.rec_volume_dB = curdcb; - _mmcamcroder_send_message((MMHandleType)hcamcorder, &msg); + _mmcamcorder_send_message((MMHandleType)hcamcorder, &msg); /* CALL audio stream callback */ if ((hcamcorder->astream_cb) && buffer && mapinfo.data && mapinfo.size > 0) @@ -892,10 +897,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");*/ @@ -912,7 +923,7 @@ static GstPadProbeReturn __mmcamcorder_audio_dataprobe_record(GstPad *pad, GstPa } else { msg.param.code = MM_ERROR_FILE_READ; } - _mmcamcroder_send_message((MMHandleType)hcamcorder, &msg); + _mmcamcorder_send_message((MMHandleType)hcamcorder, &msg); } else { sc->ferror_count++; } @@ -934,7 +945,7 @@ static GstPadProbeReturn __mmcamcorder_audio_dataprobe_record(GstPad *pad, GstPa sc->isMaxsizePausing = TRUE; msg.id = MM_MESSAGE_CAMCORDER_NO_FREE_SPACE; - _mmcamcroder_send_message((MMHandleType)hcamcorder, &msg); + _mmcamcorder_send_message((MMHandleType)hcamcorder, &msg); return GST_PAD_PROBE_DROP; /* skip this buffer */ } @@ -979,13 +990,13 @@ static GstPadProbeReturn __mmcamcorder_audio_dataprobe_record(GstPad *pad, GstPa 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 = 0; - _mmcamcroder_send_message((MMHandleType)hcamcorder, &msg); + _mmcamcorder_send_message((MMHandleType)hcamcorder, &msg); _mmcam_dbg_warn("Last filesize sent by message : %d", audioinfo->filesize + trailer_size); sc->isMaxsizePausing = TRUE; msg.id = MM_MESSAGE_CAMCORDER_MAX_SIZE; - _mmcamcroder_send_message((MMHandleType)hcamcorder, &msg); + _mmcamcorder_send_message((MMHandleType)hcamcorder, &msg); /* skip this buffer */ return GST_PAD_PROBE_DROP; @@ -1004,7 +1015,7 @@ static GstPadProbeReturn __mmcamcorder_audio_dataprobe_record(GstPad *pad, GstPa sc->isMaxtimePausing = TRUE; msg.id = MM_MESSAGE_CAMCORDER_TIME_LIMIT; - _mmcamcroder_send_message((MMHandleType)hcamcorder, &msg); + _mmcamcorder_send_message((MMHandleType)hcamcorder, &msg); /* skip this buffer */ return GST_PAD_PROBE_DROP; @@ -1018,7 +1029,7 @@ static GstPadProbeReturn __mmcamcorder_audio_dataprobe_record(GstPad *pad, GstPa 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; - _mmcamcroder_send_message((MMHandleType)hcamcorder, &msg); + _mmcamcorder_send_message((MMHandleType)hcamcorder, &msg); return GST_PAD_PROBE_OK; } else { @@ -1038,7 +1049,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 +1068,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, @@ -1076,14 +1086,10 @@ static gboolean __mmcamcorder_audio_add_metadata_info_m4a(MMHandleType handle) geo_info.altitude = altitude *10000; } - f = fopen(info->filename, "rb+"); + f = fopen64(info->filename, "rb+"); 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; } @@ -1100,7 +1106,7 @@ static gboolean __mmcamcorder_audio_add_metadata_info_m4a(MMHandleType handle) goto fail; } - udta_pos = ftell(f); + udta_pos = ftello(f); if (udta_pos < 0) { goto ftell_fail; } @@ -1126,7 +1132,7 @@ static gboolean __mmcamcorder_audio_add_metadata_info_m4a(MMHandleType handle) } } - current_pos = ftell(f); + current_pos = ftello(f); if (current_pos < 0) { goto ftell_fail; } @@ -1147,7 +1153,7 @@ static gboolean __mmcamcorder_audio_add_metadata_info_m4a(MMHandleType handle) /* find moov container. update moov container size. */ - if((current_pos = ftell(f))<0) + if((current_pos = ftello(f))<0) goto ftell_fail; if (_mmcamcorder_find_fourcc(f, MMCAM_FOURCC('m','o','o','v'), TRUE)) { @@ -1157,7 +1163,7 @@ static gboolean __mmcamcorder_audio_add_metadata_info_m4a(MMHandleType handle) goto fail; } - moov_pos = ftell(f); + moov_pos = ftello(f); if (moov_pos < 0) { goto ftell_fail; } @@ -1173,27 +1179,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; }