Hailo 8 RTSP `Missing Decoder` gstreamer error

Hey!

Just a bit of background on my setup

  • Host: Raspberry Pi 5 Model B Rev 1.1, Debian GNU/Linux 13 (trixie)
  • Kernel / PCIe: Hailo-8 AI Accelerator (Device Architecture: HAILO8)
  • Python: 3.13.5
  • GStreamer: 1.26.2

I am running the latest version of the hailo packages

  • hailort == 4.23.0
  • hailort-pcie-driver == 4.23.0
  • hailo-tappas-core == 5.1.0
  • python3-hailo-tappas == 5.1.0
  • python3-hailort == 4.23.0-1

And here is the info on my board

  • Firmware Version: 4.23.0
  • Device Architecture: HAILO8
  • Board Name: Hailo-8

I have been playing around with using an rtsp input to some of the pipeline_apps but I am always running into the same error, namely:

ERROR | gstreamer.gstreamer_app | GStreamer Error: gst-core-error-quark: Your GStreamer installation is missing a plug-in. (12), debug: ../gst/playback/gstdecodebin2.c(4720): gst_decode_bin_expose (): /GstPipeline:pipeline0/GstDecodeBin:source_decodebin:
no suitable plugins found:
Missing decoder: application/x-rtp (application/x-rtp, media=(string)application, payload=(int)107, clock-rate=(int)90000, encoding-name=(string)VND.ONVIF.METADATA, a-recvonly=(string)“”, ssrc=(uint)335182571, clock-base=(uint)622283247, seqnum-base=(uint)12982, npt-start=(guint64)0, play-speed=(double)1, play-scale=(double)1, onvif-mode=(boolean)false)

I have tried editing the source_element var in the hailo_apps/python/core/gstreamer/gstreamer_helper_pipelines.py file to make sure rtspsrc only links its video pad to the rest of the pipeline. So I added the following line to the source_pipeline to include:

application/x-rtp, media=video !

But this unfortunately lead to another error:

ERROR | gstreamer.gstreamer_app | GStreamer Error: gst-core-error-quark: Unsupported pixel format (7), debug: ../sys/v4l2codecs/gstv4l2codech265dec.c(434): gst_v4l2_codec_h265_dec_negotiate (): /GstPipeline:pipeline0/GstDecodeBin:source_decodebin/v4l2slh265dec:v4l2slh265dec0:
No support for 1920x1080 format UNKNOWN

If anyone is able to offer some help it would be greatly appreciated!

Hi @user481 ,

I tested now again RTSP input for the hailo-apps Gstreamer pipeline app.
Can you please verify with a publicly free available RTSP stream the original code? Note that the URL must start with rtsp://...

Thanks,

Hey @Michael

So I made some progress on the error. If I disable the the v4l2slh265dec driver (I have found that this driver is responsible for the VPU on my Pi) then I can run the pipeline apps perfectly with the input being a RTSP stream.

Here is how I disabled the driver

registry = Gst.Registry.get()
plugin_feature = registry.lookup_feature("v4l2slh265dec")
if plugin_feature:
        hailo_logger.info("Disabling v4l2slh265dec plugin to prevent negotiation     errors")
        plugin_feature.set_rank(Gst.Rank.NONE)

When I disable this I am doing the video decoding on the Pi’s CPU rather than the VPU, so it allows me to run the code - but with the process taking around 40% CPU usage. Does anyone have any advise on how I can proceed?

1 Like

Thanks @user481 for the tip - We will look into disabling the v4l2slh265dec.

Hey @Michael

I would actually love to know if you may know what is the root cause of v4l2slh265dec driver error. I would much rather use the VPU to deal with decoding, and free up my CPU.

Thanks,

Yaakov

@user481 Just to make sure - you have a VPU hardware attached to the Pi?

Hi we use "decodebin which is an auto plugger. It selects automatically the “best” implementation for decoding. It is not always right and not all hw accelerators supports all pixel formats etc.
On your system you can use specific elements to make sure you know which one is selected and find the one that works best for you with the specific encoding and pixel formats.
You can see which one is selected by using the --dump-dot flag in our pipelines.

Hey @giladn

Thanks this helped a lot. I have determined my camera sends over the rstp stream hevc (Main), yuv420p, 1920x1080, 25fps — a chroma format (4:2:0 8-bit) what the Pi 5 VPU supports. However, the stream has non-standard color metadata: gbr/reserved/reserved colorimetry. The GStreamer v4l2codecs plugin (v1.26.2) can’t map this to a V4L2 pixel format, so it errors out with format UNKNOWN.

I am working on a way of change my camera’s settings allow changing the color space/colorimetry to standard BT.709

Otherwise if you have any advice on how I can twist GStreamer’s arm to allow the format that would be great too.

Thank you