VCU encoder and decoder supports encoding and decoding of YUV444 8-bit and 10-bit format support at gstreamer level from the 2022.1 release onwards.
- Enables the capture of YUV444 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.
Xilinx Zynq UltraScale+ VCU HW does not support YUV444 encode/decode processing. Only YUV 4:0:0, 4:2:0 and 4:2:2 sub-sampling modes are supported. This feature enables encoding YUV444p (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 planar buffer. This feature also includes enhancing FB_RD, FB_WR IP/Drivers and V4l2 and DRM frameworks to support YUV444 planar buffer format.
Supported Resolutions
The following table provides the supported resolutions from the command line app for only this design.
| Resolution | Single Stream | Multi-Stream |
|---|---|---|
| 4kp60 | × | × |
| 4kp30 | √ | × |
| 1080p60 | √ | × |
√- Support
×- Not Supported
Sample pipelines
- Passthrough
-
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 - Stream-out
-
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=192.168.25.89 - Stream-in
-
gst-launch-1.0 udpsrc buffer-size=60000000 address=192.168.25.89 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