Libargus c++ api returns yuv frames with null uv-plane

I have an IMX477 camera connected to Jetson Orin Nano. The camera provides a normal colored video stream using a gst-launch script.

However, when I try to run the c++ examples provided in jetson-multimedia-api-reference, I get the yuv420p (YCbCr_420_888) frame with an ok Y plane, but the UV plane is all zeros (sized correctly). When I convert the .yuv image to .jpeg (via ffmpeg), the image is well-lit and detailed, but green. I tried setting a lower resolution and turning the IspStage off, but it changed nothing.

So far I tried the approaches in examples argus/samples/rawBayerOutput and argus/samples/yuvOneShot. For the first one i changed the pixelformat to yuv. But the RAW16 provided originally also didn’t seem to have any color. I changed almost nothing in the yuvOneShot example, just disabled the preview thread (running headless).

Any ideas on what i’m doing wrong?

hello mstunda,

just double check, is it Raspberry PI HQ camera, IMX477?

besides,
may I also know what’s your real use-case, would you like to receive the frames with YUV420p?

Hi,
Yes, it’s the reaspberry camera, Revision D.
I have a C++ application that processes, encodes, and forwards frames to various endpoints. I want to obtain frames in yuv420p, yes.

hello mstunda,

Bayer Raw camera sensors it’s by default processed by internal ISP as YUV420SP, (or, NV12).
for instance, here’s simple gst pipeline for launching camera to preview.
$ gst-launch-1.0 nvarguscamerasrc ! 'video/x-raw(memory:NVMM),framerate=30/1,format=NV12' ! nvvidconv ! xvimagesink

hence,
you may try adding video converter to covert from YUV420SP to YUV420P.
for example,
$ gst-launch-1.0 nvarguscamerasrc ! 'video/x-raw(memory:NVMM),framerate=30/1,format=NV12' ! nvvidconv ! 'video/x-raw, format=(string)I420, width=640, height=480' ! queue ! xvimagesink -e

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.