基于SoC平台的AVS可变长解码器设计

时间:2022-03-07 02:36:46

基于SoC平台的AVS可变长解码器设计

摘要:AVS是我国自主制定的音视频编码技术标准。可变字长编解码是AVS标准中的一项重要技术,该文提出了一种基于SoC平台的AVS可变字长解码(VLD)设计。根据AVS变长码表的特点,重新设计合理的变长码表减少时钟消耗,采用C语言和汇编语言进行设计、模拟,并通过了SoC仿真平台验证。在164MHz工作频率下实现满足基准档次6.0级别的AVS高清视频码流的实时解码要求。

关键词:AVS;SoC;解码器;变长解码

中图分类号:TP311文献标识码:A文章编号:1009-3044(2009)25-7247-02

Design of AVS Variable Length Decoder Based on SoC Platform

XU Yuan-feng, CHEN Yong-en, LIU Wei, WANG Peng

(Design Center of Communication Software and ASIC,Tongji University, Shanghai 200092, China)

Abstract: AVS is the audio and video standard of China. Variable length decoding is a very important technology of AVS. This paper proposes an implementation of variable length decoder for AVS Based on SoC Platform. According to the characteristics of AVS variable length code table, the new and proper AVS variable length code table is designed to minimize the use of clock cycles. The decoder is designed, simulated based on C language and assemble language. The whole design has been verified by SoC simulation platform. Its maximal working frequency is around 164MHz and could fulfill the performance requirement of real-time AVS JiZhun profile 6.0 level decoding.

Key words: audio video coding standard; SoC; decoder; variable length decode

AVS(Audio Video Coding Standard) 标准是《信息技术先进音视频编码》系列标准的简称, 包括系统、视频、音频、数字版权管理等四个主要技术标准和一致性测试等支撑标准,是由中国自主提出的第一个音视频编码标准。该标准面向中国的信息产业需求,服务于高分辨率数字广播、高密度激光数字存储媒体、无线宽带多媒体通讯、互联网宽带流媒体等重大信息产业应用。AVS标准是基于当前主流的混合编码框架,其采用了变换、量化、熵编码、帧内预测、帧间预测、环路滤波等技术。AVS视频中具有特征性的核心技术包括:二维熵编码、8 8整数变换、量化、帧内预测、1/4精度像素插值、特殊的帧间预测运动补偿和去块效应环内滤波等。目前音视频产业可以选择的信源编码标准有四个:MPEG-2、MPEG-4、H.264/AVC、AVS。前三个标准是由MPEG专家组完成的,第四个是我国自主制定的。从主要技术指标――编码效率比较:MPEG-4是MPEG-2的1.4倍,AVS和H.264/AVC相当,都是MPEG-2两倍以上[1-2]。

AVS标准采用了最新视频编码技术,对压缩效果有很大改善,但其压缩效率的提高也是以算法复杂度的增加为代价的[3],因此造成了单纯用软件解码难以达到很高的性能。与此同时硬件实现解码的复杂度也随编码效率的提高而上升,给硬件设计带来一定的挑战。软件的灵活性和可编程性硬件强大的处理能力使视频解码芯片的设计向软硬件协同设计方向发展[4]。这样不仅给设计提供了更多的选择性,而且能极大地缩短芯片上市时间。

本文提出的基于SoC 平台的AVS可变长解码器设计方案具有高性能、低成本的优势,适用于需要大幅面视频的应用场合,例如高清晰度数字电视。

1 AVS解码器的理论模型

AVS解码器的理论模型如图1所示,图中熵解码器对AVS码流进行解码得到量化系数和解码参数,量化系数经过重排序、反量化、反变换后得到残差系数,同时,帧内或者帧间预测模块根据解码参数计算得到预测数据,预测数据与残差系数相加形成图像的重构值。重构值用于帧内预测的参考,同时也送入滤波器进行滤波以消除方块效应,提高图像质量的主观感受。

2 基于SoC的系统设计方案

