[gstreamer-bugs] [Bug 619522] basetransform fix for upstream caps-renegotiation

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Wed Jul 28 03:24:00 PDT 2010


https://bugzilla.gnome.org/show_bug.cgi?id=619522
  GStreamer | gstreamer (core) | git

Wim Taymans <wim.taymans> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|                            |FIXED
   Target Milestone|HEAD                        |0.10.31

--- Comment #2 from Wim Taymans <wim.taymans at gmail.com> 2010-07-28 10:23:54 UTC ---
commit 29289ee79e1b49b6dcbb314bee8c760395e5c8e9
Author: Rob Clark <rob at ti.com>
Date:   Sat May 22 16:33:11 2010 -0500

    basetransform fix for upstream caps-renegotiation

    If initially pass-through caps are negotiated between a transform element's
    sink and src pads, but then the downstream element returns different caps
    on a buffer from pad_alloc(), basetransform gets stuck with
proxy_alloc=TRUE
    even though the upstream peer doesn't accept the caps, causing
    gst_pad_peer_accept_caps() to be called on each buffer in _buffer_alloc():

        if (!gst_caps_is_equal (newcaps, caps)) {
          GST_DEBUG_OBJECT (trans, "caps are new");
          /* we have new caps, see if we can proxy downstream */
    >>    if (gst_pad_peer_accept_caps (pad, newcaps)) {
            /* peer accepts the caps, return a buffer in this format */
            GST_DEBUG_OBJECT (trans, "peer accepted new caps");

    which is taking ~40ms/frame.

    This patch does two things.  (1) if the buffer returned from pad_alloc()
has
    new caps, trigger the decision whether to proxy the buffer-alloc to be
    revisited, and (2) disable proxy if peer does not accept new caps.  (The
first
    part may not be strictly needed, but seemed like a good idea.)

    Note that this issue would not arise except in case of downstream elements
    who have on their template-caps, some that would be suitable for
pass-through,
    but at runtime pick more restrictive caps (for ex, after querying a driver
for
    what formats it actually supports).

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