intervideosrc does not negociate when format is xRGB

jean-philippe jean_philippe_arnaud at yahoo.fr
Mon Oct 14 16:27:02 UTC 2019


Hi,

I'm writing some test programs to better understand GStreamer. 

I have a test program with two pipelines:

   GstElement *pipe1 = gst_parse_launch ("videotestsrc !
video/x-raw,format=*xRGB*,width=320,height=240 ! intervideosink name=YYY
channel=camera sync=false", NULL);
   GstElement *pipe2 = gst_parse_launch ("intervideosrc name=XXX
channel=camera ,width=320,height=240 ! autovideosink sync=false
async=false", NULL);

   gst_element_set_state (pipe1, GST_STATE_PLAYING);
   gst_element_set_state (pipe2, GST_STATE_PLAYING);

   print_pad_capabilities(gst_bin_get_by_name(GST_BIN(pipe1), "YYY"),
"sink");
   print_pad_capabilities(gst_bin_get_by_name(GST_BIN(pipe2), "XXX"),
"src");

When format=I420 or YV12 or YUV2 in the caps filter, pushing a GstSample
into the intervideosrc  works fine. 
However, when format is RGBx, xRGB or RGBA I get the output below. 
Note, print_pad_capabilities() prints the current caps for a given pad (code
taken from  here
<https://gstreamer.freedesktop.org/documentation/tutorials/basic/media-formats-and-pad-capabilities.html?gi-language=c> 
.

So it looks like the intervideosrc does not accept the xRGB format. However
its pad template lists xRGB. I assume this is a software-only plugin, and so
its caps should not change depending on the h/w it runs on. So why does the
pad template list formats it does not support? Or should it support xRGB and
in which case what am I missing?

I presume specifying caps on pipe2's intervideosrc is unnecessary since the
two pipes are linked by the 'channel' property and presumably
auto-negotiate? Is this a correct assumption?

Caps for the sink pad:
      video/x-raw
                 format: xRGB
                  width: 320
                 height: 240
              framerate: 30/1
         multiview-mode: mono
        pixel-aspect-ratio: 1/1
         interlace-mode: progressive

Caps for the src pad:
      video/x-raw
                 format: xRGB
                  width: 320
                 height: 240
         interlace-mode: progressive
         multiview-mode: mono
        multiview-flags:
0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono
        pixel-aspect-ratio: 1/1
            colorimetry: sRGB
              framerate: [ 1/2147483647, 2147483647/1 ]

0:00:00.064149858 14969 0x555555826f70 WARN                 basesrc
gstbasesrc.c:3055:gst_base_src_loop:<XXX> error: Internal data stream error.
         multiview-mode: mono
0:00:00.064154891 14969 0x555555826f70 WARN                 basesrc
gstbasesrc.c:3055:gst_base_src_loop:<XXX> error: streaming stopped, reason
not-negotiated (-4)
        multiview-flags:
0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono
        pixel-aspect-ratio: 1/1
            colorimetry: sRGB
              framerate: [ 1/2147483647, 2147483647/1 ]
ERROR: from element /GstPipeline:pipeline1/GstInterVideoSrc:XXX: Internal
data stream error.
Additional debug info:
gstbasesrc.c(3055): gst_base_src_loop ():
/GstPipeline:pipeline1/GstInterVideoSrc:XXX:
streaming stopped, reason not-negotiated (-4)



--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/


More information about the gstreamer-devel mailing list