VCU视频编解码设计案例介绍

发布时间:2024-01-10  
  • VCU TRD 2018.1, UG1250

  • UG252

  • gstreamer: https://gstreamer.freedesktop.org/

逻辑设计

1. 通过 Vivado 内置的 ZCU106 模板建立一个新工程
2. 添加 PS: ZYNQ UltraScale+ MPSoC
3. 添加 VCU: ZYNQ UltraScale+ VCU
4. 点击上方绿色条形中的 Run Block Automation, 先做 MPSoC,后做 VCU,Vivado 会自动进行连接
5. Generate Bitstream
6. Export Design,选择将 Bit 打包进 HDF

说明

1. VCU 模块在PL侧,一共有五个AXI接口,它们分别是两个 Encoder AXI,两个 Decoder AXI, 和一个 MCU AXI。两个 Encoder/Decoder 的 AXI 接口必须都连接到 MPSoC PS,即使只用一路编码,或者一路解码。运行时使用哪个引擎是 MCU 控制的,外界无法干预。

2. Block Automation 会将他们分别接在 PS 的多个 HP 和 HPC 通道上,以保证有足够的带宽。这里用到的 HPC 接口,其实没有使用其中的 Coherent 功能,还是当作普通 HP 来使用的。

3. 通过双击 VCU IP,在界面中可以进行内存带宽的预估。如果进行分辨率比较低的编解码,或者编解码路数比较少,对内存带宽的需求较低,可以将多路 AXI 通过一个 AXI Interconnect 合成一个或两个 AXI Interface,接到 HP 通道上。这样可以节省 HP 通道,以备其他需要使用 PS DDR 的逻辑 IP 使用。

4. 如果将 VCU AXI 通过 AXI Interconnect 合并,最多是 4:1, 因为 VCU 的 AXI ID 宽度是4,通过 AXI Interconnect 合并 AXI 需要增加 AXI ID 位宽。 而 HP 的最大 AXI ID 只支持 6 位。

5. VCU 输入时钟尽量使用片外时钟,保证较小的 Jitter。

上图为 VCU Encoder 和 Decoder AXI 合并成一个 AXI 连接到 HP 后的框图

PetaLinux

1. petalinux-create -t project --template zynqMP -n petalinux; cd petalinux 建立工程
2. petalinux-config --get-hw-description= 导入硬件设计
3. petalinux-config -c rootfs 增加 packagegroup-petalinux-gstreamer。 gstreamer 是用于驱动 VCU 的软件组件。
4. petalinux-build 生成各组件。
5. cd images/linux; petalinux-package --boot --fsbl zynqmp_fsbl.elf --u-boot --fpga xx.bit 请将 xx.bit 替换为这个目录下 bit 的文件名。

说明

packagegroup-petalinux-gstreamer 具体包含哪些内容,可以在它的描述中看到

#

GSTREAMER_PACKAGES = " /
gstreamer1.0 /
gstreamer1.0-meta-base /
gstreamer1.0-plugins-base /
gstreamer1.0-plugins-good /
gstreamer1.0-plugins-bad /
gstreamer1.0-omx /
gstreamer1.0-rtsp-server /

运行

1. 将 images/linux 目录下的 BOOT.BIN 和 image.ub 拷贝到 SD 卡。
2. 将 ZCU106 设置为从 SD 卡启动: SW6[1:4] = ON, OFF, OFF, OFF,上电启动
3. 连接串口,Interface 0
4. Login: root, password: root
5. Mount SD 卡: mount /dev/mmcblk0p1 /mnt
6. 尝试从 MP4 文件解码: gst-launch-1.0 filesrc location=xx.mp4 ! qtdemux ! h264parse ! omxh264dec ! queue max-size-bytes=0 ! filesink location=yy.yuv
7. 尝试从 RAW YUV Video 文件编码为 MP4: gst-launch-1.0 filesrc location=xx.yuv ! videoparse format=nv12 width=WW height=HH framerate=20/1 ! omxh264enc ! queue ! h264parse ! mp4mux ! filesink location=yy.mp4

播放编解码后视频文件

1. 测试播放 RAW Video: 在 PC 上安装 ffmpeg,运行指令 ffplay -f rawvideo -pixel_format nv12 -video_size WWxHH -i xx.yuv。WW为宽度,HH为高度。因为 RAW Video 中没有视频信息,这些参数都需要手工输入。

2. MP4 视频可以用任意播放器播放。

测试版本

Vivado: 2018.1, 2018.2
FFMPEG: ffmpeg-20180708-3a2d21b-win64-static


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>