decklinkvideosrc and compositor error for "reason not-negotiated"

Anton Deguet anton.deguet at jhu.edu
Tue Dec 19 16:50:15 UTC 2023


Hello,

I have little or no experience with gstreamer so bear with me.  I'm trying to write a pipeline to capture 2 video streams (1080i 59.59) from 2 DeckLink mini (I also tried with a Duo) and use a compositor to create a side-by-side stereo video.  My pipeline so far is:

gst-launch-1.0 \
  decklinkvideosrc device-number=1 connection=sdi mode=1080i5994 ! c. \
  decklinkvideosrc device-number=0 connection=sdi mode=1080i5994 ! c. \
  compositor name=c \
    sink_0::xpos=0  sink_0::ypos=0 sink_0::width=960 sink_0::height=1080\
    sink_1::xpos=960 sink_1::ypos=0  sink_1::width=960 sink_1::height=1080 ! \
    video/x-raw,width=1920,height=1080 ! \
    autovideosink

My issue is that this will work from time to time and fail about 9 out of 10 trials.  When it fails, the display shows either no video or only one of the two videos and I get the error:

ERROR: from element /GstPipeline:pipeline0/GstDecklinkVideoSrc:decklinkvideosrc0: Internal data stream error.
Additional debug info:
gstbasesrc.c(3072): gst_base_src_loop (): /GstPipeline:pipeline0/GstDecklinkVideoSrc:decklinkvideosrc0:
streaming stopped, reason not-negotiated (-4)

It seems there is some race condition where one of the sources is not ready to provide the video format to the compositor.  Any idea how to fix this?  I'd like to stick to gst-launch since I plan to use this with ROS gscam.

Sincerely,

Anton


More information about the gstreamer-devel mailing list