[Bug 738285] playbin: Sequential playback of the file list does not work

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Fri Oct 24 02:17:17 PDT 2014


https://bugzilla.gnome.org/show_bug.cgi?id=738285
  GStreamer | gst-plugins-base | git

--- Comment #58 from Sebastian Dröge (slomo) <slomo at coaxion.net> 2014-10-24 09:17:15 UTC ---
(In reply to comment #54)
> Review of attachment 289248 [details]:
> 
> ::: gst/playback/gstdecodebin2.c
> @@ +3678,3 @@
> +    CHAIN_MUTEX_LOCK (chain);
> +    chain->drained = TRUE;
> +    chain->endpad->drained = TRUE;
> 
> If not linked stream longer then active, it will not be drained. In the future,
> if it will come the data we discard them.

What would be the problem with that?

> @@ +3682,3 @@
> +    peer = gst_pad_get_peer (GST_PAD_CAST (chain->endpad));
> +    if (peer) {
> +    CHAIN_MUTEX_LOCK (chain);
> 
> endpad is source pad, not sink pad. EOS is downstream event.

That's why I said gst_pad_push_event() on the endpad :) That should do the same
as gst_pad_send_event() on the peer, but is a few lines shorter.

> @@ +3722,2 @@
>      chain->drained = chain->endpad->drained;
> +    *drained = chain->endpad->notlinked;
> 
> drained state not saved in the pad (chain->endpad->drained != TRUE), only now

Good point, missed that. That would need a comment there :) Or maybe use a
separate variable with a speaking name for this.

> @@ +4645,3 @@
> +  if (drained) {
> +    gst_buffer_unref (buffer);
> +  gboolean drained;
> 
> if not-linked stream longer then active and we already drained signal emit

This would break if you try to seek to some position after EOS I think, you
would also need to reset the drained flag then. Also what's the problem with
letting GstPad worry about this?

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