AVS 3D实时解码器在FPGA/SoC平台上的设计与实现

2015-12-08 07:18任鹏飞于鸿洋
电子技术应用 2015年5期
关键词:解码器双目视点

任鹏飞,于鸿洋

(电子科技大学 电子科学技术研究院,四川 成都611731)

AVS 3D实时解码器在FPGA/SoC平台上的设计与实现

任鹏飞,于鸿洋

(电子科技大学 电子科学技术研究院,四川 成都611731)

AVS(audio video coding standard)工作组针对3D视频提出了双目立体视频编解码方案。以AVS双目拼接算法为核心,通过FPGA硬件加速模块完成双目立体ES流的语法元素解析,与 SoC开发板Xilinx ZYNQ 7020协同工作,创新性地在FPGA/SoC协同平台上实现了AVS 3D实时解码器。通过HDMI接口将解码数据输出到三维显示设备,得到了具有深度信息的3D视频,验证了AVS 3D实时解码器的有效性。

三维视频;双目拼接算法;解码器设计;FPGA/SoC协同平台

0 引言

AVS[1](audio video coding standard)是《信息技术 先进音视频编码》系列标准的简称,是我国具有自主知识产权的第二代信息编解码标准。2008年底,AVS标准工作组开始起草双目立体编解码方案[2]。该方案采用双目拼接算法,所用视频序列由基线相互平行的两摄像机采集,将左、右视点信息合成为一个码流进行传输;而在解码端恢复出左、右两路图像数据。

但目前,尚没有针对AVS 3D标准的FPGA/SoC软硬协同平台实现。本文以Xilinx公司的ZYNQ 7020开发板为平台,它是内部具有两个 M9处理(Processing System,PS)硬核核心的片上系统芯片,该平台具有芯片集成度高、控制能力强、软件通用性好的优点。本文采用一个主PS作为顶层控制,完成3D ES流的外部接口通信和解码图像显示控制;另一个从PS以及部分硬件加速模块(包括ES流的语法解析、算术码解码、变长码解码等硬件加速模块)共同完成AVS双目拼接解码算法。两个PS协同工作,在FPGA/SoC平台上实现了AVS 3D实时解码器。

1 AVS 3D解码器的算法流程

AVS 3D解码器采用双目拼接算法。AVS 3D ES流同时含有左、右视点的两路信息。3D解码器的算法设计流程图如图1所示。读入3D ES流,以帧为单位解码,其解码原理与AVS单路解码器相似。

图1 AVS双目拼接解码器算法流程图

视点分离得到的左、右视点基本层图像存在水平维度的分辨率减半。由于基本层图像和增强层图像存在很强的空间相关性,故对基本层图像进行水平维度的上采样插值滤波,预测得到分辨率提升的增强层图像。为保证增强层图像质量,需要对上采样滤波器核向量进行设置[3],其原理如式(1)所示:

式中k表示上采样滤波器抽头个数,hk为增强层图像,bk为基本层图像,Wk为上采样滤波核向量。由于在解码图像的过程中存在反量化、运动补偿等不可逆过程,基本层图像bk中包含数据信息sk和噪声干扰ek,如式(2)所示:

上采样滤波器中,代价函数为均方误差信号E{||bkhk||2},E{·}为数学期望运算符。根据最小二乘估计原理,最有效的上采样滤波器核向量应保证代价函数最小:

对式(3)求导,可以得出最佳效的滤波器Wk应满足式(4)所示:

其中H为AVS 3D编码器获取3D ES流时所采用的下采样滤波器核向量,Rb为基本层图像的自相关矩阵,Rek为基本层噪声的自相关矩阵。编码端,下采样滤波器核向量值为{2,0,-4,-3,5,19,26,19,5,-3,-4,0.2},根据递归最小平方原理,计算得到效果最佳的6抽头层间上采样滤波器,其核向量值为={1,-5,20,20,-5,1}。

