[Bug 693005] New: capssetter: do not return a copy of sink caps upstream

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Fri Feb 1 05:53:40 PST 2013


https://bugzilla.gnome.org/show_bug.cgi?id=693005
  GStreamer | gst-plugins-good | git

           Summary: capssetter: do not return a copy of sink caps upstream
    Classification: Platform
           Product: GStreamer
           Version: git
        OS/Version: All
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: gst-plugins-good
        AssignedTo: gstreamer-bugs at lists.freedesktop.org
        ReportedBy: vhdirk at gmail.com
         QAContact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---


Created an attachment (id=234980)
 View: https://bugzilla.gnome.org/attachment.cgi?id=234980
 Review: https://bugzilla.gnome.org/review?bug=693005&attachment=234980

proposed patch

when capssetter is followed by a capsfilter some element that wants to do
upstream caps negotiation, capssetter just passes the sink peer caps upstream,
which is definitely not correct.

These 2 test scenarios clarify the issue (both of which should work).

# Convert bayer pattern format
## worked
gst-launch-1.0 --gst-debug=capssetter:5 videotestsrc !
video/x-bayer,format=rggb,width=640,height=480,framerate=10/1 ! capssetter
join=false caps="video/x-bayer,format=gbrg,width=640,height=480,framerate=10/1"
replace=true ! bayer2rgb ! videoconvert ! xvimagesink

# Convert bayer pattern format, with additional capsfilter (that is identical
to the capssetter's output caps)
## did not work
gst-launch-1.0 --gst-debug=capssetter:5 videotestsrc !
video/x-bayer,format=rggb,width=640,height=480,framerate=10/1 ! capssetter
join=false caps="video/x-bayer,format=gbrg,width=640,height=480,framerate=10/1"
replace=true ! video/x-bayer,format=gbrg,width=640,height=480,framerate=10/1 !
bayer2rgb ! videoconvert ! xvimagesink


A possible solution is to report any caps upstream (as included in the patch).
In my opinion, this is the clearest.

I am not sure if this should be restricted further. I think it definitely
should return 'any' in case of replace=true, yet for join=true, it might indeed
make sense to  return a copy of the sink peer caps upstream. And without making
it too complex, I can not immediately see a solution for the case of join=false
and replace=true, so my suggestion is to always return 'any' upstream
regardless of join/replace (it's a debug tool, so capsfilters will work as
well).

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