GStreamer - ZED Demux

Open in ClaudeOpen in ChatGPT

The ZED Demux, zeddemux GStreamer element, allows separation of a single ZED composite stream (RGB Left + RGB Right, or RGB Left + Depth) and creates two separate streams. A third stream is created for metadata if requested.

The zeddemux creates the following source pads:

  • src_left: left color camera stream (stereo mode only)
  • src_aux: right color camera stream or 16-bit depth stream, depending on the is-depth property (stereo mode only)
  • src_mono: monocular color camera stream, used instead of src_left/src_aux when the is-mono property is enabled
  • src_data: metadata stream (see stream-data property)

All four source pads always exist, but only a subset carries buffers: with is-mono=false (the default) data flows on src_left and src_aux, while with is-mono=true data flows on src_mono only. The src_data pad carries data in both modes when stream-data=true.

Properties

is-depth : Aux source is GRAY16 depth
flags: readable, writable
Boolean. Default: false
is-mono : Demux is applied to ZED X One monocular stream from zedxonesrc
flags: readable, writable
Boolean. Default: false
name : The name of the object
flags: readable, writable, 0x2000
String. Default: "zeddemux0"
parent : The parent of the object
flags: readable, writable, 0x2000
Object of type "GstObject"
stream-data : Enable binary data streaming on `src_data` pad
flags: readable, writable
Boolean. Default: false

Example pipelines

Split the stereo couple and display single streams

The following is a simple pipeline to display on the screen the Left and Right color streams in two different windows:

gst-launch-1.0 zedsrc stream-type=2 ! zeddemux is-depth=false is-mono=false name=demux \
demux.src_left ! queue ! autovideoconvert ! fpsdisplaysink \
demux.src_aux ! queue ! autovideoconvert ! fpsdisplaysink

Pipeline graph: zedsrc to zeddemux, whose src_left and src_aux pads each feed a queue, autovideoconvert and fpsdisplaysink

Split the RGB/Depth synchronized stream and display single streams

The same pipeline as the previous example can be used to display the left camera stream and the Depth stream in separate windows by selecting stream-type=4 on zedsrc and is-depth=true on zeddemux.

gst-launch-1.0 zedsrc stream-type=4 ! zeddemux is-depth=true name=demux \
demux.src_left ! queue ! autovideoconvert ! fpsdisplaysink \
demux.src_aux ! queue ! autovideoconvert ! fpsdisplaysink

Pipeline graph: zedsrc to zeddemux, whose src_left and src_aux pads each feed a queue, autovideoconvert and fpsdisplaysink

is-depth=true is required whenever the composite stream carries depth on its lower half, i.e. with stream-type=4. The zedsrc element packs the depth values as 32-bit distances in millimeters, and zeddemux converts them to a GRAY16_LE depth map on src_aux only when is-depth is enabled. With the default is-depth=false, the lower half is forwarded untouched as BGRA and the resulting image is not a usable depth map.

For an example of how to use the stream-data option please refer to the documentation of the zeddatacsvsink element