Nvidia Video Codec SDK samples not working (it runs, but does nothing)

Hi, I’m on Ubuntu 64bits 16.04 and I have a GeForce GTX 750 Ti with driver version 367.35. I’m able to compile the examples and then when I run the NvDecodeGl example it only says:

~/workspace/cuda/Video_Codec_SDK_7.0.1/Samples/NvDecodeGL$ ./NvDecodeGL 
[NVDECODE/OpenGL Video Decoder]
Command Line Arguments:
argv[0] = ./NvDecodeGL
[NVDecodeGL]: input file:  [../common/video/plush1_720p_10s.m2v]


(and nothing else happens)

More info on the hardware/software using nvidia-smi:

~/workspace/cuda/Video_Codec_SDK_7.0.1/Samples/NvDecodeGL$ nvidia-smi 
Fri Aug 12 21:04:23 2016       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 367.35                 Driver Version: 367.35                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 750 Ti  Off  | 0000:01:00.0     Off |                  N/A |
| 30%   34C    P8     1W /  38W |    258MiB /  2000MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0      1221    G   /usr/lib/xorg/Xorg                             184MiB |
|    0      1943    G   /usr/bin/krunner                                25MiB |
|    0      1967    G   /usr/bin/plasmashell                            74MiB |
|    0     17005    G   /usr/lib/firefox/firefox                         1MiB |
+-----------------------------------------------------------------------------+

Please help me!

run nvcc -std=c++11 --ptx  -I../common/inc NV12ToARGB_drvapi.cu and
rename NV12ToARGB_drvapi.ptx NV12ToARGB_drvapi_x64.ptx

I run the nvcc command successfully on folder Video_Codec_SDK_7.0.1/Samples/NvDecodeGL. Then I renamed NV12ToARGB_drvapi.ptx to NV12ToARGB_drvapi_x64.ptx. Further, I copied it to the data/ folder as there already was a file with that name there so I replaced it with the new one.

But the same thing still happens when I execute ./NvDecodeGL

Any ideas?

I’m having exactly the same problem. And my ptx is already named NV12ToARGB_drvapi_x64.ptx, so I’m guessing they fixed that in the meanwhile. Very strange that with all their error checking it somehow still ends up in an infinite loop of nothingness. Kind of erodes my confidence in NVDEC…

Upon debugging, it seems that the cuvidCreateVideoSource method call is hanging. Seems someone else ran into this problem as well: c++ - Decode video in Cuda using a socket / memory instead of a file - Stack Overflow

Anyone have any ideas as to whether the method is at fault or the calling syntax? It is a sample after all…

What are you trying to do? Unless you’ve got a really good reason to be working with nvdecode directly, you’re better off using ffmpeg’s cuvid decoder, and being able to use ffmpeg for all the other stuff like loading and demuxing.

Trying to render a bunch of videos simultaneously. FFMPEG (or libav) would be great, except even if they decode on the GPU, they copy it back to CPU RAM before you can access it, which creates a bottleneck if all you want to do with the movie is display it (better to leave it in GPU memory).

However, I also found the solution to NvDecodeGL not working: just use cudaDecodeGL from the CUDA Toolkit instead, it works perfectly, and demonstrates the same thing.

I just want to say thanks to elalish, because of his efforts. I’ll try cudaDecodeGL

If all you care about is playback, use mpv; it has cuda/opengl interop so that the whole pipeline is kept in GPU memory.

Any recommended way to interop with Vulkan? Is it possible to integrate CUDA (cudaDecodeGL) and Vulkan?

Thanks for the MPV pointer, that looks like exactly what I need! And much simpler than the cuda samples, not to mention useful on more cards.

I am also having the same problem as Findeton and elalish. Since I haven’t been able to find an explanation as to why the cuvidCreateVideoSource is hanging (or how to properly handle the problem), I am checking here again. Anyone able to help?

To make the decoder code sample work, you need to compile the NvDecodeGL with nvcc. NVidia should change their makefile. It is definitely not obvious that this needs to be done!!!