视点分离得到的基本层图像分辨率为M/2×N,需要在水平维度上进行上采样插值滤波。在具有水平关系的两个基本层像素点 xi,j和 xi,j+1之间插入半像素点 vi。 通过水平插值,从分辨率为M/2×N的基本层图像预测得到分辨率为M×N的增强层图像。

代谢组学逐渐被越来越多的学者关注,但仍处在初始阶段,其分析技术还不够成熟,至今未找到统一、早期、敏感、特异的生物标志物来预测和诊断AS。相信随着技术的进一步革新,在今后的代谢组学研究中,进一步发展多种分析技术,通过多角度、多层次筛选并解析所有的早期特征性标志物,从整体上研究机体的代谢过程及代谢组分,寻找敏感性高、特异性好的AS生物标志物,为AS的诊断、治疗及预后评价提供新的客观依据。

2 语法元素解析的CABAC和CAVLC硬件加速模块的设计

本文通过硬件加速模块实现拼接码流的语法解析工作,AVS标准中的熵解码主要采用 CABAC[4]和 CALVC[5]两种方式实现。语法元素解析模块的硬件加速模块设计框图如图2所示。

码流输入管理模块的主要任务是读入ES原始码流。其中indata[7:0]存储原始ES流的8 bit数据;avail_n检测输入数据的可得字节数;strobe表示输入码流有效性;当读入的数据解析完成后,req通知ES流继续读入。

图2 AVS语法解析的硬件加速模块结构

语法元素输出模块主要控制熵解码后语法元素的数据输出。其中n_bits表示请求读取语法数据的bit数;req为请求读取语法信息;req_type为当前语法元素所需采用的熵解码方式,根据req_type的不同,对当前元素采用CABAC或 CAVLC解析算法;outdata[31:0]为熵解码后的数据;del_ready指示当前语法解析模块是否准备好接受外部请求;strobe为当前请求输出语法信息有效性。

核心语法解析单元运行CABAC或CAVLC的解析算法,涉及模型索引号产生、模型自适应更新、反二进制化等过程。在AVS标准中,CABAC主要用于解析宏块类型、亮度色度预测模式、变换系数等数据;CAVLC主要用于解析亮度和色度残差数据。

AVS的码流数据结构及层次关系从高到低依次为:序列、图像、条带、宏块和块,在解码过程中,需要从高到低依次解析出每一层次中的语法元素数据。将硬件加速模块解析得到的数据赋值给相应的语法元素变量,利用得到的语法元素变量在,恢复出左、右视点的重建图像。

3 AVS 3D实时解码器在 SoC片上系统的设计与实现

本文采用 Xilinx公司 ZYNQ 7020开发板,ZYNQ 7020采用双核设计,拥有两片 Cortex-M9芯片,一片用作主处理系统,一片用作核心AVS算法解码,两片M9可以共享内存和外围设备。针对AVS 3D解码器,本文采用Master-Slave主从控制设计模式。采用MASTER M9作为顶层控制,完成ES 3D码流的外部接口通信、解码图像显示控制等功能;SLAVE M9及语法解析硬件加速模块共同完成AVS 3D核心解码算法;MASTER M9和SLAVE M9协同工作,最终实现AVS 3D实时解码器SoC片上系统设计[6]。

3.1 AVS 3D解码器在ZYNQ 7020的启动过程

在启动AVS双目解码器的SoC片上系统时,首先在ZYNQ 7020上进行时钟配置,之后在MASTER M9上执行BootROM启动代码。BootROM是整个SoC系统上最先运行的程序,当SLAVE M9等待解码启动指令时,BootROM已经在MASTER M9上运行。BootROM的主要功能是配置整个双目解码器的SoC系统的串口信息,并将第一阶启动程序(First Stage Boot Loader,FSBL)从启动设备复制到MASTER M9的片上内存。由FSBL初始化SLAVE M9的Xilinx硬件配置信息,并通过读入BootHeader头文件通知MASTER M9是否启动运行。在FBSL运行的

