summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeongmo Yang <jm80.yang@samsung.com>2017-09-05 16:40:25 +0900
committerJeongmo Yang <jm80.yang@samsung.com>2017-09-05 16:40:35 +0900
commit153ada9ac44c730317f6dd193c7328338f38a8a8 (patch)
tree1eb260bf13f978382dd90768ad10a21a204f3ed3
parent3fdff5cc8c26798af70c4c97f34d8cbbc080b0d2 (diff)
parent1feba48951f569c00e2e69cb1a27ba5e20cc9e1f (diff)
downloadlibmm-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
Change-Id: I266ef809156fda3bf1a946786e20a58d790deb6f Signed-off-by: Jeongmo Yang <jm80.yang@samsung.com>
-rw-r--r--packaging/libmm-camcorder.spec2
-rw-r--r--src/include/mm_camcorder_exifinfo.h2
-rw-r--r--src/mm_camcorder_attribute.c12
-rw-r--r--src/mm_camcorder_audiorec.c9
-rw-r--r--src/mm_camcorder_exifinfo.c2
-rw-r--r--src/mm_camcorder_stillshot.c4
-rw-r--r--src/mm_camcorder_videorec.c9
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");