From: SeokHoon Lee Date: Thu, 14 Sep 2017 06:09:39 +0000 (+0900) Subject: Add buffer consumed event callback for i420 X-Git-Tag: submit/tizen_4.0/20170920.023238^2~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ecfbca66f6239089edab95f14b03bb0c1020d65a;p=platform%2Fcore%2Fapi%2Fmediastreamrecorder.git Add buffer consumed event callback for i420 - add buffer consumed event for i420 packet - is_video is changed to use_ext_buffer. Signed-off-by: SeokHoon Lee Change-Id: I672f3f8a7d206d1772ff27a0a921ccdb44795623 --- diff --git a/include/streamrecorder_private.h b/include/streamrecorder_private.h index 3e1198e..70923d5 100644 --- a/include/streamrecorder_private.h +++ b/include/streamrecorder_private.h @@ -41,7 +41,7 @@ typedef enum { typedef struct { media_packet_h packet[MAX_MPACKET_DATA]; void *consumed_buf[MAX_MPACKET_DATA]; - bool is_video[MAX_MPACKET_DATA]; + bool use_ext_buffer[MAX_MPACKET_DATA]; } streamrecorder_mediapacket; typedef struct { diff --git a/packaging/capi-media-streamrecorder.spec b/packaging/capi-media-streamrecorder.spec index c8207c6..c161700 100644 --- a/packaging/capi-media-streamrecorder.spec +++ b/packaging/capi-media-streamrecorder.spec @@ -1,6 +1,6 @@ Name: capi-media-streamrecorder Summary: A Streamrecorder library in Tizen Native API -Version: 0.0.16 +Version: 0.0.17 Release: 0 Group: Multimedia/Other License: Apache-2.0 diff --git a/src/streamrecorder.c b/src/streamrecorder.c index c7b2803..3d7ab47 100644 --- a/src/streamrecorder.c +++ b/src/streamrecorder.c @@ -159,7 +159,7 @@ int streamrecorder_push_stream_buffer(streamrecorder_h recorder, media_packet_h if (pkt->packet[i] == NULL) { pkt->packet[i] = packet; pkt->consumed_buf[i] = video_buf; - pkt->is_video[i] = TRUE; + pkt->use_ext_buffer[i] = TRUE; break; } else { if (i == MAX_MPACKET_DATA -1) { @@ -183,6 +183,18 @@ int streamrecorder_push_stream_buffer(streamrecorder_h recorder, media_packet_h LOGW("buffer size get fail"); return STREAMRECORDER_ERROR_INVALID_PARAMETER; } + + for (i = 0; i < MAX_MPACKET_DATA; i++) { + if (pkt->packet[i] == NULL) { + pkt->packet[i] = packet; + pkt->consumed_buf[i] = buf_data; + pkt->use_ext_buffer[i] = FALSE; + break; + } else { + if (i == MAX_MPACKET_DATA - 1) + return STREAMRECORDER_ERROR_OUT_OF_MEMORY; + } + } ret = mm_streamrecorder_push_stream_buffer(handle->mm_handle, MM_STREAM_TYPE_VIDEO, pts, buf_data, buf_size); } } else { @@ -206,7 +218,7 @@ int streamrecorder_push_stream_buffer(streamrecorder_h recorder, media_packet_h if (pkt->packet[i] == NULL) { pkt->packet[i] = packet; pkt->consumed_buf[i] = buf_data; - pkt->is_video[i] = FALSE; + pkt->use_ext_buffer[i] = FALSE; break; } else { if (i == MAX_MPACKET_DATA -1) @@ -958,7 +970,7 @@ static int __mm_streamrecorder_msg_cb(int message, void *param, void *user_data) for (i = 0; i < MAX_MPACKET_DATA; i++) { if (pkt->consumed_buf[i] == consume_data) { consume = pkt->packet[i]; - if (pkt->is_video[i] == TRUE) { + if (pkt->use_ext_buffer[i] == TRUE) { free(pkt->consumed_buf[i]); /* MMVideoBuffer free */ pkt->consumed_buf[i] = NULL; }