Jetson Encoded Data does not work with other decoders than nvh265dec

Hey, I am using Nvidia Jetson XAVIER NX h265 encoder from c++ to encode data (same with gstreamer) and send it via TCP to the server. But from GStreamer only my NVh265dec element can use the data, d3d11h265dec for example throws internal data stream error. Anyone has experience with this?

To reproduce:
(Jetson) gst-launch-1.0 nvarguscamerasrc ! ‘video/x-raw(memory:NVMM), format=NV12, width=1920, height=1080’ ! nvv4l2h265enc insert-sps-pps=true ! tcpclientsink host= port=9225

(Host not working) gst-launch-1.0 tcpserversrc host= port=9225 ! h265parse ! d3d11h265dec ! autovideosink

(Host working) gst-launch-1.0 tcpserversrc host= port=9225 ! h265parse ! nvh265dec ! autovideosink

Any help is appreciated!

Could you add rtph265pay and rtph265depay for a try? A user mentions a similar command in
Gstreamer TCPserversink 2-3 seconds latency - #8 by Bazziil

Please give it a try. And may try to set idrinterval=15 to nvv4l2h265enc. To have shorter IDR interval.

Hey, thanks for your suggestions!

I tried usng rtph265pay/depay with tcp and udp src/sink. I also tried setting idrinterval=15.
None of these I could get working.

Interesting is that while nvh265dec is working and d3d11h265dec is not, the error is thrown by the src element:
ERROR: from element /GstPipeline:pipeline0/GstUDPSrc:udpsrc0: Internal data stream error.

Do you have more ideas what could be the reason?

May also try to set the proerties:

  insert-vui          : Insert H.265 VUI(Video Usability Information) in SPS
                        flags: readable, writable
                        Boolean. Default: false
  insert-aud          : Insert H.265 Access Unit Delimiter(AUD)
                        flags: readable, writable
                        Boolean. Default: false

May also try avdec_h265 plugin

Hey, thank you very very much!

Using insert-vui=1 made the pipeline on the host work! Is there any disadvantage? What could be an advantage with turning insert-aud on?

Best regards,

VUI is additional information in SPS and there’s no disadvantage to enable it. Looks like certain decoders need the information, so it shall bring better compatibility.

So on the other side, I have an Intel UHD Graphics 630, which loses a lot of frames. Is there anything I can control on the encoder side that will make it easier for the decoder to decode so that the Intel UHD Graphics 630 will be enough?

Best regards,

You may try

  1. Lower the bitrate
  2. Encode to h264

Ad check if there is improvement.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.