summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeokHoon Lee <andy.shlee@samsung.com>2017-09-14 15:09:39 +0900
committerSeokHoon Lee <andy.shlee@samsung.com>2017-09-15 09:44:18 +0900
commitecfbca66f6239089edab95f14b03bb0c1020d65a (patch)
tree2f89f3f408e6e94f73964823777b106f05ec49b6
parent4e11d2b688925d3351fb8085e34701e0c7aa62b9 (diff)
downloadmediastreamrecorder-ecfbca66f6239089edab95f14b03bb0c1020d65a.tar.gz
mediastreamrecorder-ecfbca66f6239089edab95f14b03bb0c1020d65a.tar.bz2
mediastreamrecorder-ecfbca66f6239089edab95f14b03bb0c1020d65a.zip
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 <andy.shlee@samsung.com> Change-Id: I672f3f8a7d206d1772ff27a0a921ccdb44795623
-rw-r--r--include/streamrecorder_private.h2
-rw-r--r--packaging/capi-media-streamrecorder.spec2
-rw-r--r--src/streamrecorder.c18
3 files changed, 17 insertions, 5 deletions
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;
}