[gstreamer-bugs] [Bug 606649] New: Problems pausing playbin2 on some files with large audio-buffer
GStreamer (bugzilla.gnome.org)
bugzilla at gnome.org
Mon Jan 11 10:11:01 PST 2010
https://bugzilla.gnome.org/show_bug.cgi?id=606649
GStreamer | gst-plugins-base | git
Summary: Problems pausing playbin2 on some files with large
audio-buffer
Classification: Desktop
Product: GStreamer
Version: git
OS/Version: Linux
Status: UNCONFIRMED
Severity: normal
Priority: Normal
Component: gst-plugins-base
AssignedTo: gstreamer-bugs at lists.sourceforge.net
ReportedBy: msmith at xiph.org
QAContact: gstreamer-bugs at lists.sourceforge.net
GNOME target: ---
GNOME version: ---
Created an attachment (id=151174)
View: https://bugzilla.gnome.org/attachment.cgi?id=151174
Review: https://bugzilla.gnome.org/review?bug=606649&attachment=151174
Core: allow subclasses of basesink to override prerolling behaviour
If you have a large audio ringbuffer, sometimes pausing can fail - the PAUSE
never prerolls.
Because of the large audio buffer, the steady-state in playback has the video
side of the decodebin2 multiqueue full, and the audio side empty. So, at any
given time, most likely, the demuxer will be blocked trying to push a buffer
into the video queue.
When we set to PAUSED, then, we try to preroll the sinks. The video sink pretty
much immediately prerolls with a buffer from the video queue. The demuxer can
now push its buffer into the queue, and gets unblocked.
Now, the demuxer goes to push again. In the files I'm testing with, the audio
is in large (~0.5 seconds) chunks, so usually the next thing to push will be
another video frame. We try to push that - and it blocks in the video queue
again. Now we're deadlocked - we can't push anything into the audio queue, so
we can't preroll the audio sink.
Testing with seek.c, used like this: ./seek 15 'playbin2
uri=file:///tmp/test.mov audio-sink="pulsesink buffer-time=5000000"'
I ran into this originally with Songbird, which uses a large audio ringbuffer.
Wim suggested that we could make the audio sink preroll based on audio in the
ring buffer. I'm attaching an attempt at implementing this (two patches: one to
core, one to base)
--
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