Fix bug for read_sample function return buffer (when EOS state, read_sample retured... 69/80469/2 accepted/tizen/common/20160720.173422 accepted/tizen/ivi/20160720.104042 accepted/tizen/mobile/20160720.103951 accepted/tizen/tv/20160720.104006 accepted/tizen/wearable/20160720.104020 submit/tizen/20160720.084238
authorGilbok Lee <gilbok.lee@samsung.com>
Mon, 18 Jul 2016 07:49:03 +0000 (16:49 +0900)
committerGilbok Lee <gilbok.lee@samsung.com>
Mon, 18 Jul 2016 08:04:29 +0000 (17:04 +0900)
Change-Id: Ie8a598da01f8bb9ef36ebfc740be775538ac19ba

packaging/capi-mediademuxer.spec
src/port_gst/mediademuxer_port_gst.c

index 3b40c8364ac2c65d3043667bb2c357e5352a003a..471b8c780f9df019548f34fe983eb0ef29252c12 100755 (executable)
@@ -1,6 +1,6 @@
 Name:       capi-mediademuxer
 Summary:    A Media Demuxer library in Tizen Native API
-Version:    0.1.3
+Version:    0.1.4
 Release:    1
 Group:      Multimedia/API
 License:    Apache-2.0
index 91fcc0ede4833a67b325da83cfb307a7a7664cc4..31214ed11ff0e3ab7f4ac2eed8254f976b2465ae 100755 (executable)
@@ -1277,12 +1277,6 @@ static int gst_demuxer_read_sample(MMHandleType pHandle,
                goto ERROR;
        }
 
-       if (media_packet_create_alloc(atrack->format, NULL, NULL, &mediabuf)) {
-               MD_E("media_packet_create_alloc failed\n");
-               ret = MD_ERROR;
-               goto ERROR;
-       }
-
        if (indx != track_indx) {
                MD_E("Invalid track Index\n");
                ret = MD_ERROR_INVALID_ARGUMENT;
@@ -1296,14 +1290,23 @@ static int gst_demuxer_read_sample(MMHandleType pHandle,
                if (gst_app_sink_is_eos((GstAppSink *) sink)) {
                        MD_W("End of stream (EOS) reached, triggering the eos callback\n");
                        ret = MD_ERROR_NONE;
+                       *outbuf = NULL;
                        __gst_eos_callback(track_indx, demuxer);
                        return ret;
                } else {
                        MD_E("gst_demuxer_read_sample failed\n");
+                       *outbuf = NULL;
                        ret = MD_ERROR_UNKNOWN;
+                       return ret;
                }
        }
 
+       if (media_packet_create_alloc(atrack->format, NULL, NULL, &mediabuf)) {
+               MD_E("media_packet_create_alloc failed\n");
+               ret = MD_ERROR;
+               goto ERROR;
+       }
+
        GstBuffer *buffer = gst_sample_get_buffer(sample);
        if (buffer == NULL) {
                MD_E("gst_sample_get_buffer returned NULL pointer\n");
@@ -1337,6 +1340,9 @@ static int gst_demuxer_read_sample(MMHandleType pHandle,
        MEDIADEMUXER_FLEAVE();
        return ret;
 ERROR:
+       if (mediabuf)
+               media_packet_destroy(mediabuf);
+       *outbuf = NULL;
        MEDIADEMUXER_FLEAVE();
        return ret;
 }