Free codec_data from media packet API
[platform/core/api/mediacodec.git] / src / media_codec_port_gst.c
index 90f9ed9..bb950ce 100644 (file)
@@ -299,6 +299,9 @@ static int __mc_fill_input_buffer_with_adec_packet(mc_gst_core_t *core, media_pa
                                                buf_size, mcbuffer, (GDestroyNotify)__mc_input_buffer_finalize_cb));
                        LOGD("packet data apended");
                }
+
+               if (codec_data)
+                       free(codec_data);
        }
 
        return ret;
@@ -882,10 +885,17 @@ int __mc_set_caps_codecdata(mc_gst_core_t *core, GstMCBuffer *mcbuffer, guint fi
 
        if (codec_data != NULL) {               /* get the codec data from media_packet_get_codec_data() */
                data = g_malloc0(codec_data_size);
+
                memcpy(data, codec_data, codec_data_size);
+
+               free(codec_data);
+               codec_data = NULL;
+
                codecdata_buffer = gst_buffer_new_wrapped(data, codec_data_size);
                gst_caps_set_simple(core->caps, "codec_data", GST_TYPE_BUFFER, codecdata_buffer, NULL);
+
                LOGD("set codec data : %" G_GSIZE_FORMAT "", gst_buffer_get_size(codecdata_buffer));
+
                gst_buffer_unref(codecdata_buffer);
        } else {                                        /* get the codec data from media_packet_get_buffer_data_ptr() */
                uint64_t buffer_size = 0;