cuvid decoder occupy a whole core of cpu

Hi all,

I’m trying to use h264_cuvid and hevc_cuvid decoders.

There is a cuda thread taking a whole cpu core, like some kind of busy waiting. The stack looks like:

Thread 1 (process 9104):
#0  0x00007f6697702e60 in ?? () from /usr/lib64/libcuda.so.1
#1  0x00007f66976f639d in ?? () from /usr/lib64/libcuda.so.1
#2  0x00007f66977038a8 in ?? () from /usr/lib64/libcuda.so.1
#3  0x00007f672a63583d in start_thread () from /lib64/libpthread.so.0
#4  0x00007f6729a00fcd in clone () from /lib64/libc.so.6

If I create multiple decoders in a proccess, only one cuda thread occupy a single cpu core.

If I create a decoder in one proccess, each proccess has a thread taking a whole cpu core.

Even when I delete the decoder, this thread remains. Only when I kill the proccess, this thread quit.

I have test several versions of ffmpeg: 3.3.1, 3.3.2, git snap shot of 2017-07-07,

And test two nvidia cards: quadro k1200, gtx 1060 with driver version 381.22.

This situation remains the same.

Is this a problem? Are there some work arounds?

Jing Zhang

No one have a clue?
May I post this thread in this board?
Should I post it some other board?

you might want to look into using NVDEC instead.

Thank you!

FFMpeg didnot contain the nvdec stuff yet. It only had a encoder named nvenc.
I’ll check NVDEC.

Sorry, I was confused. If you are using the latest SDK, cuvid uses nvdec

No, I’m not using SDK directly, FFMPEG add dynamic loading of cuvid.
And I installed the newest NVIDIA driver (contained the cuda runtime).