Using NVDEC 8.0 with D3D11


I’m developing a decoder, based on NVDEC 8.0 API to process H264 streaming. However, I stumbled upon an inability to figure out if and how I can render decoded frames to D3D11 surfaces without copying frames back to main memory. I went over the cudaDecodeD3D9 code sample, provided with SDK several times, but it ultimately uses D3D9 technology and I’m bound to use existing D3D11Device instance, provided from outside rendering component. I’m really stuck trying to figure this out, please advise.

Best regards

P.S. I’m rather noob in video processing, so any detail will be appreciated!

There is a sample – “NvDecodeD3D11.exe” which is shipped along with the Video Codec sdk. It does precisely the thing that you are looking for.

It seems that you are using the old decode API, which is a part of our CUDA SDK. Although this API is included in CUDA SDK for historical reasons and convenience, going forward, we recommend that you only refer to the APIs shipped via Video Codec SDK.

Thanks a lot, Vignesh. It was confusing, since I thought the latest CUDA 8.0 SDK would contain the most recent samples.