YUV444 Full chroma 8/10-bit Support - 2023.1 English

H.264/H.265 Video Codec Unit v1.2 Solutions LogiCORE IP Product Guide (PG252)

Document ID
Release Date
2023.1 English

VCU encoder and decoder supports encoding and decoding of YUV444 Full chroma 8-bit and 10-bit format support at gstreamer level from the 2022.1 release onwards.

This feature does the following:
  • Enables the capture of YUV444 Full chroma 8-bit and 10-bit video from HDMI-RX.
  • The video can be displayed on HDMI-TX or DisplayPort and recorded on SD cards or USB/SATA drives.
  • The module can stream-in or stream-out encoded data through an ethernet interface.
  • This module supports up to single-stream 4kp30 YU24 (3 Planar YUV 4:4:4 8-bit image data in a single contiguous buffer) and X403 (3 Planar YUV 4:4:4 10-bit image data in a single contiguous buffer) formats.

Zynq UltraScale+ VCU HW does not support YUV444 Full chroma encode/decode processing. Only YUV 4:0:0, 4:2:0 and 4:2:2 sub-sampling modes are supported. This feature enables encoding YUV444 Full chroma p (3 Planar data in a single contiguous buffer) video frames using VCU, reading them as YUV4:0:0 of Width x 3*Height buffer. Similarly for the decoder, the VCU Decoder outputs Width x 3*Height YUV4:0:0 raw video frame, but the display will treat that buffer as YUV444 Full chroma planar buffer. This feature also includes enhancing FB_RD, FB_WR IP/Drivers and V4l2 and DRM frameworks to support YUV444 Full chroma planar buffer format.

Note: To support YUV444 Full chroma format, the VCU requires a separate firmware. To get the new firmware and information on how to use it, please refer 2023.1 Zynq UltraScale+ MPSoC VCU- Why do I need to install separate VCU firmware to support YUV444 Full chroma?

Supported Resolutions

The following table provides the supported resolutions from the command line app for only this design.

Table 1. Supported Resolutions from the Command Line App
Resolution Single Stream Multi-Stream
4kp60 × ×
4kp30 ×
1080p60 ×

√- Support

×- Not Supported

Sample pipelines

gst-launch-1.0 v4l2src device=/dev/video0 io-mode=5 ! video/x-raw, width=3840, height=2160, format=Y444, framerate=30/1 ! queue ! fpsdisplaysink text-overlay=false fps-update-interval=1000 name=fpssink video-sink="kmssink bus-id="fd4a0000.display" show-preroll-frame=false" sync=true -v
gst-launch-1.0 v4l2src device=/dev/video5 ! video/x-raw, width=3840, height=2160, format=Y444, framerate=30/1 ! omxh265enc target-bitrate=25000 control-rate=low-latency y444-to-gray=true num-slices=6 periodicity-idr=120 ! queue ! rtph265pay ! udpsink buffer-size=60000000 port=5004 host=
gst-launch-1.0 udpsrc buffer-size=60000000 address= port=5004 ! application/x-rtp,encoding-name=H265,payload=96 ! rtph265depay ! h265parse ! video/x-h265, alignment=au ! omxh265dec ! queue ! fpsdisplaysink text-overlay=false name=fpssink video-sink="kmssink bus-id="fd4a0000.display" gray-to-y444=true show-preroll-frame=false" sync=true -v