[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