[Bug 754178] gst-discoverer doesn't detect both audio and video of RTSP streams

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Thu Jun 29 22:36:50 UTC 2017


https://bugzilla.gnome.org/show_bug.cgi?id=754178

Olivier CrĂȘte <olivier.crete at ocrete.ca> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
 Attachment #354539|none                        |needs-work
             status|                            |

--- Comment #21 from Olivier CrĂȘte <olivier.crete at ocrete.ca> ---
Review of attachment 354539:
 --> (https://bugzilla.gnome.org/review?bug=754178&attachment=354539)

I also wonder if you shouldn't drop the counter and just iterate over the whoel
list of decodebins every time, this is probably less error-prone.

::: gst/playback/gsturidecodebin.c
@@ +118,3 @@
   guint64 ring_buffer_max_size; /* 0 means disabled */
+
+  gint pending_topologies;

How is this counter locked?

@@ +2467,3 @@
+      sttype = gst_structure_get_name_id (structure);
+
+      if (sttype == topology_structure_name) {

Why not just use gst_message_has_name() ?

@@ +2471,3 @@
+        GstElement *element = GST_ELEMENT (GST_MESSAGE_SRC (msg));
+
+        gst_message_unref (msg);

After this structure is no longer valid, you need to keep the message alive...
it owns the GstStructure

@@ +2483,3 @@
+
+        g_object_set_data (G_OBJECT (element), "topology",
+            gst_structure_copy (structure));

Since you free'd msg, the GstStructure pointer is not valid anymore.

Also, I think that will leak the structure.. Mabye you want to use
g_object_set_data_full() instead. Then you can also drop the
gst_structure_free() in remove_decoders().

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list