Will HEVC Main 10 Profile decoding work using CUVID? When?

Developers, answer please HEVC Main10 hardware decoding will work via the CUDA (CUVID) API on Windows (I like XP)? HEVC 3840x2160 8bit hardware decoding via CUVID works pretty well on Windows XP with comparatively cheap (~100$) Palit GTX 750 1GB NE5X750THD01-2065F on GM206-150-A1 chip (I tried with last 368.81 XP driver) in MPC-HC HomeCinema x86 1.7.10.236 (KMPlayer 4.0.0.0, DVBViewer 5.3.1) with LAV Video Decoder 0.68.1 (not last beta of decoder) - NVIDIA CUVID in Hardware Acceleration tab. But I need HEVC 3840x2160 10bit so almost all SAT (excluding NASA and Hispasat 4K) UHD channels I can receive are 10bit.
PS. HEVC Main10 hardware decoding works well with DXVA2 native in LAV Video Decoder on Windows7x64 on EVR, but once more I like WindowsXP with VMR7windowed - it never stuttering video when I manually set frequency of monitor equal (when interlaced) or double (on movies with MadVR better then with VMR7w) video frequency (i.e. 47,952Hz = 2*23,978Hz).
If HEVC Main10 hardware decoding already must work via CUVID (with what driver?) what can I say to LAV Video Decoder’s developer to implement subj in his decoder.

I am also interesting this.

I am trying to decode samples from demo-uhd3d.com with cuvid on GM206 [GeForce GTX 960]. it decode but result is unusable. I did a tests against cuda_7.5.18_linux with 352.79, 367.35, 370.28 drivers - result is the same:

I-frames decoded but color components either truncated or clipped - looks like somebody trying to work with 10-bit data in 8 bit way, B/P-frames full garbage (tiled output http://downloads.m1stereo.tv/e78239b6c1dc332fe88543dbc4b8dd8f/Samsung_HDR_-_Chasing_the_Light.ts-001.jpg )

I reviewed cuviddec.h from cuda-8.0 and there are no noticed about 10-bit.

So the question is still open:

  • What is a status HEVC Main10 in cuvid?
  • What board support decoding it?

Just for the record, the developer has no interest in exposing 10bit support as long as it doesn’t return 10bit output frames. Presumably nvidia will add it eventually but no sign of it yet.

What you can do it is convince it to decode the 10bit content and then dither it down to 8bit to return as NV12. This is undocumented, and I discovered it by accident, but there you go:

https://github.com/FFmpeg/FFmpeg/commit/289a6bb8b11822aaea1b174d5d938a081e19a084

You need the headers from “Video SDK 7.0”. No version of the cuda SDK ships with the right headers.

As for supported hardware, look at the matrix on the video sdk page.

It’s a pity I am not programmer.
You want to say that i.e. Windows’s nvcuvid.dll 6.14.13.6881 NVIDIA CUDA Video Decode API, Version 368.81 is good enough to hardware decoding HEVC MAIN 10 even by dithering to 8bit?
I am not sure if LAV Video Decoder’s developer will do cuvid: Pass bit depth information to decoder · FFmpeg/FFmpeg@289a6bb · GitHub changes it will work in my case so hardware decoding not turning on Windows XP and 7x64 at all unlike max_verem. Our hardware - GM206 - is good enough for hardware decoding HEVC Main 10.
May be if playing file is HEVC 10bit LAV Video Decoder not using CUVID automatically?

Many thanks to philipl for hint! It is working!

decoding results could be found at http://downloads.m1stereo.tv/a1f5fbd4cbce67cd11cbb35b54e40edb/

for compiling you can apply patch from cuvid: Pass bit depth information to decoder · FFmpeg/FFmpeg@289a6bb · GitHub

and do a fix of header file in Cuda-7.5:

— cuviddec.h.origin 2016-09-21 19:04:44.000000000 +0200
+++ cuviddec.h 2016-09-28 07:32:36.638859241 +0200
@@ -108,7 +108,8 @@
cudaVideoCodec CodecType; // cudaVideoCodec_XXX
cudaVideoChromaFormat ChromaFormat; // cudaVideoChromaFormat_XXX (only 4:2:0 is currently supported)
unsigned long ulCreationFlags; // Decoder creation flags (cudaVideoCreateFlags_XXX)

  • unsigned long Reserved1[5]; // Reserved for future use - set to zero
  • unsigned long bitDepthMinus8;
  • unsigned long Reserved1[4]; // Reserved for future use - set to zero
    struct { // area of the frame that should be displayed
    short left;
    short top;

anyway, question still open about 10-bit surface?

maybe somebody knows about NV210 or NV120 surface type?