AVS 视频标准采用混合编码结构,也就是预测加变换的编码结构。 编码视频流采用层次结构进行组织,由外到里分别是序列层、图像层、组块层、宏块层和块层。宏块以上每层的开始都以一个惟一的码字来标识,语法大部分采用定长码编码方式,无需大量的数据操作,仅仅从码流中获得解码每个宏块数据所需的信息,解码复杂度不高,是严格的串行处理过程,这些非常适合软件实现。宏块解码却复杂得多,除了少量的定长码解码外,还有较为复杂的变长字解码,这增加了解码难度和实现的复杂度,单纯的软件解码无法满足高清视频解码实时性的要求,因而需要用硬件来实现宏块层以下部分的解码工作。基于对AVS解码过程原理及复杂度的分析,将宏块层以上部分的解码由软件处理,宏块层及以下部分的解码由硬件负责。这里提出一种新的软硬件协同处理的AVS可变长解码结构,如图2所示。

在该SoC平台中,软件部分主要功能包括宏块层以上部分语法元素解析和系统控制两部分。其中系统控制部分主要负责对硬件各寄存器状态设置、在RAM 上配置好待解AVS 码流和已解好的语法元素流等。硬件部分则宏块层的解码和图像重建工作。软件将已解好的上层语法元素做成解宏块所需的参数流作为驱动通过全局的DMA 控制器输入给硬件。硬件依据输入的参数流开始宏块解码并将解好的数据输出到RAM。

3 变长字解码设计

可变长度编码就是采用不同长度的二进制码来表示不同符号的编码方法。其使用较短的码字表示出现频率高的信息,用较长的码字表示出现频率低的信息。因此,与定长码相比,可变长度编码的压缩效率大大提高,在视音频编码标准中得到了广泛的应用。

AVS的变长码不同于H.264,也不同于MPGE-2。AVS采用的是上下文自适应2D-VLC[5](Two Dimension Variable Length Coding)的指数哥伦布编码。采用指数哥伦布码一方面可以降低解码的复杂度,无需像MPEG-2标准一样查找一长串码表;另一方面,它可以根据编码元素的概率分布灵活地选择指数哥伦布码编码的阶数k,从而使编码效率逼近信息熵。

3.1 k阶指数哥伦布码

指数哥伦布码的比特串分为前缀和后缀两部分,其码字结构为[M][1][INFO]。M域由若干个连续的“0”组成,1域为固定的一比特数据“1”,代表了指数哥伦布码的分隔符,M域和1域共同构成了指数哥伦布码的前缀。INFO域为后缀,包含了信息比特数据。

对于0 阶指数哥伦布码:假设n是前缀中0的个数,后缀中信息位INFO的个数也为n位,整个码字长度是2n+1位。码字的编码数据CodeNum与n以及info的关系为:

CodeNum=2n+ INFO -1;

对于k 阶指数哥伦布码: 信息位由n+k个比特构成,整个码字长度是2n+k+1,编码数据为:

CodeNum=2n+k+ INFO -2k。

其中AVS指数哥伦布码阶数k的取值范围为0~3,表1为k阶指数哥伦布编码表。

AVS中定义了4种描述符来表示指数哥伦布编码的语法元素,分别是u(e)、s(e)、m(e)、c(e) 其中:描述符ue(v) 表示语法元素的值等于CodeNum;se(v) 根据表2中给出的有符号指数哥伦布码的映射关系求语法元素的值;me(v)根据标准中规定的映射关系求语法元素的值;ce(v) 用于表示指数哥伦布码与残差系数(2D-VLD) 的映射关系,ce(v)描述的语法元素采用0阶、1阶、2阶或3阶指数哥伦布编码进行解析,对应还有19个码表供查找。

3.2 块残差系数解码

3.2.1 变长码表ROM存储结构设计

