shmrc stability

Rinaldo Merlo Rinaldo.Merlo at
Thu Apr 28 13:32:20 UTC 2022


I'm using a shared memory socket to multiplex the output of a blackmagic hdmi video capture card to multiple processes.

The output of the capture card is sent to a shared memory socket like so:

gst-launch-1.0 decklinkvideosrc connection=HDMI mode=720p60 device-number=0 ! queue leaky=downstream !shmsink wait-for-connection=1 socket-path=/tmp/multiviewersock

And the clients access it using following source pipeline:

shmsrc socket-path=/tmp/multiviewersock do-timestamp=1  ! video/x-raw,format=UYVY,framerate=60/1, width=1280,height=720,pixel-aspect-ratio=1/1,interlace-mode=progressive,chroma-site=mpeg2,colorimetry=bt709 ! queue ! videoconvert

There can be anything up to 8 clients on one PC connecting and disconnecting from it.

It works, but unfortunately is quite unstable, I get frequent 'no video' errors:

 myframe = stbt.get_frame()
  File "", line 273, in get_frame
    return dut.get_frame()
  File "..xxxxx...../", line 293, in get_frame
    return self._display.get_frame()
  File "...xxxx.../", line 940, in get_frame
    raise NoVideo("No video")
NoVideo: No video

Also I get horrible pipeline timestamp errors, which may be related to the above instability.

warning: Received frame with suspicious timestamp: 20097896615.622089. Check your source-pipeline configuration.

As you can tell, it's a bit hacked together with no real understanding by me, so any help would be appreciated. It has been suggested to me that it's because I'm using raw video, which is obviously quite intensive.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the gstreamer-devel mailing list