Trying to get nvdec working with gstremer on a headless Ubuntu 16.04 with a Quadro P4000 card.

I have a Ubuntu 16.04 headless server with a Quadro P400 card and I am trying to use nvdec to decode a stream in gstreamer. My pipeline is:

gst-launch-1.0 rtspsrc location=rtsp://service:service@ ! rtpbin ! rtph264depay ! nvdec ! fakesink

I can see the process using the card with nvidia-smi. However, I get the following errors from gstreamer:

(gst-launch-1.0:31246): GStreamer-CRITICAL **: 13:24:39.843: gst_buffer_pool_acquire_buffer: assertion 'GST_IS_BUFFER_POOL (pool)' failed
0:00:07.239858185 31246 0x7f1f4c0061e0 WARN                   nvdec gstnvdec.c:881:handle_pending_frames:<nvdec0> failed to allocate output frame
0:00:07.306292163 31246 0x7f1f4c0061e0 WARN                glwindow gstglwindow.c:293:gst_gl_window_new: Could not create window. user specified (null), creating dummy window
0:00:07.306647313 31246 0x7f1f48592990 WARN               glcontext gstglcontext.c:1244:gst_gl_context_create_thread:<glcontextegl88> Failed to create context
0:00:07.306733761 31246 0x7f1f4c0061e0 ERROR                  nvdec gstnvdec.c:1045:gst_nvdec_decide_allocation:<nvdec0> failed to create OpenGL context
0:00:07.306765017 31246 0x7f1f4c0061e0 WARN            videodecoder gstvideodecoder.c:3772:gst_video_decoder_negotiate_pool:<nvdec0> Subclass failed to decide allocation

Any idea what I am doing wrong? David

Running into the same issue. Any insights?


This is outside my area of expertise. Have you checked whether

(1) Your use case may be affected by the restrictions / limitations spelled out in the support matrix?[url][/url]

(2) The amount of memory on this lowest-end Quadro may be insufficient for your use case?

[Later:] There seems to be some confusion here. The subject line says “Quadro P4000” while the question itself says “Quadro P400”. Which is it?

Actually my card is a GTX 1080TI with plenty of memory.

Since it is ubuntu headless and the error is a failure to create OGL context, I would want to make sure that the GPU driver is properly installed with OpenGL libraries. Furthermore, making sure the OGL context is attempting to create on the NVIDIA GPU (as opposed to some other GPU that may be in the system) may be important.

export the following variable in your environment:

export GST_GL_WINDOW=gbm

then play your pipeline