[Bug 753899] baseparse: push sticky events to downstreams for initial prerolling

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Wed Jan 27 04:58:25 PST 2016


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

Sebastian Dröge (slomo) <slomo at coaxion.net> changed:

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

--- Comment #31 from Sebastian Dröge (slomo) <slomo at coaxion.net> ---
Review of attachment 319660:
 --> (https://bugzilla.gnome.org/review?bug=753899&attachment=319660)

::: libs/gst/base/gstbaseparse.c
@@ +405,3 @@
+
+/**
+ * GST_BASE_PARSE_STREAM_UNLOCK:

Why is this stream lock stuff needed here? GAP, CAPS (and other serialized
events) and buffers are guaranteed to be protected by the pad's stream lock
already.

@@ +1107,3 @@
+  GstStructure *structure;
+
+  caps = gst_pad_get_allowed_caps (GST_BASE_PARSE_SRC_PAD (parse));

This will return NULL if the srcpad has no peer at this point. It's probably
nicer here to use gst_pad_peer_query_caps(). If that returns something you
filter it with the source pads template caps, otherwise you just use the source
pads template caps.

Note: same bug in GstAudio/VideoDecoder. Want to provide a patch for them? :)

@@ +1423,3 @@
+      /* Ensure we have caps before forwarding the event */
+      GST_BASE_PARSE_STREAM_LOCK (parse);
+      if (!gst_caps_is_fixed (caps)) {

Why? I think you should just check here "if (!gst_pad_has_current_caps())".
That's what we care about here

@@ +1430,3 @@
+          parse->priv->pending_events =
+              g_list_append (parse->priv->pending_events,
+              gst_event_new_caps (default_caps));

You're leaking default_caps here.

-- 
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