NVDEC doesn't support HEVC yuv444p decode
Version
nvidia-dali-cuda130 1.52.0
Describe the bug.
In my environment. I use following driver as pasted
Fri Oct 31 00:12:23 2025 +-----------------------------------------------------------------------------------------+ | NVIDIA-SMI 580.65.06 Driver Version: 580.65.06 CUDA Version: 13.0 | +-----------------------------------------+------------------------+----------------------+ | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+========================+======================| | 0 NVIDIA RTX 6000 Ada Gene... Off | 00000000:34:00.0 Off | Off | | 30% 36C P8 26W / 300W | 15MiB / 49140MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ | 1 NVIDIA RTX 6000 Ada Gene... Off | 00000000:70:00.0 Off | Off | | 30% 39C P8 22W / 300W | 149MiB / 49140MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+
and I have checked on https://developer.nvidia.com/video-encode-decode-support-matrix for nvdec support
I need to use Dali to decode as title w/
` vin = fn.readers.video(device="gpu", filenames=filenames_in, file_list_include_preceding_frame=False, sequence_length=seq_len, stride=stride, random_shuffle=False, name="reader_in") vgt = fn.readers.video(device="gpu", filenames=filenames_gt, file_list_include_preceding_frame=False, sequence_length=seq_len, stride=stride, random_shuffle=False, name="reader_gt", image_type=types.YCbCr)
## Read as uint8
vin = fn.crop_mirror_normalize(vin, device="gpu", dtype=types.FLOAT, output_layout="FCHW", mean=[0.0, 0.0, 0.0], std=[255.0, 255.0, 255.0])
vgt = fn.crop_mirror_normalize(vgt, device="gpu", dtype=types.UINT8, output_layout="FCHW")`
but it will output
root@fba5d50dcd23:~/workspace/wiwynn/tracker# uv run main.py [/opt/dali/dali/operators/image/crop/new_crop_mirror_normalize.cu:249] using CropMirrorNormalize legacy implementation /opt/dali/dali/operators/video/legacy/reader/nvdecoder/nvdecoder.cc:197: Unable to decode file ../DAG/dataset/95d0bcab-1b94-4274-b77b-a30d53efa5b1/gt_0.mp4 Traceback (most recent call last): File "/root/workspace/wiwynn/tracker/main.py", line 136, in <module> main(args) File "/root/workspace/wiwynn/tracker/main.py", line 25, in main dataset = DAGVideoDataset(base_dir="../DAG/dataset", batch_size=batch_size, max_length=1800, stride=2) File "/root/workspace/wiwynn/tracker/utils/dataset.py", line 62, in __init__ self.iterator = DALIGenericIterator(pipelines=[self.pipe], output_map=["video_in", "video_gt"], reader_name="reader_in", auto_reset=True, last_batch_policy=LastBatchPolicy.PARTIAL) File "/root/workspace/wiwynn/tracker/.venv/lib/python3.10/site-packages/nvidia/dali/plugin/pytorch/__init__.py", line 165, in __init__ self._first_batch = DALIGenericIterator.__next__(self) File "/root/workspace/wiwynn/tracker/.venv/lib/python3.10/site-packages/nvidia/dali/plugin/pytorch/__init__.py", line 180, in __next__ outputs = self._get_outputs() File "/root/workspace/wiwynn/tracker/.venv/lib/python3.10/site-packages/nvidia/dali/plugin/base_iterator.py", line 385, in _get_outputs outputs.append(p.share_outputs()) File "/root/workspace/wiwynn/tracker/.venv/lib/python3.10/site-packages/nvidia/dali/pipeline.py", line 1440, in share_outputs return self._pipe.ShareOutputs(types._raw_cuda_stream_ptr(cuda_stream)) RuntimeError: Critical error in pipeline: Critical error in pipeline: Error in GPU operator nvidia.dali.fn.readers.video`,
which was used in the pipeline definition with the following traceback:
File "/root/workspace/wiwynn/tracker/utils/dataset.py", line 17, in video_pipe vgt = fn.readers.video(device="gpu", filenames=filenames_gt, file_list_include_preceding_frame=False, sequence_length=seq_len, stride=stride, random_shuffle=False, name="reader_gt", image_type=types.YCbCr)
encountered:
CUDA driver API error CUDA_ERROR_NOT_SUPPORTED (801): operation not supported Current pipeline object is no longer valid. Current pipeline object is no longer valid.`
I have tried w/ yuv420p it will run normally but when I changed to yuv444p it will have this issue
here's the test yuv444p video download link
Minimum reproducible example
Relevant log output
Other/Misc.
No response
Check for duplicates
- [x] I have searched the open bugs/issues and have found no duplicates for this bug report
Hi @NickLin910221,
Thank you for bringing this to our attention.
It appears that the GPU supports this format as input; however, DALI currently requests decoding to NV12 format, while only YU444 is supported in hardware. Addressing this will require extending the logic so that the decoding output type depends on hardware capabilities, as well as implementing color conversion to handle different chroma sampling patterns.
Could you check if PyNvVideoCodec might help with your use case? It focuses on video decoding and offers a more comprehensive solution in this domain.
I’ll add this issue to our ToDo list for further investigation.