1AMD EV系列器件介绍
近年来,随着音视频应用场景和内容越来越丰富,对网络传输和存储都带来了巨大的挑战。为了应对这一挑战,各种视频编解码技术就被提了出来,其中H.264/H.265视频编解码协议是当前的主流视频编解码标准。AMD的ZYNQ MPSOC EV系列器件,是ZYNQ MPSOC集成了H.264/H.265 Video Codec Unit (VCU)硬核的一个系列器件。
▎该系列器件支持多标准编码/解码支持,包括:
• ISO MPEG-4第10部分:高级视频编码(AVC)/ITU H.264
• ISO MPEG-H第2部分:高效视频编码(HEVC)/ITU H.265
• HEVC:Main、Main Intra、Main10、Main10 Intra、Main 42 10、Main 42 10 Intra〔直到Level 5.1 (High Tier)〕
• AVC:Baseline、Main、High、High10、High 42、High10 Intra、High 42 Intra(直到Level 5.2)
▎支持多达32个流的同步编码和解码(最大聚合带宽为3840×2160 @ 60fps)
▎低时延速率控制
▎灵活的速率控制:CBR、VBR和常量QP
▎支持分辨率高达4K UHD @ 60 Hz的同步编码和解码
▎支持8 K UHD(~15 Hz)的降低帧速率
2VCU IP简介
LogiCORE IP H.264/H.265 Video Codec Unit (VCU)核支持多标准视频编码和解码,包括支持符合H.264标准的高效视频编码(HEVC)和高级视频编码(AVC)。这个单元可提供编码(压缩)和解码(解压缩)功能,并且能够同时编码和解码。
编码器块简介
编码器引擎被设计来用HEVC和AVC标准对视频流进行处理。它全面支持这些标准,包括支持8位和10位颜色、Y-only(单色)、40和42色度格式以及高达4K UHD @ 60 Hz的性能表现。下图显示的是编码器块的顶层接口和详细架构。编码器还包含多个全局寄存器、一个中断控制器和一个定时器。编码器由微控制器(MCU)子系统控制。
在PS上运行的VCU应用通过VCU control software API与编码器微控制器进行交互。微控制器固件(MCU Firmware)不是用户可修改的。APU通过32位的AXI4-Lite接口来控制MCU(以配置编码参数)。两个128位的AXI4主接口用于将视频数据和元数据移入、移出系统存储器。32位的AXI4主接口用于获取MCU软件(指令高速缓存接口)并加载或存储附加的MCU数据(数据高速缓存接口)。
APU通过32位AXI4-Lite接口控制MCU,完成编码参数配置。
两个128位AXI4主接口负责视频数据和元数据的系统存储器移入与移出。
32位AXI4主接口用于获取MCU软件(指令高速缓存接口),并加载或存储附加MCU数据(数据高速缓存接口)。
编码器块包含压缩引擎、控制寄存器、中断控制器,以及带存储器控制器的可选编码器缓存(缓存连接可编程逻辑中的UltraRAM或BlockRAM,通过寄存器启用)。
MCU的AXI-4主接口与解码器的相应AXI-4主接口多路复用,复用器输出可用于嵌入式VCU。
解码器块简介
解码器块可处理HEVC和AVC标准视频流,全面兼容两项标准,支持8位和10位颜色深度、Y-only(单色)、40及42色度格式,性能最高可达4K UHD @ 60 Hz,内部包含多个全局寄存器、中断控制器和定时器。
解码器由MCU子系统控制,APU通过32位AXI4-Lite从接口实现控制MCU,相关交互逻辑与编码器一致(APU上的VCU应用通过赛灵思VCU Control Software API与解码器微控制器交互,MCU不可由用户修改)。具体接口与结构特性如下:
两个128位AXI4主接口负责视频数据和元数据的系统存储器移入与移出。32位AXI4主接口用于获取MCU软件(指令高速缓存接口),并加载或存储附加MCU数据(数据高速缓存接口)。
解码器块包含H.265/H.264解压缩引擎、控制寄存器、中断控制器块,以及桥接单元和一组内部存储器(桥接单元用于管理解码器所需外部存储器访问的仲裁请求、突发地址和突发长度)。
系统CPU通过32位AXI-Lite从接口控制MCU,完成解码器参数配置、视频帧处理启动及状态与结果获取。
两个128位AXI-4主接口负责视频输入数据的获取和视频输出数据的存储(均与系统存储器交互)。
AXI-4主接口同时用于获取MCU软件,并对其他MCU数据执行加载或存储操作。
3VCU软件架构
视频编解码器单元(VCU)软件堆栈具有软件开发者可在多个抽象层级进行编程的分层架构,如下图所示。从高层到低层的应用接口如下所列:
GStreamer
OpenMAX Integration Layer
VCU Control Software
各层级核心说明如下:
GStreamer是跨平台开源多媒体框架,提供集成多个多媒体组件、创建流水线的基础架构,其支持OpenMAX Integration Layer API。
OpenMAX Integration Layer API定义了标准化媒体组件接口,助力开发者与平台提供商实现与硬件或软件多媒体编解码器的集成与通信。
VCU Control Software是VCU应用开发者可接触的最低级软件,所有VCU应用均需直接或间接使用AMD提供的该软件,其包含定制内核模块、定制用户空间库及AL_Encode和AL_Decode应用。
4VCU Control Software介绍
VCU Control Software是VCU应用开发人员可接触到的最低层级软件。它包含定制化内核模块、定制化用户空间库,以及ctrlsw_encoder和contrlsw_decoder应用程序。
下面的流程图详细定义了VCU Control Software中编码任务的执行链路,明确了缓冲区管理、编码流程控制、回调处理的协同逻辑,是开发者理解AL_Encoder API调用时序、资源管理机制的核心参考。
左侧主流程(main):涵盖编码器初始化(Initialize Encoder Settings)、实例创建(AL_Encoder_Create)、缓冲区分配(流缓冲区与源缓冲区的创建/入池)、数据填充、编码处理(AL_Encoder_Process)、任务销毁及资源释放等关键步骤,是编码任务从启动到结束的主线逻辑。
右侧回调流程:包含Unref Source callback(源缓冲区回池)、Unref Stream callback(流缓冲区回送编码器)、EndEncoding callback(编码结束后的资源释放与状态通知),用于处理编码过程中的异步回调与资源回收逻辑。
下面的流程图详细定义了VCU Control Software中解码任务的执行链路,明确了缓冲区管理、编码流程控制、回调处理的协同逻辑,是开发者理解AL_Decode API调用时序、资源管理机制的核心参考。
左侧主流程(main):包含解码器实例创建(AL_Decoder_Create)、流缓冲区分配(AL_Buffer_Create_And_Allocate或AL_Buffer_Create)、数据填充与推送(Fill one Stream Buffer、AL_Decoder_PushBuffer)、解码结束处理(AL_Decoder_Flush、Wait End of Decoding)、实例销毁及资源释放等关键步骤,是解码任务从启动到结束的主线逻辑。 右侧回调流程:ResolutionFound callback:用于在识别到视频分辨率后分配解码缓冲区(AL_Buffer_Create_And_Allocate或AL_Buffer_Create),并将其推入解码器(AL_Process_DisplayPicture)。 Display callback:处理解码后帧的输出逻辑,包含帧缓冲区判空、输出(Output Frame Buffer)、显示帧推送(AL_Decoder_PutDisplayPicture)及解码结束信号通知。
5VCU Control Software开发流程
下面以AMD VCU Control Software参考设计为例,简要介绍control software的开发流程。该参考设计分为编码部分和解码部分。其中编码部分框图如下:
APU(四核Cortex A53)运行Linux系统,并搭载ctrlsw_encoder组件,负责帧缓冲区(framebuf)的写入缓冲控制、编码器控制,以及比特流文件写入和UDP流传输。
RPU(实时处理单元)/Microblaze运行裸机应用,负责采集流水线的初始化,具体包括:HDMI输入、VPSS(视频处理子系统)、YUV重排及帧缓冲区写入。解码部分框图如下:
APU(四核Cortex A53)运行Linux系统,并搭载ctrlsw_decoder组件,负责文件输入、解码器控制,以及混合器(Mixer)显示缓冲区地址指针配置。
RPU(Cortex R5)运行裸机应用,负责显示流水线的初始化,具体包括:帧缓冲区读取(Framebuf read)、YUV重排、混合器(Mixer)处理及HDMI输出。
Block Design设计
VCU配置
主要配置参数介绍
Coding Standard:选择AVC或HEVC,AVC:H264 HEVC:H265
Coding Type:选择要用于编码的GOP结构
– Intra Frame Only-仅限I帧
– Intra







