[Bug 764635] New: splitmuxsink: deadlock when reference stream has low framerate

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Tue Apr 5 12:34:08 UTC 2016


https://bugzilla.gnome.org/show_bug.cgi?id=764635

            Bug ID: 764635
           Summary: splitmuxsink: deadlock when reference stream has low
                    framerate
    Classification: Platform
           Product: GStreamer
           Version: unspecified
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: Normal
         Component: gst-plugins-good
          Assignee: gstreamer-bugs at lists.freedesktop.org
          Reporter: xclaesse at gmail.com
        QA Contact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---

I'm using splitmuxsink with matroskamux and filesink.

I've got 3 input streams:
 - video: 8 jpeg frames per sec, so all buffers are keyframes
 - audio: normal mp4a
 - subtitle: 1 buffer every second

1) During the 1s it waits for a subtitle buffer, check_queue_length() allows
audio/video queues to grow because the subtitle queued_bufs is empty, see the
/* If another stream is starving, grow */ case. The 7th GOP arrives at t=875ms.

2) At t=900ms (so between 2 GOPs), the subtitle buf arrives, it's blocked in
handle_mq_input() waiting for the next GOP to complete, because
max_in_running_time=875ms.

3) At t=1000ms the 8th GOP arrives, max_in_running_time is set to 1000ms.

4) The subtitle buffer enters the queue but cannot go out yet because
max_out_running_time is still 875ms because audio/subtitle streams didn't
catchup to 1000ms yet.

5) Since the subtitle queued_bufs is not empty anymore, the audio queue is not
allowed to grow anymore. So next audio buffer needed to catchup to 1000ms are
blocked because its queue is full.

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