过程中,BootROM会先将SLAVE M9设置为事件等待模式,MASTER M9启动后,由MASTER M9通知SLAVE M9是否启动AVS双目立体解码程序。整个启动流程如图3所示。

图3 AVS 3D解码器SoC片上系统的启动过程

3.2 AVS 3D解码器在ZYNQ 7020的设计原理

AVS双目立体解码器在 SoC片上系统的整体方案设计如图4所示。在各个模块的交互过程中,通过AXI LITE传送信息量较小的数据;通过 AXI VDMA传递解码图像数据等信息量较大的数据;通过AXI CON传送交互频繁的数据。

图4 AVS 3D解码器SoC片上系统的实现框图

MASTER M9是整个AVS 3D解码器在SoC片上系统的顶层控制单元。其功能主要包括:(1)从以太层获取用于网络传输的3D TS码流;(2)与TS码流语法解析模块进行信息交互,通知SLAVE M9启动解码过程。SLAVE M9根据码流中解析标志位的不同,调用硬件加速模块采用CALVC或是CABAC的熵解码方式对码流中的语法元素进行解析,并与状态信息模块交互,将熵解码方式标志位、缓存大小、解析完成标志位等信息返回给MASTER M9;(3)管理解码图像数据及参考帧的位置指针,并将相应数据送往DDR MEMORY不同存储位置。

SLAVE M9运行 AVS 3D解码器的核心算法。解码算法包括AVS双目拼接算法和AVS单路解码算法两部分。AVS双目拼接算法如第1节所述。单路解码器算法主要包括:起始码检测、序列及图像头读取、熵解码、宏块数据获取、反变换、反量化、帧内及帧间预测、1/4像素运动向量插值、图像残差恢复、环路滤波等模块。将实现AVS 3D解码功能的 C语言代码写至相应的软件开发平台,由硬件加速模块将语法元素解析模块得到的语法元素数值输入各个层级的解码函数,从而通过SLAVE M9上实现 AVS 3D解码算法。最终将解码得到的拼接图像序列和左、右视点图像序列写入DDR MEMORY的不同地址空间。

解码图像信息交换模块是MASTER M9和SLAVE M9在解码过程中图像信息交互的中介。在SLAVE M9解码过程中会产生3种图像指针类型:(1)参考帧指针(针对I、P帧图像),该指针指向的图像作为帧间预测的参考值,并不会立即显示;(2)显示帧指针(针对B帧图像),该指针指向的图像在解码后直接放入显示序列中;(3)写入位置指针,SLAVE M9解码一帧图像后,将解码数据写入在该指针指向的DDR MEMORY地址中。通过该模块,SLAVE M9将图像指针的状态和数值传送给 MASTER M9,MASTER M9又与DDR MEMORY交互,保证正确的图像解码顺序和显示顺序。

在DDR MEMORY中采用乒乓存储设计,设置两块数据缓存区,每块数据缓存区为拼接图像、左视点图像、右视点图像各分配5帧内存空间。当缓存区1向HDMI接口传输数据时,缓存区 2从 SLAVE M9接收数据;当缓存区1从SLAVE M9接收数据时,缓存区2向HDMI接口传输数据;如此循环工作,通过两块缓存区的交替工作,提高DDR MEMORY的工作效率。其中每块缓存区中的数据读写位置均由MASTER M9管理,保证DDR MEMORY以正确的显示顺序将图像内容送往HDMI接口。

4 实验结果及分析

本文中,AVS 3D解码器的SoC片上系统设计在Xilinx ZYNQ 7020开发板上实现。通过在AVS单路软件解码器RM52k上增加视点分离模块、层间上采样滤波模块实现AVS 3D解码算法,将代码改写至Xilinx SDK 2014.2嵌入式软件平台,并加载FreeRTOS操作系统用于内存分配和外围设备初始化。AVS双目立体解码参数配置如表1所示。

