Device / Software Info
$ cat /etc/nv_tegra_release
R36 (release), REVISION: 4.3, GCID: 38968081, BOARD: generic, EABI: aarch64, DATE: Wed Jan 8 01:49:37 UTC 2025
KERNEL_VARIANT: oot
TARGET_USERSPACE_LIB_DIR=nvidia
TARGET_USERSPACE_LIB_DIR_PATH=usr/lib/aarch64-linux-gnu/nvidia
$ uname -r
5.15.148-tegra
$ jetson_release
Software part of jetson-stats 4.3.2 - (c) 2024, Raffaello Bonghi
Model: NVIDIA Jetson Orin NX Engineering Reference Developer Kit Super V2Board - Jetpack 6.2 \[L4T 36.4.3\]
NV Power Mode\[0\]: MAXN_SUPER
Serial Number: \[XXX Show with: jetson_release -s XXX\]
Hardware:
- P-Number: p3767-0000
- Module: NVIDIA Jetson Orin NX (16GB ram)
Platform:
- Distribution: Ubuntu 22.04 Jammy Jellyfish
- Release: 5.15.148-tegra
Libraries:
- CUDA: 12.6.68
- cuDNN: 9.3.0.75
- TensorRT: 10.7.0.23
- VPI: 3.2.4
- OpenCV: 4.8.0 - with CUDA: NO
Problem Description
I capture camera frames from nvargus as NV12
Then I do two downstream operations:
- Encode JPEG directly from NV12
- Convert NV12 to RGBA (or RGB) using VIC or VPI
The JPEG output looks correct, but the RGBA/RGB output is consistently yellow-ish (color cast).
Because JPEG is correct, I suspect the source NV12 data itself is fine, and the issue may be in color conversion (matrix/range/color format interpretation).
I tried changing the NV12 buffer format from:
- NVBUF_COLOR_FORMAT_NV12
to - NVBUF_COLOR_FORMAT_NV12_709_ER
- NVBUF_COLOR_FORMAT_NV12_709
but the yellow cast remains.
I also tried CUDA kernel conversion, and still got yellow-ish RGB output.
Question
What could be the likely root cause here?
Is there any known issue or required setting when converting Argus NV12 to RGBA/RGB via VIC or VPI on JetPack 6.2 / L4T 36.4.3?
Reference Test (GStreamer)
With GStreamer, the output looks good:
gst-launch-1.0 nvarguscamerasrc num-buffers=1 ! \\
'video/x-raw(memory:NVMM),width=2064,height=1552,format=NV12' ! \\
tee name=t \\
t. ! queue ! nvvidconv ! video/x-raw,format=NV12 ! filesink location=nv12.yuv \\
t. ! queue ! nvvidconv ! video/x-raw,format=RGBA ! filesink location=rgba.raw
So the issue seems specific to my conversion path in code rather than camera source data itself.
