AR# 70645

|

Zynq UltraScale+ MPSoC - Video Codec Unit (VCU) - What video formats are supported in GStreamer?

Description

What video formats are supported in GStreamer?

Solution

There are actually several aspects to this question, including the hardware, the software, and the ZCU106 VCU TRD.


Hardware:

First, from a purely hardware standpoint, the VCU supports 4:2:2, 4:2:0 8, and 10 bit data. 

This is listed in the Features section of the H.264/H.265 Video Codec Unit (VCU) Product Guide (PG252).

The packing of the data is described in the Source Frame Format section.

Figure 3-2 contains a helpful diagram, which shows that the packing is Luma (Y) followed by interleaved Chroma (UV) pixels.



Software:

In the 2017.4 release the software only supports 4:2:0 8-bit, which matches up to NV12.

In the 2018.1 release and later versions support for 4:2:2 and 10-bit is added.

GStreamer and OpenMAX:

The GStreamer plugins omxh264enc/omxh264dec and omxh264enc/omxh265dec expect the incoming video format to be in a semi-planer format.

You can find a description of the NV12 and other formats in the H.264/H.265 Video Codec Unit (VCU) Product Guide in the "GStreamer" section.

If a users attempts to pass a i420 format frame to GStreamer, they will receive an error as it is not a semi-planer format.  

The user can use one of the format converter plugins such as the GStreamer video-convert block in order to convert from packed (i.e. i420) to semi-planer (i.e. NV12).  

See also the Caution section below for performance information.


VCU Control Software:

The VCU Control software includes conversion libraries that will convert from some packed formats to the semi-planer format supported by the VCU. 

You can find a description of the NV12 and other formats in the H.264/H.265 Video Codec Unit (VCU) Product Guide in the "VCU Control Software Encoder Parameters, Encoder Input Parameters" table.  

If a user tries to use a packed (i.e. i420) format with the control software it will be converted to a semi-planer (i.e. NV12) format and passed to the VCU.  

See also the Caution section below for performance information.



ZCU106 VCU TRD:

The VCU TRD is a demonstration platform, and includes multiple IP as well as the VCU.

The 2017.4 VCU TRD is limited by the software support and it only supports 4:2:0 8-bit data.

The 2018.3 VCU TRD has added support for 4.2.2. 10-bit data.

The VCU TRD assumes that you know that the data still has to be packed in the format that the VCU supports, as stated above.

The video data needs to be convert to a semi-planer (i.e. NV12) format (or another format supported by the VCU).


Caution:

When using a file source (filesrc), a DMA buffer will not be used and it might cause some performance issues when trying to use the GStreamer or the VCU Control Software to video convert from packed (i.e. i420) to semi-planer (i.e. NV12) format. (i.e. the conversion is happening in software).

When using a live interface, users should use the Video Frame Buffer IP in the path that will be converting from the live format to a semi-planer (i.e. NV12) format when writing the data into memory.

This is done so that the VCU will have the data in the correct format when reading from memory. (i.e. the conversion is happening in hardware).

Linked Answer Records

Master Answer Records

Associated Answer Records

AR# 70645
Date 12/19/2018
Status Active
Type General Article
Devices
Tools
IP
Boards & Kits
People Also Viewed