webrtc_test: Add missing gst_buffer_unref() 36/256636/2
authorSangchul Lee <sc11.lee@samsung.com>
Thu, 8 Apr 2021 08:17:15 +0000 (17:17 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Mon, 12 Apr 2021 05:25:18 +0000 (14:25 +0900)
[Version] 0.1.144
[Issue Type] Test application

Change-Id: I3e6b69854157ec5743475d6422605295dc26f1f5
Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
packaging/capi-media-webrtc.spec
test/webrtc_test.c

index d61aa7aa939a4a8b1748fbfd01701ee59de222c3..1e1efc0c221ed763e751f04bbf6231126715ceac 100644 (file)
@@ -1,6 +1,6 @@
 Name:       capi-media-webrtc
 Summary:    A WebRTC library in Tizen Native API
-Version:    0.1.143
+Version:    0.1.144
 Release:    0
 Group:      Multimedia/API
 License:    Apache-2.0
index 005eac478354162b7845f056f75b802312a83888..644f6a5b78d0b755f16ae8f2ae34ef99de48b39d 100644 (file)
@@ -1845,7 +1845,7 @@ static int __fill_gst_buffer_mapped_data_from_packet(GstBuffer *buffer, media_pa
        return 0;
 }
 
-GstBuffer *__get_buffer_from_packet(media_packet_h packet)
+GstBuffer *__alloc_buffer_from_packet(media_packet_h packet)
 {
        int ret;
        guchar *data_ptr;
@@ -1854,13 +1854,6 @@ GstBuffer *__get_buffer_from_packet(media_packet_h packet)
        guint64 dts = 0;
        guint64 duration = 0;
        guint64 size = 0;
-       GstBuffer *buffer = NULL;
-
-       media_packet_get_extra(packet, (void **)&buffer);
-       if (buffer) {
-               g_print("external gstbuffer[%p]\n", buffer);
-               return buffer;
-       }
 
        media_packet_get_buffer_data_ptr(packet, (void **)&data_ptr);
        if (data_ptr == NULL) {
@@ -1933,17 +1926,25 @@ static void __stream_handoff_cb(GstElement *object, GstBuffer *buffer, GstPad *p
        }
 
 #ifdef __DEBUG_VALIDATE_MEDIA_PACKET_SOURCE__
-       GstBuffer *buffer_from_packet = __get_buffer_from_packet(packet);
-       if (!buffer_from_packet) {
-               media_packet_destroy(packet);
-               g_printerr("buffer_from_packet is NULL\n");
-               return;
+       GstBuffer *buffer_from_packet = NULL;
+       bool is_new_buffer = false;
+       media_packet_get_extra(packet, (void **)&buffer_from_packet);
+       if (buffer_from_packet) {
+               g_print("external gstbuffer[%p]\n", buffer_from_packet);
+       } else {
+               buffer_from_packet = __alloc_buffer_from_packet(packet);
+               if (!buffer_from_packet) {
+                       media_packet_destroy(packet);
+                       return;
+               }
+               is_new_buffer = true;
        }
-
        GstFlowReturn gst_ret = GST_FLOW_OK;
        g_signal_emit_by_name(G_OBJECT(packet_source->appsrc), "push-buffer", buffer_from_packet, &gst_ret, NULL);
        if (gst_ret != GST_FLOW_OK)
                g_printerr("failed to 'push-buffer', gst_ret[0x%x]\n", gst_ret);
+       if (is_new_buffer)
+               gst_buffer_unref(buffer_from_packet);
 #else
        if (webrtc_media_packet_source_push_packet(packet_source->webrtc, packet_source->source_id, packet) != WEBRTC_ERROR_NONE)
                g_printerr("failed to webrtc_media_packet_source_push_packet()\n");