PIXEL_FMT_RAW16 Pixel Data

We are using in our products the Jetson Nano with an IMX219 (LI-IMX219-MIPI-FF-NANO) camera. Our applications requires access to the raw bayer image of the camera. Therefore we are using the Argus API with an EGLStream and the pixel format Argus::PIXEL_FMT_RAW16.

The IMX219 camera sensor claims to have 10 bit ADC and also the Argus API function iSensorMode->getOutputBitDepth() returns the pixel depth as 10 bit. The Argus frame buffer is storing the 10 bit bayer pixels as 16 bit as expected for the pixel format PIXEL_FMT_RAW16.

Naturally we would expect that the 10 bit pixel data is stored like this in the 16 bits (D for pixel data):

 MSB                                                         LSB
  0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15
-----------------------------------------------------------------
| 0 | 0 | 0 | 0 | 0 | 0 | D | D | D | D | D | D | D | D | D | D |
-----------------------------------------------------------------

However, after checking which of the 16 bits are changing between frames we saw this:

 MSB                                                         LSB
  0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15
-----------------------------------------------------------------
| 0 | 0 | D | D | D | D | D | D | D | D | D | D | D | D | D | 0 |
-----------------------------------------------------------------

13 bits of the 16 bits are changing while the 2 MSBs and the LSB are always 0.
Creating a debayered image from the pixel data works perfectly fine.

We would like to know which of the 16 bits data are the 10 bits camera sensor data and why we see 13 bits flipping.

We are using L4T r32.4.3

Have a check TRM for it.

image

Thank you, that helped.

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