[gst-devel] Problem with capsfilter

Andrea della Porta andrea at iptronix.com
Fri Jan 5 10:19:10 CET 2007


Hi all,

I've modified as a test ffmpegcolorspace plugin in order to add a new
capability that has zorder parameter (I need to do some overlaying of
different sources) as you can see by the following 'gst-inspect
ffmpegcolorspace':

 

......

      video/x-raw-rgb-zorder

                  width: [ 1, 2147483647 ]

                 height: [ 1, 2147483647 ]

              framerate: [ 0/1, 2147483647/1 ]

                    bpp: 16

                  depth: 16

               red_mask: 63488

             green_mask: 2016

              blue_mask: 31

                 zorder: [ 0, 1024 ]

             endianness: 1234

......

 

This apply both for SINK and SRC of ffmpegcolorspace. Then I add the
same capability to sdlvideosink as 'gst-inspect sdlvideosink' shows up
(note that my version of sdvidesink has no yuv cap since I've to write
directly on rgb surface):

 

......

GObject

 +----GstObject

       +----GstElement

             +----GstBaseSink

                   +----GstVideoSink

                         +----GstSDLVideoSink

 

Implemented Interfaces:

  GstNavigation

  GstXOverlay

  GstImplementsInterface

 

Pad Templates:

  SINK template: 'sink'

    Availability: Always

    Capabilities:

      video/x-raw-rgb

                    bpp: 16

                  depth: 16

             endianness: 1234

               red_mask: 63488

             green_mask: 2016

              blue_mask: 31

                  width: [ 1, 2147483647 ]

                 height: [ 1, 2147483647 ]

              framerate: [ 0/1, 100/1 ]

      video/x-raw-rgb-zorder

                    bpp: 16

                  depth: 16

             endianness: 1234

               red_mask: 63488

             green_mask: 2016

              blue_mask: 31

                  width: [ 1, 2147483647 ]

                 height: [ 1, 2147483647 ]

                 zorder: [ 0, 1024 ]

              framerate: [ 0/1, 100/1 ]

......

 

If I try to create the pipeline like this:

 

GST_REGISTRY_FORK=no ./gst-launch videotestsrc pattern=1 !
ffmpegcolorspace zorder=56 ! video/x-raw-rgb-zorder,
framerate=\(fraction\)30/1, width=100,height=100 ! sdlvideosink

 

I get: 

 

"WARNING: erroneous pipeline: could not link ffmpegcsp0 to
sdlvideosink0"

 

I've look deeper into the code and realize that ffmpegcsp0:src has not
'zorder' capability anymore, whilst ffmpegcsp0:sink does. Of course,
subsequent caps_intersect with capsfilter0 and sdlvidesink0 will result
in an EMPTY set since 'zorder' capability is not on the way. The strange
thing is if I try:

 

GST_REGISTRY_FORK=no ./gst-launch ffmpegcolorspace zorder=56 !
video/x-raw-rgb-zorder, framerate=\(fraction\)30/1, width=100,height=100
! sdlvideosink

 

'zorder' caps reappear on ffmpegcsp0:src and the pipeline gets created
(though not PLAYING since there's no real source to push buffers)

Any clue on this? If it can help, I can attach the caps list for both
cases (not in this mail since it's quite long!).

 

Many thanks in advance,

Andrea della Porta

 

 

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20070105/bafa91ea/attachment.htm>


More information about the gstreamer-devel mailing list