[Bug 743973] playbin: Need replace suburidecoderbin's segment with normal uridecoderbin's segment

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Sun Apr 26 10:56:20 PDT 2015


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

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

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

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

Please describe in more detail what this is supposed to fix, and in which
situation this problem can appear

::: gst/playback/gstplaybin2.c
@@ +3055,3 @@
+
+        GST_SOURCE_GROUP_LOCK (group);
+        _uridecodebin_event_probe_wait (group);

I think it's cleaner to use a blocking pad probe for this instead of using a
custom cond. Especially a block pad probe will handle things properly for
flushing and pad deactivation

@@ +3058,3 @@
+        if (segment.format == GST_FORMAT_TIME) {
+          segment.start = group->nonsub_segment.start;
+          segment.time = group->nonsub_segment.time;

Why only these two? Should probably replace the whole segment

@@ +5322,3 @@
       }
       gst_element_set_state (suburidecodebin, GST_STATE_READY);
+      g_cond_init (&group->suburidecodebin_segment_cond);

Here you would init the cond on every group switch... it should only be done
exactly once when playbin is created (and then cleared in finalize)

@@ +5500,3 @@
+    group->got_nonsub_segment = TRUE;
+    g_cond_broadcast (&group->suburidecodebin_segment_cond);
+    g_cond_clear (&group->suburidecodebin_segment_cond);

Especially this will probably cause problems as at this time another thread is
actually still using the cond

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