[Bug 774654] New: Flushing can hang if output port queue of pending buffers is empty

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Thu Nov 17 23:40:00 UTC 2016


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

            Bug ID: 774654
           Summary: Flushing can hang if output port queue of pending
                    buffers is empty
    Classification: Platform
           Product: GStreamer
           Version: git master
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: Normal
         Component: gst-omx
          Assignee: gstreamer-bugs at lists.freedesktop.org
          Reporter: formruga at gmail.com
        QA Contact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---

Steps in gst_omx_video_dec_flush are:
0) Pause the components
1) Wait until the srcpad loop is stopped
2) Flush the ports
3) Resume components
4) Unset flushing to allow ports to accept data again

The problem lays in sequence: 0 -> 1, because srcpad loop
(gst_omx_video_dec_loop) can stuck in function gst_omx_port_acquire_buffer if
output port queue of pending buffers (port->pending_buffers) is empty and
component is in pause state (component processing is halted, no new buffers
will be generated).

For me sequence should be changed into 1 -> 0. i.e. first wait until the srcpad
loop is stopped then pause the components.

Interestingly, the sequence was changed by commit d7533445 "omx: Let base
classes handle EOS. https://bugzilla.gnome.org//show_bug.cgi?id=734774". I
don't find relation between the commit message and changed sequence.

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