List Info

Thread: Problem with capsfilter




Problem with capsfilter
user name
2007-01-05 09:19:10

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

 

…230;

      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

…230;

 

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

 

…230;

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 ]

…230;

 

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

 

 

 

[1]

about | contact  Other archives ( Real Estate discussion Medical topics )