I’ve got a multithreading application with the Cuda H264 decoder libaries. The decoder works fine with the NV12toYUV conversion done by CPU. I wanted to add the NV12TORGB (NV12ToARGB_drvapi) conversion from the SDK samples in order to speed up the whole decoding process. I’ve got a 999 error code on then a 700 error code (CUDA_ERROR_LAUNCH_FAILED) on cuvidMapVideoFrame function call. I suppose there is a possible conflict on multi threading with the H264 library and the fact to load and launch a Cuda module. I use the GTX280 and the last version of the cuda2.0 and last evrsion of driver. I saw Eric Young posted a solution but I can’t download it from the forum site - Download error from the server ?
So, has this changed? I’m about to test it. Here is an interesting result on CUDA 4.2 for Ubuntu 12.04:
$ nm -D /usr/lib/libnvcuvid.so.295.40 |grep cuvid
0000000000012180 T cuvidCreateDecoder
000000000000ec60 T cuvidCreateVideoParser
0000000000040f10 T cuvidCreateVideoSource
0000000000040e00 T cuvidCreateVideoSourceW
00000000000120a0 T cuvidCtxLock
0000000000012300 T cuvidCtxLockCreate
0000000000012280 T cuvidCtxLockDestroy
00000000000120d0 T cuvidCtxUnlock
0000000000011f80 T cuvidDecodePicture
0000000000012100 T cuvidDestroyDecoder
000000000000d4c0 T cuvidDestroyVideoParser
00000000000407a0 T cuvidDestroyVideoSource
0000000000040930 T cuvidGetSourceAudioFormat
0000000000040b30 T cuvidGetSourceVideoFormat
0000000000040660 T cuvidGetVideoSourceState
0000000000011fa0 T cuvidMapVideoFrame
0000000000011ff0 T cuvidMapVideoFrame64
000000000000d930 T cuvidParseVideoData
0000000000040600 T cuvidSetVideoSourceState
0000000000012040 T cuvidUnmapVideoFrame
0000000000012060 T cuvidUnmapVideoFrame64
It appears that the hooks are now in the Linux library for GPU video decoding via CUDA. Has anyone tested it out?