[Bug 702282] gstbasesink makes element go to PLAYING without PAUSED_TO_PLAYING transition

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Mon Jun 17 00:58:10 PDT 2013


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

Wim Taymans <wim.taymans> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |wim.taymans at gmail.com

--- Comment #1 from Wim Taymans <wim.taymans at gmail.com> 2013-06-17 07:58:02 UTC ---
I know about this issue for some time. It happens when you set a sink to
PLAYING, it will got to PAUSED async, when it gets the first buffer it commits
to PAUSED and then go to PLAYING. When it goes to PLAYING, it doesn't call the
state change function with PAUSED_TO_PLAYING (see gst_base_sink_commit_state())

This is tricky to solve, I have tried some things already but they are all
racy:

 1 call state change function. We should ideally call this with the STATE_LOCK
   but that would deadlock easily.
 2 call state change without the state lock. This deadlocks because the PREROLL
   lock is taken in the state change
 3 release PREROLL lock and call state change. It is possible that the two
state
   change functions are called at the same time. This could be fixed by taking
   locks in the subclass.

I think I will try 3 some more.

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