Nvcsi, vi -- Pixel Format -- Doubts

Hi All,

We are using the Jetson Tx2 board.

In TRM, in Vi, PIXFMT section,

27.10.1 Input Data Formats
NVCSI provides input to VI4 in one of several formats. The NVCSI pixel format specification) describes the pixel formats presented through the NVCSI interface to VI4. In short, NVCSI can transmit the following pixel formats, at the following bus widths:

• RAW 8ppc: RAW6, RAW7, RAW8, RAW10, RAW12, RAW14, embedded-8
• RGB 8ppc: RGB444, RGB555, RGB565
• RGB 4ppc: RGB666, RGB888
• YUV 8ppc: YUV420-8 legacy, YUV420-8 CSPS, YUV422-8
• YUV 4ppc: YUV422-10
• YUV mixed: YUV420-10 CSPS

The doubt is: For YUV422-8 data type, YUV 8ppc is there.
Can we use YUV 2ppc or YUV 4ppc to YUV422-8 data type?

Where can I get the “NVCSI pixel format specification” document?

-Thanks.

hello BalajiNP,

you could check the header file,

<top>/kernel/kernel-4.4/drivers/media/platform/tegra/camera/vi/vi4_formats.h

may I know what’s the purpose for using YUV 2ppc or YUV 4ppc to YUV422-8 data type?
thanks

Hello JerryChang,

Thanks for the reply. I will look into this source.

Need the below details:

  1. For single bricks, What are the pixel formats, nvcsi accepts?
  2. For two bricks combined (Merging after received in Vi), not 8-lane de-interleave mode, what are the pixel formats, nvcsi accepts?
  3. For three bricks combined (Merging after received in Vi), what are the pixel formats, nvcsi accepts?

Please provide the proper document for this.

The use case is: 12G data will be sent to three bricks by splitting the 4G per brick and combine them after receive it. What are the pixel formats, we can use for this?

-Thanks.

hello BalajiNP,

there’s similar topic, Topic 1042658
you may refer to below sources,

<top>/kernel_src/hardware/nvidia/platform/t18x/quill/kernel-dts/quill-modules/tegra186-camera-imx274.dtsi 
<top>/kernel_src/kernel/kernel-4.4/drivers/media/i2c/tc358840.c

also, NVCSI do not support 12-lane configuration.
thanks

Hello JerryChang,

Thanks for the reply.

For comment 2, the query is:

may I know what’s the purpose for using YUV 2ppc or YUV 4ppc to YUV422-8 data type?

The custom Fpga is CSI2 Tx and the output is: YUV 2ppc or YUV 4ppc to YUV422-8 data type.

Please provide your inputs. The doubt is in comment #1.

-Thanks.

hello BalajiNP,

please refer to TRM for the [YUV Memory Formats],
you should keep the pixel formats as YUV422-8 in memory.
thanks

Hi JerrryChang,

could you please provide examples for all RAW memory formats (T_R16, T_R32, T_L16_F, T_L32_F)? In TRM (TX2) are examples only for T_R16_I, and T_L8 (Figure 198, 199). We are considering other pixel formats then default.

Is it safe to use other pixel formats, that are supported (Table 359 in TRM for TX2)?

thanks

hello d.kristofic,

you could refer to below kernel sources for default supported pixel formats, please check extract_pixel_format() function.

<top>/kernel_src/kernel/kernel-4.4/drivers/media/platform/tegra/camera/sensor_common.c

also, these pixel formats were following the v4l2 standard, you might refer to below to extend the support types. thanks

<top>/kernel_src/kernel/kernel-4.4/include/uapi/linux/videodev2.h

Hi JerryChang,

I’m referring to Pixel Format in Memory on the VI side, PIXFMT block of VI to be precise. Please check 27.10.6 paragraph of TX2 TRM document, and if you could provide information on how are pixels packed (bit vise) for RAW Memory Format.

Thanks

hello d.kristofic,

please also refer to Topic 1036708 for details.
thanks