[Bug 792399] New: inputselector: always proxy context query

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Wed Jan 10 10:23:58 UTC 2018


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

            Bug ID: 792399
           Summary: inputselector: always proxy context query
    Classification: Platform
           Product: GStreamer
           Version: git master
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: Normal
         Component: gstreamer (core)
          Assignee: gstreamer-bugs at lists.freedesktop.org
          Reporter: m.tretter at pengutronix.de
        QA Contact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---

Created attachment 366596
  --> https://bugzilla.gnome.org/attachment.cgi?id=366596&action=edit
0001-inputselector-always-proxy-context-query.patch

The input selector should forward the GST_QUERY_CONTEXT for inactive pads,
because a context should be shared between multiple elements in a pipeline and 
elements that are linked via an input selector should share the same context.

In my concrete use case, I have a pipeline that has a vaapidecodebin and 
vaapisink with an input selector in between. The sink pad of the input
selector that is linked to the vaapidecodebin is not the active pad, but is
switched once the STREAM_START event arrives on that pad.

As soon as the first buffer arrives from the vaapipostproc at the vaapisink
and is looked up via the surface id, the vaapisink crashes, because it fails
to find the surface in its va context.

The problem is that the vaapipostproc element tries to get a va display from
the sink with a GST_QUERY_CONTEXT query, but the query is not correctly
forwarded by the input selector, because the sink pad is not the active pad.
Consequently, the vaapipostproc element creates a new display (and underlying
va context), which is distinct from the one the vaapisink is using. Therefore,
the elements are looking for the surface ids in different contexts.

I can work around this issue by using a funnel instead of the input selector
or by handling the HAVE_CONTEXT and NEED_CONTEXT messages in my application,
but I would expect that this is handled in the pipeline, because the elements
are already linked.

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