diff options
author | Jeongmo Yang <jm80.yang@samsung.com> | 2017-09-05 16:40:25 +0900 |
---|---|---|
committer | Jeongmo Yang <jm80.yang@samsung.com> | 2017-09-05 16:40:35 +0900 |
commit | 153ada9ac44c730317f6dd193c7328338f38a8a8 (patch) | |
tree | 1eb260bf13f978382dd90768ad10a21a204f3ed3 | |
parent | 3fdff5cc8c26798af70c4c97f34d8cbbc080b0d2 (diff) | |
parent | 1feba48951f569c00e2e69cb1a27ba5e20cc9e1f (diff) | |
download | libmm-camcorder-accepted/tizen/4.0/unified/20170908.221719.tar.gz libmm-camcorder-accepted/tizen/4.0/unified/20170908.221719.tar.bz2 libmm-camcorder-accepted/tizen/4.0/unified/20170908.221719.zip |
Merge branch 'tizen' into tizen_4.0submit/tizen_4.0/20170907.073558accepted/tizen/4.0/unified/20170908.221719
Change-Id: I266ef809156fda3bf1a946786e20a58d790deb6f
Signed-off-by: Jeongmo Yang <jm80.yang@samsung.com>
-rw-r--r-- | packaging/libmm-camcorder.spec | 2 | ||||
-rw-r--r-- | src/include/mm_camcorder_exifinfo.h | 2 | ||||
-rw-r--r-- | src/mm_camcorder_attribute.c | 12 | ||||
-rw-r--r-- | src/mm_camcorder_audiorec.c | 9 | ||||
-rw-r--r-- | src/mm_camcorder_exifinfo.c | 2 | ||||
-rw-r--r-- | src/mm_camcorder_stillshot.c | 4 | ||||
-rw-r--r-- | src/mm_camcorder_videorec.c | 9 |
7 files changed, 36 insertions, 4 deletions
diff --git a/packaging/libmm-camcorder.spec b/packaging/libmm-camcorder.spec index 41ea26f..d804c54 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.130 +Version: 0.10.133 Release: 0 Group: Multimedia/Libraries License: Apache-2.0 diff --git a/src/include/mm_camcorder_exifinfo.h b/src/include/mm_camcorder_exifinfo.h index 8db85e1..22a71d7 100644 --- a/src/include/mm_camcorder_exifinfo.h +++ b/src/include/mm_camcorder_exifinfo.h @@ -122,7 +122,7 @@ int mm_exif_add_thumbnail_info(mm_exif_info_t *info, void *thumbnail, * @return return int. */ int mm_exif_write_exif_jpeg_to_memory(void **mem, unsigned int *length, - mm_exif_info_t *info, void *jpeg, + mm_exif_info_t *info, unsigned char *jpeg, unsigned int jpeg_len); /** diff --git a/src/mm_camcorder_attribute.c b/src/mm_camcorder_attribute.c index bc6799e..4e80004 100644 --- a/src/mm_camcorder_attribute.c +++ b/src/mm_camcorder_attribute.c @@ -2004,6 +2004,7 @@ bool _mmcamcorder_commit_capture_break_cont_shot(MMHandleType handle, int attr_i const char *videosrc_name = NULL; mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(handle); _MMCamcorderSubContext *sc = NULL; + _MMCamcorderImageInfo *info = NULL; GstCameraControl *control = NULL; type_element *VideosrcElement = NULL; @@ -2022,7 +2023,18 @@ bool _mmcamcorder_commit_capture_break_cont_shot(MMHandleType handle, int attr_i if (!sc) return TRUE; + info = sc->info_image; + if (!info) { + _mmcam_dbg_err("info image is NULL"); + return FALSE; + } + if (ivalue && current_state == MM_CAMCORDER_STATE_CAPTURING) { + if (info->capture_send_count > 0) { + info->capturing = FALSE; + _mmcam_dbg_warn("capturing -> FALSE and skip capture callback since now"); + } + if (!GST_IS_CAMERA_CONTROL(sc->element[_MMCAMCORDER_VIDEOSRC_SRC].gst)) { _mmcam_dbg_warn("Can't cast Video source into camera control."); return TRUE; diff --git a/src/mm_camcorder_audiorec.c b/src/mm_camcorder_audiorec.c index 14b2337..f0df3e4 100644 --- a/src/mm_camcorder_audiorec.c +++ b/src/mm_camcorder_audiorec.c @@ -532,7 +532,7 @@ _mmcamcorder_audio_command(MMHandleType handle, int command) case _MMCamcorder_CMD_COMMIT: { int count = 0; - + guint64 free_space = 0; _mmcam_dbg_log("_MMCamcorder_CMD_COMMIT"); if (info->b_commiting) { @@ -557,6 +557,13 @@ _mmcamcorder_audio_command(MMHandleType handle, int command) usleep(_MMCAMCORDER_FRAME_WAIT_TIME); } + _mmcamcorder_get_freespace(hcamcorder->storage_info.type, &free_space); + if (free_space < _MMCAMCORDER_AUDIO_MINIMUM_SPACE) { + _mmcam_dbg_warn("_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"); diff --git a/src/mm_camcorder_exifinfo.c b/src/mm_camcorder_exifinfo.c index 3f974ac..4c66a3b 100644 --- a/src/mm_camcorder_exifinfo.c +++ b/src/mm_camcorder_exifinfo.c @@ -406,7 +406,7 @@ exit: int -mm_exif_write_exif_jpeg_to_memory(void **mem, unsigned int *length, mm_exif_info_t *info, void *jpeg, unsigned int jpeg_len) +mm_exif_write_exif_jpeg_to_memory(void **mem, unsigned int *length, mm_exif_info_t *info, unsigned char *jpeg, unsigned int jpeg_len) { unsigned short head[2] = {0,}; unsigned short head_len = 0; diff --git a/src/mm_camcorder_stillshot.c b/src/mm_camcorder_stillshot.c index 0539c50..f6d1b7d 100644 --- a/src/mm_camcorder_stillshot.c +++ b/src/mm_camcorder_stillshot.c @@ -1209,6 +1209,10 @@ static void __mmcamcorder_image_capture_cb(GstElement *element, GstSample *sampl if (!info->capturing || stop_cont_shot) { _mmcam_dbg_warn("stop command[%d] or not capturing state[%d]. skip this...", stop_cont_shot, info->capturing); + /* set FALSE here for the case that info->capturing is still FALSE + (== capture_send_count is 0 at the time _mmcamcorder_commit_capture_break_cont_shot is called) */ + info->capturing = FALSE; + /*free GstBuffer*/ if (sample1) gst_sample_unref(sample1); diff --git a/src/mm_camcorder_videorec.c b/src/mm_camcorder_videorec.c index 5d1f681..aad50b2 100644 --- a/src/mm_camcorder_videorec.c +++ b/src/mm_camcorder_videorec.c @@ -1071,6 +1071,8 @@ int _mmcamcorder_video_command(MMHandleType handle, int command) } case _MMCamcorder_CMD_COMMIT: { + guint64 free_space; + if (info->b_commiting) { _mmcam_dbg_err("now on commiting previous file!!(command : %d)", command); return MM_ERROR_CAMCORDER_CMD_IS_RUNNING; @@ -1140,6 +1142,13 @@ int _mmcamcorder_video_command(MMHandleType handle, int command) info->push_encoding_buffer = PUSH_ENCODING_BUFFER_STOP; _mmcam_dbg_log("block push buffer to appsrc"); + _mmcamcorder_get_freespace(hcamcorder->storage_info.type, &free_space); + if (free_space < _MMCAMCORDER_MINIMUM_SPACE) { + _mmcam_dbg_warn("_MMCamcorder_CMD_COMMIT out of storage [%" G_GUINT64_FORMAT "]", free_space); + ret = MM_ERROR_OUT_OF_STORAGE; + goto _ERR_CAMCORDER_VIDEO_COMMAND; + } + if (sc->encode_element[_MMCAMCORDER_ENCSINK_SRC].gst != NULL) { if (gst_element_send_event(sc->encode_element[_MMCAMCORDER_ENCSINK_SRC].gst, gst_event_new_eos())) { _mmcam_dbg_warn("VIDEO: send eos to appsrc done"); |