TK1/TX1 Hardware Color Space Convertion

Hello support,

Is there a hardware convertion block on tegra enabling the hardware convertion of a CSI
input YUV pixel format to RGB pixel format (and inversely) ?
If this component is available on Tegra platform, can we get frames on these 2 pixel format (YUV and RGB) ?

This input will be retrieved through V4L2 capture device.

Best regards,

hello Romary,

we do have hardware component to do format conversion.
may i have more details about your use-case?

for example, what’s the input device? which output pixel format you would like to use?


Input device is CSI bus
Output API is MMAPed V4L2 buffer

  • Pixel Converter: Case 1:
    Input pixel format: UYVY
    Output pixel format: RGB24

  • Pixel Converter: Case 2:
    Input pixel format: UYVY
    Output pixel format: I420

  • Pixel Converter: Case 3:
    Input pixel format: RGB24
    Output pixel format: I420

  • Pixel Converter: Case 4: Only required if HDMI output doesn’t support RGB24 display
    Input pixel format: RGB24
    Output pixel format: Native HDMI output format

hello Romary,

you could using NvVideoConverter to do format converting.
The video converter device node is “/dev/nvhost-vic”

please also refer to the sample code in tegra multimedia api

In the tegra multimedia api documentation nvee_docs/group__V4L2Conv.html,V4L2 NV Extensions API

  • ABGR32 is supported
  • RGB24 is not mentionned.

In the Tegra_X1_TRM_DP07225001_v1.1p.pdf, Page 684, Table 43: Pixel Format Support, there is also no support of RGB24 color space, but only those with Alpha layer (32Bits).

Could you confirm that RGB24 is not supported at none of the K1/X1 hardware color space engine ?

In order to support ABGR32 VIC color space engine format, we could setup the VI3 CSI input engine to write CSI data in ARGB32 format. Could you confirm this way we could convert V4L2_PIX_FMT_ABGR32 to V4L2_PIX_FMT_YUV420M / I420 using the encodre ?

Could you also confirm that this solution would increase by 33% external memory bus bandwidth ?


Sorry for the late follow up on this thread …you are right RGB24 is not supported. On Tegra display, RGB surface must be either 32-bit or 16-bit.

We will respond your 2nd question ASAP.

hello Romary,

  1. video converter(VIC) can do RGBA -> YUV420 conversion.
  2. please enable tegrastat and running the sample code in tegra multimedia api to evaluate the performance.

also, here’s reference about tegrastat:

Thank you for your reply.