[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