Codec not supported on this GPU, or is it

• Hardware Platform (Jetson / GPU) dGPU, Ubuntu 18.04, Tesla T4
• DeepStream Version 6.0
• TensorRT Version 8.0.1
• NVIDIA GPU Driver Version (valid for GPU only) 470.63.01

Hi, I am able to decode and UDP an H264 video file using:

sudo gst-launch-1.0 filesrc location= streams/sample_1080p_h264.mp4 ! qtdemux ! h264parse ! nvv4l2decoder ! nvv4l2h264enc ! rtph264pay ! udpsink port=xxxx host=xxx.xxx.xx.xx

However, when I try to do do the same with a live video source encoded on a separate machine without an NVIDIA GPU, I get an error like this one:

sudo gst-launch-1.0 videotestsrc ! x264enc ! nvv4l2decoder ! nvv4l2h264enc ! fakesink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Redistribute latency...
terminate called after throwing an instance of 'NVDECException'
  what():  cuvidv4l2_handle_video_sequence_cb : Codec not supported on this GPU at src/cuvidv4l2_nvdec.cpp:223

Aborted

Am I doing something wrong?

Do you mean you run this gst-launch pipeline on a machine without NVIDIA GPU hardware?

If so, how could you install the Nvidia driver correctly on such device?

nvv4l2decoder is Nvidia module which depends on Nvidia GPU hardware.(Gst-nvvideo4linux2 — DeepStream 6.0 Release documentation) You can not use it without Nvidia GPU hardware and driver.

Wow, I really flubbed my wording there, sorry. This command was run on the NVIDIA machine to show the error that I am seeing with just one command. In reality, I’m encoding on a phone and UDPing it to the NVIDIA machine, which tries to decode and shows this error despite it having a Tesla T4 with driver which work pristinely in the filesrc example.

So please use the following pipeline:
gst-launch-1.0 videotestsrc ! x264enc ! h264parse ! nvv4l2decoder ! nvv4l2h264enc ! fakesink

That pipeline in particular avoids the error, but I still get the error when inserting h264parse into an even slightly larger system, that is:

Sender -

gst-launch-1.0 videotestsrc ! x264enc ! rtph264pay config-interval=3 ! udpsink port=xxxx host=$NVIDIA_MACHINE_IP

Receiver -

sudo gst-launch-1.0 udpsrc port=xxxx ! application/x-rtp ! rtph264depay ! h264parse ! nvv4l2decoder ! fakesink
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
terminate called after throwing an instance of 'NVDECException'
  what():  cuvidv4l2_handle_video_sequence_cb : Codec not supported on this GPU at src/cuvidv4l2_nvdec.cpp:223

Aborted

Whoa, if I switch formats to something with “NV” in it, it works fine. Crazy.
nvv4l2decoder has no problem receiving this over udp:

gst-launch-1.0 videotestsrc ! video/x-raw,format=NV12 ! x264enc ! rtph264pay ! udpsink port=xxxx host=xxx.xxx.xxx.xxx

Guess that solves my problems, thanks for listening.

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