Zynq UltraScale+ MPSoC — 视频编解码单元 (VCU) — GStreamer 支持哪些视频格式?

2 posts / 0 new
最新文章
匿名
Zynq UltraScale+ MPSoC — 视频编解码单元 (VCU) — GStreamer 支持哪些视频格式?

问题描述:
GStreamer 支持哪些视频格式?

judy
judy的头像
解决方案

该问题实际有几个方面,其中包括硬件、软件和 ZCU106 VCU TRD 等。

硬件:

首先,从纯硬件的角度来看,VCU 支持 4:2:2、4:2:0 8 和 10 位数据。

这列在 H.264/H.265 视频编解码单元 (VCU) 产品指南 (PG252) 的特性部分。

源帧格式部分介绍了如何压缩数据。

图 3-2 是一个很实用的图,其中显示:打包是 Luma (Y),然后是交错色度 (UV) 像素。

软件:

在 2017.4 版本中,该软件只支持 4:2:0 8 位,其匹配高达 NV12。

在 2018.1 及后续版本中新增 4:2:2 及 10 位支持。

GStreamer 和 OpenMAX:

GStreamer 插件 omxh264enc/omxh264dec 和 omxh264enc/omxh265dec 希望传入的视频格式是半平面格式。

您可以在 H.264/H.265 视频编解码单元 (VCU) 产品指南中找到 NV12 及其它格式的描述,位于“GStreamer”部分。

如果用户试图将 i420 格式帧传递给 GStreamer,他们将看到一个错误,因为它不是半平面格式。

用户可使用一个格式转换器插件(如 Gstreamer 视频转换模块)将压缩文件(即 i420)转换为半平面文件(即 NV12)。

您也可以查看下面的“警告”部分,了解有关性能的信息。

VCU 控制软件:

VCU 控制软件包括转换库,其可将一些压缩格式转换为 VCU 支持的半平面格式。

您可以在 H.264/H.265 视频编解码单元 (VCU) 产品指南中找到 NV12 及其它格式的描述,在“VCU 控制软件编码器参数、编码器输入参数”表中。

如果用户尝试使用支持控制软件的打包(即 i420)格式,它将被转换为半平面(即 NV12)格式,并传递给 VCU。

您也可以查看下面的“警告”部分,了解有关性能的信息。

ZCU106 VCU TRD:

VCU TRD 是一个演示平台,包括多个 IP 和 VCU。

2017.4 VCU TRD 受软件支持限制,只支持 4:2:0 8 位数据。

2018.3 VCU TRD 增加了对 4.2.2 的支持。10 位数据。

VCU TRD 假设您知道数据仍然必须采用 VCU 支持的格式打包,如上文所述。

视频数据需要转换为半平面(即 NV12)格式(或 VCU 支持的另一种格式)。

警告:

当使用文件源 (filesrc) 时,不会使用 DMA 缓冲器,在尝试使用 GStreamer 或 VCU 控制软件将视频从压缩格式(即 i420)转换为半平面格式(即 NV12)时,它可能会导致一些性能问题。(也就是说,转换在软件中进行)。

当使用实时接口时,用户如果将数据写入内存,应在将实时格式转换为半平面格式(即 NV12)的路径中使用视频帧缓冲器 IP。

这样做,在从内存中读取数据时,VCU 将具有格式正确的数据。(也就是说,转换在硬件中进行)。