YUV 4:4:4 8b/10b Pipeline

Multimedia User Guide (UG1449)

Document ID
UG1449
Release Date
2023-10-19
Revision
1.7 English

AMD Zynq UltraScale+ MPSoC VCU HW supports YUV 4:0:0, 4:2:0, and 4:2:2 sub-sampling modes. This feature enables encoding YUV 4:4:4p (single planar) video frames using VCU, reading them as YUV4:0:0 of Width x 3*Height buffer. Similar to decoder side, VCU Decoder outputs Width x 3*Height YUV4:0:0 raw video frame but the display treats that buffers YUV 4:4:4 planar buffer. It also include enhancing Frame Buffer Read (FB_RD) and Frame Buffer Write (FB_WR) IP/Drivers, and V4l2 and DRM frameworks to support YUV 4:4:4 planar buffer format.

Run the following gst-launch-1.0 command to display raw YUV 4:4:4 8-bit video over HDMI using the GStreamer pipeline.

gst-launch-1.0 v4l2src device=/dev/video0 ! 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=amba_pl@0:drm-pl-disp-drvhdmi_output_v_hdmi_tx_ss_0 show-preroll-frame=false" sync=true -v

Run the following gst-launch-1.0 command to display raw YUV 4:4:4 10-bit video over HDMI using the GStreamer pipeline.

gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw, width=3840, height=2160, format=Y444_10LE32, framerate=30/1 ! queue ! fpsdisplaysink text-overlay=false name=fpssink video-sink="kmssink bus-id=amba_pl@0:drm-pl-disp-drvhdmi_output_v_hdmi_tx_ss_0 show-preroll-frame=false" sync=true -v

Run the following gst-launch-1.0 command to capture, encode, and stream-out YUV 4:4:4 8-bit video using the GStreamer pipeline.

gst-launch-1.0 v4l2src device=/dev/video0 ! 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

Run the following gst-launch-1.0 command to capture, encode, and stream-out YUV 4:4:4 10-bit video using the GStreamer pipeline.

gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw, width=3840, height=2160, format=Y444_10LE32, 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

Run the following gst-launch-1.0 command to stream-in, decode, and play YUV 4:4:4 8-bit/10-bit video over HDMI using the GStreamer pipeline

gst-launch-1.0 udpsrc buffer-size=60000000 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=amba_pl@0:drm-pl-disp-drvhdmi_output_v_hdmi_tx_ss_0 gray-to-y444=true show-preroll-frame=false" sync=true -v
Note:  It is required to use ZCU106 board at the client (receiving) side as this is a customized feature offered by Zynq UltraScale+ MPSoC VCU Hardware codec.

For more information, refer Zynq UltraScale+ MPSoC VCU TRD 2023.1- YUV444 Video Capture and Display.