Add buffer consumed event callback for i420 48/150048/3
authorSeokHoon Lee <andy.shlee@samsung.com>
Thu, 14 Sep 2017 06:09:39 +0000 (15:09 +0900)
committerSeokHoon Lee <andy.shlee@samsung.com>
Fri, 15 Sep 2017 00:44:18 +0000 (09:44 +0900)
- 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

include/streamrecorder_private.h
packaging/capi-media-streamrecorder.spec
src/streamrecorder.c

index 3e1198e..70923d5 100644 (file)
@@ -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 {
index c8207c6..c161700 100644 (file)
@@ -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
index c7b2803..3d7ab47 100644 (file)
@@ -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;
                                }