NVDEC not supporting H.264 (4.4.4) when NVENC does?

I’m trying to encode/decode in the YUV 4:4:4 colorspace with the H.264/AVC codec, but while NVENC has no problem encoding my 4:4:4 file, NVDEC doesn’t seem able to decode it.

I’m using a RTX 4000 with the latest SDK (10.0.26) sample app for both encoding (AppEncD3D11.exe) and decoding (AppDec.exe). The H.264 / 4:4:4 file is valid (I checked it against others decoders) and the AppDec.exe error occur in NvDecoder.cpp when doing the decode caps check:

CUDA_DRVAPI_CALL(cuCtxPushCurrent(m_cuContext));
NVDEC_API_CALL(cuvidGetDecoderCaps(&decodecaps));
CUDA_DRVAPI_CALL(cuCtxPopCurrent(NULL));

if(!decodecaps.bIsSupported){

Checking the Encode and Decode GPU support Matrix, the Encoder section clearly specified H264 4:2:0, 4:4:4 and lossless as being supported, but the Decoder section is less descriptive with only one AVCHD column for H.264 (AVCHD is an old Sony/Panasonic format which doesn’t support UHD or lossless, but NVDEC does, so that description seem invalid)

So my question is does NVDEC support H.264 / 4:4:4 or did Nvidia create a GPU/SDK codec that can only encode this format, without being able to decode it?

PS: HEVC / 4:4:4 is working fine in NVENC/NVDEC, but I need to use the H.264 codec for my application

Hi.
In NVDEC hardware for H.264 only 4:2:0 decode is supported. We will update the GPU support matrix to explicitly mention this.

Thanks.

It’s with great sadness that I confirm that no GPU vendor support HW H264 4:4:4 DECODING.
The best solution you have is to use FFMPEG to do SW decoding of H264 4:4:4, but make sure you enable multi-slice encoding so that FFMPEG can multi-thread the decoding otherwise performance is not going to be very nice for high resolutions.

NVIDIA’s HEVC 4:4:4 ENCODE/DECODE works great though.