We’re trying to run a fully GPU-only camera pipeline on Jetson AGX Orin (JetPack 5), using nvv4l2camerasrc and nvvidconv with zero CPU fallback. The goal is to keep the entire pipeline in memory:NVMM, and avoid CPU-based videoconvert or memory copies.
Camera Capabilities
Using v4l2-ctl, our camera reports support for the following formats:
UYVYNV16
nvvidconv Capabilities
Our installed nvvidconv plugin supports (for both video/x-raw(memory:NVMM) and video/x-raw):
- YUV:
UYVY,YUY2,NV12,NV16,NV24,YVYU,I420,Y42B,Y444 - RGB:
RGBA,BGRx - Grayscale:
GRAY8 - High bit-depth:
P010_10LE, etc.
We expect the following pipeline to run fully in GPU memory:
pipeline << "nvv4l2camerasrc device=/dev/video0 ! "
<< "video/x-raw(memory:NVMM), width=1920, height=1080, format=UYVY ! "
<< "nvvidconv ! video/x-raw(memory:NVMM), format=NV12 ! "
<< "tee name=t ";
pipeline << "t. ! queue ! "
<< "appsink name=raw_sink emit-signals=false sync=false ";
(side mark: We split the pipeline with tee because we also need to add compressed and dewarped streams later.)
However:
gst_parse_launch()fails withnot-negotiatedor- Pipeline doesn’t transition to PLAYING
Our Questions
- What’s the correct way to build a GPU-only pipeline when the camera supports
UYVYandNV16, but the pipeline refuses to start? - Is it safer to request
format=NV16from the camera instead ofUYVY? - How do we confirm whether
nvv4l2camerasrcsupportsUYVY + memory:NVMMinput on our Jetson platform? - Are there known limitations on
nvv4l2camerasrcformats that override whatv4l2-ctlreports? - What’s the best fallback strategy that still preserves NVMM and avoids CPU memory?
We’ve tried several permutations, but haven’t been able to get the pipeline running in full GPU mode. Any help would be greatly appreciated!