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:
UYVY
NV16
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-negotiated
or- Pipeline doesn’t transition to PLAYING
Our Questions
- What’s the correct way to build a GPU-only pipeline when the camera supports
UYVY
andNV16
, but the pipeline refuses to start? - Is it safer to request
format=NV16
from the camera instead ofUYVY
? - How do we confirm whether
nvv4l2camerasrc
supportsUYVY + memory:NVMM
input on our Jetson platform? - Are there known limitations on
nvv4l2camerasrc
formats that override whatv4l2-ctl
reports? - 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!