在AVS中,ce(v)解码流程中要用到的一系列待查码表共有19个,分别为色度码表,帧间和帧内模式下的亮度码表。这19个变长码表在AVS标准中是以2维的形式出现的,并且原始码表有不包含trans_coefficient值的索引项的情况,故需要重新设计变长码表,并使其符合SOC平台内部ROM的存放格式。该SoC平台的内部ROM有3种存储结构,分别为8bit,16bit和32bit。本文选用了32bit的存储结构,这样能做到解一变换系数trans_coefficient只查一次表,从而减少时钟消耗。

1)(run, level)常规解码:当transcoefficient小于59时, 内部ROM存储结构如表3所示。解码时,根据上层解码单元传来的编码块信息,以transcoefficient值为索引项查找映射表3得到(run, level),同时得到更新后映射码表的表号。ESC为transcoefficient是否小于29的标志;EOB为块结束标志;Next table为映射码表的表号,亮度块时Next table范围为0~6,色度块时Next table范围为0~4;absLevel为Level的绝对值。

2)(run, level)逃逸解码:当transcoefficient大于等于59时,内部ROM存储结构如表4所示。解码时,以transcoefficient值为索引项查找映射表4,得到run和相关变量值,与此同时,解析出escape_level_diff的值。RefAbsLevel与escape_level_diff之和为level的绝对值,level的符号位由transcoefficient的最低位决定。存储结构中Run由( trans_coefficient-59)/2得到;RefAbsLevel为Level的参考值;如果transcoefficient为奇数时,bit0~7存放-RefAbsLevel,否则存放RefAbsLevel。

3.2.2 残差解码模块设计

AVS对块的残差系数采用内容自适应的变长编码,其特点是每次解码时都需要根据上次解码的结果切换映射码表。不同的码表决定了ce (v)所用的哥伦布码的阶数k。

残差系数解析流程如图3所示。先判断当前块是否存在编码数据,如不存在,则结束当前块解码,开始解下一块。若存在,则首先选取出哥伦布编码的阶数k,因为不同的编码方式采用的哥伦布编码阶数不一样;其次是从码流中解析出codenum 值;然后通过codenum 的值解析并查表得出(run,level) ,再将其存入RAM 中供下一级模块使用。

4 实现结果分析及结论

使用C代码和汇编代码将本文提出的可变长解码器付诸实现。用C实现AVS码流宏块层以上部分语法元素解析和系统控制;用汇编代码实现宏块层的解码,并在SoC仿真验证平台通过功能仿真。首先将平台软件部分实现解码的输出结果与AVS标准参考软件(C代码)RM52产生的输出结果进行比较,比较的结果表明SoC平台软件部分达到了设计的要求,这样确保SoC平台硬件部分输入数据正确无误。最后将软硬件联合进行仿真测试,结果该VLD模块实现了AVS视频解码功能并且解码速度有所提高。

本文提出了一种基于SoC平台的AVS解码器可变长解码的软硬件分区的实现方法,该结构利用ROM存放设计合理、优化的变长码表。采用C语言和汇编语言实现,并通过SoC仿真平台验证,在较低的解码器复杂度的前提下顺利地完成了可变长解码。

参考文献:

[1] AVS工作组.AVS视频(报批终审稿)信息技术先进音视频编码第二部分:视频[S].

[2] 国家数字音视频解码技术标准工作组.视频编码标准AVS技术介绍[J].电子产品世界,2005(19):58-62.

[3] Tseng P C, Chang Y C, Huang Y W, et al.Advances in hardware architectures for image and video coding-A survey[J].Proceeding of the IEEE,2005,93(1):184-197.

[4] 贾惠柱,解晓东,高文.基于软硬件分区的AVS高清视频解码器结构[J].计算机研究与发展,2008,45(3):510-518.

[5] Yanmei Qu, Yun He.A Simple and Memory Efficient VLSI Architecture of CA-2D-VLC Decoder for AVS[M].Proc.PCS2006,in press.

上一篇:入侵检测系统中神经网络分析器的设计 下一篇:模糊描述逻辑系统L-ALCN中的形式概念格