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.
- 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.
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