表1 AVS 3D解码参数设置

将AVS 3D ES流打包成为用于网络传输的TS流,根据Xilinx的LWIP准则进行TCP连接,经IP QAM调制器最终从以太层将码流输入ZYNQ 7020的MASTER M9模块。通过硬件加速模块实现语法元素解析,结合SoC片上系统进行AVS双目立体解码算法处理,最终通过HDMI接口将视频数据输出到三维电视,在三维电视上可以得到左、右视点信息的拼接视频,通过视点分离和层间上采样插值,恢复出左、右视点的增强层图像。经视点交织处理后,得到最终的3D视频,可以观察到解码得

到的3D视频具有明显的深度信息,AVS 3D解码器的效果如图5所示。这说明了AVS 3D实时解码器在FPGA/ SoC平台的有效性。

图5 AVS 3D解码器的显示效果

5 结束语

本文通过在AVS原有单路解码器的基础上进行功能的扩充,实现了基于AVS标准的3D解码器的设计。结合语法元素解析的硬件加速模块,在 Xilinx ZYNQ 7020开发板上创新性地实现了 AVS 3D实时解码器的FPGA/SoC协同平台实现。将解码后的视频输入三维显示设备,通过视点交织观察到3D视频的视点差异和深度信息,验证了该AVS 3D实时解码器在FPGA/SoC平台设计的有效性。

[1]侯金亭,马思伟,高文.AVS标准综述[J].计算机工程,2009,35(8):247-249,252.

[2]马茜,李栋,汪启扉,等.AVS立体视频编码标准[J].上海大学学报(自然科学版),2013,19(3):225-228.

[3]王樟,柳健,严国萍.简单高效地用于 SVC标准中的层间上采样滤波方案[J].通信学报,2008,29(4):8-12.

[4]MARPE D,SCHWARZ H,WIEGAND T.Context-based adaptive binary arithmetic coding in the H.264/AVC video compression standard[J].IEEE Transactions on Circuits and Systems for Video Technology,2003,13(7):620-636.

[5]ALLE M,BISWAS J,NANDY S K.High performance VLSI architecture design for H.264 CAVLC decoder[C].ASAP 2006:11-13.

[6]郭炜,郭筝,谢憬,等.SOC设计方法与实现[M].北京:电子工业出版社,2007.

AVS 3D real-time decoder design and implementation based on FPGA/SoC platform

Ren Pengfei,Yu Hongyang
(Research Institute of Electronic Science and Technology,University of Electronic Science and Technology of China,Chengdu 611731,China)

AVS(audio video coding standard)group formulates stereo-packing scheme aimed at 3D video.Based on stereopacking algorithm,using FPGA hardware acceleration module to parse the stereo-packing ES stream syntax element and cooperating with the Xilinx ZYNQ 7020 SoC development board,this paper innovatively completes the AVS 3D decoder on FPGA/SoC co-platform.Using HDMI port to export the decoded data to the 3D display device,it gets the 3D video with depth information and verifies the validity of AVS 3D real-time decoder.

3D video;stereo-packing algorithm;decoder design;FPGA/SoC co-platform

TP31

A

0258-7998(2015)05-0028-04

10.16157/j.issn.0258-7998.2015.05.003

2014-12-31)

任鹏飞(1989-),男,硕士研究生,主要研究方向:软件开发、数字视频处理。

于鸿洋(1964-),男,副教授,硕士生导师,主要研究方向:数字电视广播电视网络技术、模式识别、音视频技术。

猜你喜欢
解码器双目视点
科学解码器(一)
科学解码器(二)
科学解码器(三)
线圣AudioQuest 发布第三代Dragonfly Cobalt蓝蜻蜓解码器
基于双目测距的卡尔曼滤波船舶轨迹跟踪
双目视觉运动目标跟踪定位系统的设计
基于双目视觉图像的长度测量方法
视点
让你每天一元钱,物超所值——《今日视点—2014精萃》序
两会视点