GStreamer Elements#

This page contains examples of certain GStreamer elements/plugins used in combination with Intel® Deep Learning Streamer elements.

Element

Description

vacompositor

The vacompositor element allows merging multiple displays into one.

GST_PLUGIN_FEATURE_RANK

The GST_PLUGIN_FEATURE_RANK environment variable changes the rank (priority) of GStreamer elements in the registry at runtime. Any autoplugging mechanism that picks an element by rank is affected — decodebin3, decodebin, uridecodebin, playbin, parsebin, encodebin, autovideosink/autoaudiosink, etc. For example, when decodebin3 auto-plugs a pipeline and several decoders can handle the same stream, it selects the one with the highest rank, so this variable lets you force which decoder is used without editing the pipeline. It has no effect on elements you name explicitly in the pipeline.

Syntax
The variable takes a comma-separated list of feature:rank pairs, where rank is a GstRank value (NONE, MARGINAL, SECONDARY, PRIMARY, MAX) or a number. Export it before starting the pipeline:
export GST_PLUGIN_FEATURE_RANK="<element-name>:<rank>[,element-name>:<rank>...]"

Examples
The following snippets force the H.264 decoder appropriate for a given platform with iGPU and dGPU by raising the rank of the preferred element and disabling the others:

For Intel iGPU:
export GST_PLUGIN_FEATURE_RANK="vah264dec:MAX"

For Intel dGPU (/dev/dri/renderD129):
export GST_PLUGIN_FEATURE_RANK="varenderD129h264dec:MAX,varenderD129postproc:MAX"

For GPU detection and DRI device mapping, see Detect GPU devices.

timecodestamper

The timecodestamper element allows attaching
a timecode to every incoming video frame.

Example:
gst-launch-1.0 rtspsrc location=”rtsp://root:admin_pwd@IP/axis-media/media.amp” ! rtph264depay ! h264parse ! avdec_h264 !
timecodestamper set=always source=rtc ! videoconvert ! gvadetect model=$mDetect device=CPU ! queue ! gvametaconvert timestamp-utc=true json-indent=-1 !
gvametapublish method=mqtt file-format=json mqtt-config=mqtt_config.json ! fakesink sync=false

Detect GPU Devices#

To detect GPUs on the platform and map them to their corresponding /dev/dri/render* devices, use the following command:

for d in /dev/dri/render*; do
	vendor=$(cat "/sys/class/drm/$(basename "$d")/device/vendor" 2>/dev/null)
	pci=$(basename "$(readlink "/sys/class/drm/$(basename "$d")/device" 2>/dev/null)")
	name=$(lspci -s "$pci" 2>/dev/null | sed -E 's/^[^:]+: //')
	printf '%s -> vendor=%s, pci=%s, name=%s\n' "$d" "$vendor" "$pci" "$name"
done