[Bug 736655] basesink: preroll issue for some clips which audio is shorter than video

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Mon Jan 19 03:47:02 PST 2015


https://bugzilla.gnome.org/show_bug.cgi?id=736655
  GStreamer | gstreamer (core) | 1.2.3

Sebastian Dröge (slomo) <slomo> changed:

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

--- Comment #62 from Sebastian Dröge (slomo) <slomo at coaxion.net> 2015-01-19 11:46:59 UTC ---
Review of attachment 294382:
 --> (https://bugzilla.gnome.org/review?bug=736655&attachment=294382)

I think in general you need to call gst_pad_get_element_private() again
whenever you have unlocked the mutex and locked it again. in the meantime the
application could've removed the pad from streamsynchronizer, and freed the
stream.

::: gst/playback/gststreamsynchronizer.c
@@ +493,3 @@
+      if (!seen_data) {
+        /* no buffer form the pad anytime, not negotiate, send eos */
+        stream->eos_sent = TRUE;

Should probably also only be set when it happens below

@@ +504,3 @@
         timestamp = stream->segment.stop;

+      stream->segment.position = timestamp;

Why?

@@ +520,3 @@
           GstStream *ostream = l->data;
           /* local snapshot of current pads */
+          ostream->eos_sent = TRUE;

Should probably be done when it actually happened, not before

@@ +556,3 @@
+          if (self->eos) {
+            GST_DEBUG_OBJECT (pad, "send EOS event");
+            ret = gst_pad_push_event (srcpad, gst_event_new_eos ());

stream->eos_sent = TRUE now?

@@ +561,3 @@
+          /* send eos as sink can't handle if haven't negotiate */
+          GST_DEBUG_OBJECT (pad, "send EOS event");
+          ret = gst_pad_push_event (srcpad, gst_event_new_eos ());

The problem here is that we can't preroll the sink again later here. So after
you forwarded EOS, then went to PAUSED and the PLAYING again... nothing will
ever be sent to that sink again. Not even an EOS. Maybe another EOS should be
sent?

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- 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