关键词:
AVS解码器(精选七篇)
AVS解码器 篇1
AVS是我国第一个自主音视频编解码标准,与该领域其他国际标准如MPEG-4、H.264相比,AVS解决了专利问题,其编码效率与H.264相当,且本身具有高效率低复杂度等诸多优点,使得AVS具有广阔的应用前景。
基于DSP平台实现的视频编解码器开发周期比较短,同时具有很大的灵活性,能很好地满足目前市场实际应用和具体特性需求。TMS320DM6446是TI公司专门为多媒体领域应用而开发的高性能定点DSP[1],其内核具有2个数据通道、8个独立的功能单元,采用超长指令集结构(VLIW),每个时钟周期最高可并行处理8条32位指令。本文通过分析AVS环路滤波算法的特点,首先对算法的实现进行了结构上的调整,又对其部分代码采用手工汇编进行优化,在保证解码质量的前提下,显著地提高了解码速度。
1 AVS解码器介绍
AVS与H.264/AVC等其他国际主流压缩视频标准类似,采用基于块的混合编码框架,解码器主要包括解析和解码两部分,其中解析部分包括熵解码、整数反DCT变换等模块,解码部分主要包括帧间预测、帧内预测和环路滤波模块,如图1所示。
编解码器反变换量化后图像会出现方块效应[2],且块效应可能会出现在每个宏块的边界上,为了有效去除这些方块效应,达到较高质量的图像效果,要在重建帧之前,对码流采用自适应环路滤波,控制解码误差的累加和扩散,因此处理好环路滤波对AVS 解码器的性能至关重要[3]。
2 环路滤波原理
AVS解码器中的环路滤波以88宏块为单位进行[4],除图像边界和条带边界不需要滤波,所有宏块都应以8×8宏块为单位按照光栅扫描顺序依次处理,先从左到右对垂直边界滤波,再从上到下对水平边界滤波的顺序对边界做环路滤波。每个宏块对亮度和色度分别进行环路滤波[5],如图2所示(4∶2∶0格式)。每个8×8亮度块之间都存在一个边界强度,用Bs表示,对应位置块的亮度边界强度Bs和色度块的边界强度Bs相同,如图2所示(4 ∶2 ∶0格式)。且边界滤波分为垂直和水平边界的亮度和色度滤波,由Bs值决定边界滤波的强度,Bs可取值0,1,2,根据局部样本值的特性,对应的边界滤波情况分别为不滤波、标准滤波、强滤波。
注:①粗实线为垂直边界,粗虚线为水平边界;BsH表示水平方向的滤波,BsV表示垂直方向的滤波。
AVS环路滤波以8×8块为单位进行,图3表示边界两侧的p块和q块在水平或垂直方向的6个样本点。利用边界附近的6个像素点对边界进行修正,亮度最多需要修正4个样本值,即p0,p1,q0,q1。色度最多需要修正2个样本值,即p0,q0。
注:①粗线条为边界。
在对边界块进行滤波处理时,如果在DCT边界上,正好是图像的边界,若不加以判断,就会误认为是方块效应,这样一来会产生新的误差,导致图像的质量下降,所以要先对边界判断。若是真实边界,则不进行滤波处理;若是伪边界,根据滤波强度来选择不同的滤波方式和滤波系数进行滤波处理。因此环路滤波主要分为三部分:边界阈值推导过程、边界滤波强度推导过程、边界滤波过程。
3 在DSP上的优化分析及实现
由 AVS视频标准可知,在整个自适应环路滤波过程中,需要在每个像素滤波前进行是否滤波判断,还要以大量条件判断来选择像素点的具体滤波过程,所以算法复杂度高,运算量很大,且滤波过程中,其对于数据的访问也比较繁琐,严重影响了代码的执行效率。本文就是在C代码优化的基础上,在不影响图像质量的情况下,对滤波过程在这部分代码用手工汇编实现,提高滤波速率,达到实时解码的要求。
考虑到边界滤波是对亮度和色度分别作环路滤波,滤波顺序为先垂直后水平,且在DSP上进行垂直滤波和水平滤波时,对边界样本值的读取和经过滤波修正后的样本值的存储方式差别较大,为了减少数据访问,本文先对当前宏块进行垂直边界滤波,再进行下一宏块的解码,在下一宏块的垂直边界滤波之前进行当前宏块水平边界滤波,即采取垂直边界和水平边界的滤波分开进行的方式。整个宏块在滤波完毕后再将宏块样本值输出到片外存储器,这样就节省了一次对片外整帧数据的存储,大大节省了环路滤波所需的时间。利用这种思想本文将DSP上的环路滤波过程分为4种模式分别进行环路滤波,即亮度垂直模式、色度垂直模式、亮度水平模式和色度水平模式。滤波流程为:先确定8×8宏块边界的Bs值,再判断是亮度还是色度,最后根据这些信息选择具体的滤波模式。写汇编时,要考虑DSP自身的特点,使其硬件资源得到最大限度的利用,且使代码的运行速度和尺寸处于最佳折中点。采用并行执行的方法来减少循环内的执行周期数,充分利用2个数据通道,2个数据交叉通路,8个独立的功能单元,通过调整指令顺序填充NOP延迟间隙,提高代码性能。
本文实现了I帧滤波的汇编优化,I帧(Bs=2)滤波流程如图4所示,其中P0,P1,Q0,Q1分别为样本值p0,p1,q0,q1修改后的值,色度不需要对p1,q1进行修改。
这里以I帧色度滤波为例,具体说明手工汇编优化的实现过程。
I帧色度水平滤波模式的具体实现如下:
1) 读取数据,因为待滤波的像素值是8位的重构数据,采用C64X+特有的双字指令LDNDW完成参考样本的读取,完成以上16个字节的读取,即1次完成8个像素点的取值,只需6次便可读取滤波一次所需要的全部像素点,充分利用A,B两个数据通道和并行执行的特点,同时处理8个像素点,0~3像素点主要A通道来完成,4~7像素点主要由B通道来完成。
2) 滤波边界判断,为了同时实现一行8个像素点的滤波,达到像素级修正的同时,充分体现DSP的并行处理能力,需要对α和β进行打包处理,利于并行处理和软件流水的实现,便于在嵌入式系统进行优化。用SUBABS4,CMPLTU4指令实现样本边界滤波判断,且对其值用XPND4指令进行位扩展。
3) 滤波具体过程的实现,先实现α>>2,再对其进行打包处理,最后用ADD4,SUBABS4,CMPLTU4等指令来实现4个像素点的滤波过程判断,且对其值进行位扩展,不同条件下得到的P0和Q0的值主要由双操作指令ADD4和AVGU4实现。
4) 利用步骤2)和步骤3)过程中所得的判断值和AND,NOT,ADD4等指令实现具体像素点的P0和Q0值的修正,0~3像素点P0的实现过程如图5所示,最后用STDW指令将修正后的像素值存入寄存器中即可。
I帧色度垂直滤波模式,在对数据读取和存储上与色度水平滤波模式是不同的,且读出数据后,要对数据进行转置,具体实现过程与色度水平滤波模式类似,这里不再详述。
4 优化结果及分析
使用集成开发环境CCS3.3对所写代码进行验证,且用其提供的剖析工具profile性能分析工具来估计函数的性能。图6显示了在相同的输入数据和相同的硬件资源配置下,C代码和手工汇编实现的I帧耗时分析图。图中AVS_deblockuvih.asm,AVS_deblockuviv.asm, AVS_deblockyih.asm, AVS_deblockyiv.asm分别为I帧滤波的色度水平模式、色度垂直模式、亮度水平模式和亮度垂直模式的汇编程序,EdgeLoop_I_uv, EdgeLoop_I_y分别为I帧滤波色度、亮度的C程序。
观察图6可知,在4∶2∶0模式下,用C实现的I帧环路滤波过程十分耗时,而通过编译器优化和汇编优化后的,I帧亮度(16×16块即4个8×8块)和色度(8×8块)滤波周期都明显大幅度减少,极大地提高了运算速度,缩短了代码执行时间。
5 结论
本文通过分析AVS 环路滤波算法,对算法的实现进行了结构上的调整,又对I帧环路滤波采用手工汇编,实现了像素级的优化,在保证解码质量的前提下,显著提高了解码速度,达到AVS解码器在TMS320DM6446上实现实时解码的要求。
摘要:AVS编解码器采用环路滤波去除块效应来提高图像质量,而环路滤波复杂度高、运算量大,且滤波过程数据访问频繁,严重影响了代码的执行效率。为提高解码速率,通过分析滤波算法特点,调整滤波结构,优化滤波算法,部分代码采用DSP汇编语言。结果表明与传统的C相比,缩短了代码运行时间,提高了执行速度,达到实时解码的要求。
关键词:AVS,环路滤波,汇编
参考文献
[1]李方慧,王飞,何佩琨.TMS320C6000系列DSPs原理与应用[M].2版.北京:电子工业出版,2003.
[2]毕厚杰.视频压缩编码标准——H.264/AVC[M].北京:人民邮电出版社,2005.
[3]杨怀省.基于DSP平台的AVS自适应环路滤波的研究与实现[J].电子器件,2008,22(3):41-44.
[4]AVS工作组.GB/T20090.2—2006,信息技术先进音视频编码第二部分:视频[S].2006.
AVS解码器 篇2
AVS+专业卫星综合接收解码器主要包括两大模块:前端部分和后端部分。前端部分主要包括调谐器、信道解调和信道解码等模块, 这部分的功能是捕捉信道, 并将接收到的调制信号解调和纠错, 然后将数据码流传送给后端进行处理。后端部分主要包括解复用、视频解压缩、音频解压缩、音视频后端处理等模块, 这部分的功能包括分析AVS+传送流、提取所需的视频和音频基本流、恢复出原始的音视频信号。由于卫星传输节目为加密节目, 在AVS+专业卫星综合接收解码器上还需要配置专门的AC卡插槽。基于卫星传输链路的地面数字电视单频网系统结构图如图1所示, AVS+专业卫星综合接收解码器将解密后的卫星节目通过ASI接口或者IP接口输出给地面数字电视发射机。
2 测试内容
AVS+专业卫星综合接收解码器的测试依据为《AVS+专业卫星综合接收解码器技术要求和测量方法》 (GD/J057-2014) , 该方法中主要包括:功能和物理接口要求、卫星信道射频、标准符合性、输出接口、视频技术要求和音频技术要求等六个方面的内容。本文主要介绍了如何搭建测试平台, 同时对两款AVS+专业卫星综合接收解码器的测量结果进行了比较分析, 两款解码器选用了不同型号的解码芯片。其主要参数如表1所示。
2.1 功能和物理接口要求
功能测试框图如图2所示, 主要用来验证传送流的输入格式是否支持188字节包长和204字节包长, 是否支持AVS+视频编码符合GB/T 17975.1-2010的传送流类型, 是否支持多节目码流的解码, 并保持视音频同步, 以及能否将音视频相对延时手动调整至±2ms。其中音视频时延的验证需要将被测解码器SDI输出连接到波形监视器观察, 码流发生器播放的节目码流的音视频也需要同步。在验证过程中, 测试用码流码需要按照规定设置, 高清测试流设置为14Mbps, 视频压缩码率设置为12Mbps, 双声道和2.0立体声音频压缩码率设置为256kbps, 取样率为48k Hz;标清测试流设置为4Mbps, 视频压缩码率设置为3Mbps, 双声道和2.0立体声音频压缩码率设置为256kbps, 取样率为48k Hz。ASI输出接口、IP输出接口和SDI输出接口需要单独验证, 当具备IP输出接口时, 需要同时支持单播和多播输出。经验证, 两款被测解码器在功能和物理接口方面均满足标准要求。
2.2 卫星信道射频
测试卫星信道射频指标采用的标准是《卫星数字电视接收机技术要求》 (GY/T 147-2000) 。卫星信道射频包含信道解调参数和信道性能指标, 其中解调方式、RS编码、卷积交织深度、卷积编码比率、解调方式和符号率, 属于符合性测试。输入L-BAND的RF频率适应范围和捕捉信号的频率范围可以通过调节调制器频率直接测得;输入反射损耗需要借助网络分析仪, 第二本振泄露使用频谱仪测试其带外杂散, 在测试时需要注意关闭AVS+专业卫星综合接收解码器直流输出。接下来重点介绍Eb/No门限值和输入电平的适应范围, 测试框图如图3所示。
(1) Eb/No门限值测试
测量时需要将仪器和设备调整到正常工作状态, 按照卫星调制器的各参数值设置接收机的相关参数。关闭噪声发生器, 用码流发生器发送活动图像和声音的测试信号, 调节接收机和监视器, 使图像和声音能够正常传送, 用频谱仪测量此时的信号电平C;打开噪声发生器, 使被测解码器不能正确解调解码, 然后逐渐减小噪声, 使得到达接收机端的C/N的值逐渐变大, 监视解码器输出的图像和声音质量, 直至解出的图像和声音满足基本要求为止;关闭调制器的输出信号, 用频谱仪测出此时的噪声电平N。
由测量得到的信号电平C和噪声电平N计算出此时的Eb/No值, 对于DVB-S系统计算方法公式如下所示。
其中, fs为符号率, BW为系统带宽, RS<1为外码编码效率, Cr<1为卷积码编码效率。
(2) 输入电平的适应范围测试
在测试时打开噪声发生器, 调节噪声大小, 使系统的载噪比 (C/N) 高于门限值3d B, 之后改变卫星调制器的输出电平, 并相应改变噪声发生器输出电平的大小, 以保证系统的载噪比 (C/N) 高于门限值3d B。卫星信道射频测量结果见表2。
2.3 标准符合性
解码器符合性是指解码器是否按照《广播电视先进音视频编解码第1部分:视频》 (GY/T 257.1-2012) 的规定对编码位流进行解码处理, 并满足GY/T 257.1-2012关于类和级的要求。
本次测试采用动态测试, 利用高清和标清测试码流各46段对AVS+专业卫星综合接收解码器的标准符合性进行验证。测试码流主要分为:一般性测试 (编码位流中包含GY/T 257.1-2012中所有可能的参数) 、存储带宽的测试 (编码位流中包括的所有宏块是单向或双向预测) 、VLC解码的测试 (编码位流中包含VLC码表中所有可能的情况) 、“保留位”测试 (编码位流中包含有“保留位”) 、跳过宏块的测试 (编码位流中包含各种情形的跳过宏块) 、加权预测的测试 (编码位流中使用了加权预测) 、视频编辑码和随机访问的测试 (编码位流中包含视频编辑码VEC及随机访问点) 、填充比特的测试 (编码位流中包含stuffing_bit和stuffing_byte) 、伪起始码的测试 (编码位流中包含为防止伪起始码出现而插入的“10”) 、AEC测试 (编码位流针对高级熵编码工具以及相关延伸的测试) 、加权量化测试 (编码位流针对加权量化工具以及相关延伸的测试) 、双视点拼接测试 (编码位流针对双视点拼接工具以及相关延伸的测试) 和增强场编码测试 (编码位流针对场编码工具以及相关延伸的测试) 。
2.4 输出接口
AVS+专业卫星综合接收解码器输出接口包含SDI高清输出接口、SDI标清输出接口和ASI输出接口。SDI是串行数字接口的简称, 最初是针对演播室环境提出的, 对未经压缩的图像数据用同轴电缆在不同设备间传输, 已作为标准视频接口。SDI是遵循SMPTE标准制定的, 传送4:2:2串行不压缩数字信号, 同时还可嵌入4~8路数字音频信号。SDI高清/标清输出接口测试框图如图4所示。
在测量时, 波形监视器滤波器设置为1k Hz, 在波形监视器可以读出SDI幅度、上升时间、下降时间、上冲和下冲时间差通过上升时间和下降时间相减来计算, SDI抖动需要测试10Hz和1k Hz两种滤波条件下的值。SDI高清和标清输出接口测量结果如表3所示。
ASI输出接口测试只需要将接口连接到示波器上, 示波器接口的阻抗需75Ω, 眼图的峰值可以直接在示波器上读取, 眼图上升 (下降) 时间点到下降 (上升) 时间点需要设置为20% (80%) ~80% (20%) , 即为上升 (下降) 时间, 确定性抖动需要示波器自带独立测量软件来测量。
2.5 视频技术要求
视频技术要求包含高清视频和标清视频两类, 测量指标分别是:介入增益、幅频特性、非线性失真和色亮时延差。高清视频和标清视频测试框图如图5所示, 测量时分别选用对应的高清序列和标清序列。
介入增益是分量Y、CB和CR对于标准信号的幅度变化量, 其中测试是需要选择100%彩条信号。幅频特性的测试可以使用多波群测试信号。严格地说, 多波群信号并不能代表整个视频范围内的频谱特性, 但实际的视频通道中一般不会出现孤立的、凹凸不平的幅度起伏点。因此用多波群测试信号来进行频响测量是足够准确的。如果被测系统的增益与输入信号的幅度有关, 则该系统中存在着非线性。由于模拟分量的亮度/色差通道是分离的, 不存在色度信号的微分增益失真和微分相位失真, 但三个分量信号自身还是存在着非线性失真。非线性失真的测量方法是, 将台阶电平增量相等的五阶梯波测试信号进行测量。在进行通道时延测量时, 波形监视器模拟输到和视频分析仪之间的三个分量通道的连接电缆长度应当相等, 否则, 所得出的测量结果将不能正确地反映AVS+专业卫星综合接收解码器本身的通道时延特性, 测试信号也选择100%彩条信号。高清/标清视频测量结果见表4。
2.6 音频技术要求
音频技术要求包含介入增益、总谐波失真、幅频特性、信噪比、声道电平差和相位差, 被测音频需要将解码器SDI输出通过音频解嵌器分离, 最后使用音频分析仪对音频进行测量。介入增益测试需要幅度为-20d BFS和-6d BFS的两种1k Hz音频信号, 通过音频分析仪测量出对应输出音频电平, 计算出输入音频和输出音频的电平差的绝对值, 取其最大值作为介入增益。总谐波失真测试音频信号幅度为-20d BFS, 音频分析仪分析功能需要设置为音频总谐波失真。幅频特性测试信号频率范围是20Hz~20k Hz的音频信号, 以1k Hz输出电平作为参考计算幅频特性。音频测量结果见表5。
3 结论
对两款不同型号的AVS+专业卫星综合接收解码器的测试结果表明, 两款被测设备均满足GD/J057-2014《AVS+专业卫星综合接收解码器技术要求和测量方法》中的要求。
摘要:本文介绍了AVS+专业卫星综合接收解码器的构成, 重点介绍了解码器的测试过程, 并对测试结果进行了比较分析。
关键词:AVS+,解码器,卫星,符合性
参考文献
[1]刘长涛.数字电视视频通道的技术指标与测试分析[J].现代电视技术, 2012 (3) :102-106.
[2]黄铁军, 高文.卫星直播信源编码标准AVS[J].卫星电视与宽带多媒体, 2007 (22) :43-46.
基于AVS标准的熵解码器硬件设计 篇3
AVS是我国第一个具有自主知识产权的数字音视频编解码技术标准,具有高效、技术方案简洁、芯片实现复杂度低、系统级兼容性好、许可费低等优势。熵解码是AVS解码器中的关键技术,它完成码流解析的功能,即把码流中的每个位解析成有意义的码字,供整个解码器使用,因此熵解码器模块的性能好坏对于整个AVS解码器十分重要。
目前,国内外学者对VLC和CAVLC解码硬件进行了深入的研究[1,2,3,4,5]。如Wu Di,Gao Wen[2]提出了一种优先级编码器检测码字的长度,有效地降低了解码器结构的复杂度。Sheng Bin[3]通过简化查找表的表项,使查找表的速度大大提高。
2 指数哥伦布码
指数哥伦布码的比特串分为前缀和后缀[2]。前缀由leadingZeroBits个连续的0和1个1构成。后缀由leadingZeroBits+k bit构成,即xi串,xi的值为0或1。
AVS标准规定解析k阶指数哥伦布码时,首先从比特流的当前位置开始寻找第一个非零比特,并将找到的零比特个数记为leadingZeroBits,然后计算CodeNum。用伪代码描述如下:
因此根据码字结构及该公式,如果码字的第一个1前面的0的个数leadingZeroBits为M,当阶数为k时,码长L为2×M+1+k,CodeNum值为码字值减去2k。
3 AVS熵解码器设计
3.1 AVS熵解码器的结构设计
笔者提出了一种高效简洁的熵解码系统结构,见图1。FIFO模块为整个熵解码器提供解码数据,是一个同步的位宽为32、深度为8的先进先出数据缓冲器,输入来自待解码数据流,输出送入寄存器R0。寄存器R0,R1为32位寄存器,它们共同作为桶形移位器的64位输入,为桶形移位器提供移位数据。桶形移位器则在每个时钟移掉上一次已经解掉的码流,要移掉的位数则由累加器提供,桶形移位器移位后把后面码流的前32位作为输出送给计算码长模块和CodeNum计算模块,这32位其中就包括下一个要解的码。累加器模块用于累加每个时钟所解码流的位数,累加结果作为桶形移位器的移位数,当累加的结果超过32位时即产生一个进位标志信号,让桶形移位器从R1接收新的32位数据,同时R0从FIFO读取新的32位数据,从而达到码流快速更新的目的。码长计算模块用于计算每次要解码流的位数,该模块一方面作为累加器的码长累加输入,另一方面作为CodeNum计算模块的输入。通过分析指数哥伦布码,根据码流特点可确定出码长计算公式为L=2×M+1+k,在该模块内部包含一个采用并行结构的首1检测器,该检测器用于检测出第一个1前面的0的个数M,根据指数哥伦布码的特点,M不会超过15,因此该首1检测器一次性只需读入码流的前16位,通过比较器的并行比较,确定出码长,从而摆脱了码字结构的限制,提高了解码速度。CodeNum计算模块为下面的ue(v),se(v),me(v),ce(v)各解语法元素模块提供CodeNum数据,其内部包含一个右移位器,用于移掉32位中不是当前码流的部分,即移掉32-L位,然后再根据码流特点所确定计算出CodeNum值。计算阶数模块利用查找表快速确定语法元素的阶数,当ue(v),se(v),me(v)语法元素模块的使能信号有效时,计算阶数模块利用查找表可确定出阶数k为0。对于ce(v)语法元素模块,一共19张码表,每张码表对应确定的阶数,其对应关系如表1。
3.2 AVS熵解码器的各解语法元素模块设计
ue(v)语法元素模块根据标准解析ue(v)语法元素的值等于CodeNum解出ue(v)语法元素的值。
se(v)语法元素模块根据表2给出的有符号指数哥伦布码的映射关系求语法元素的值。
me(v)语法元素模块分为4∶2∶0格式和4∶2∶2格式,每一种格式下各有一张映射码表,MbCBP与CodeNum的映射关系和MbCBP422与CodeNum的映射关系,根据他们之间的映射关系可求出MbCBP和MbCBP422的值。
对于逃逸码的处理在整个系统中增加了一级trans_coefficient或escape_level_diff判断模块,即根据CodeNum值大小,如果CodeNum<59,则ce(v)语法元素模块按照正常方法解码,即trans_coefficient等于CodeNum用于查找表相应(Run,Level)值;如果CodeNum≥59,则ce(v)语法元素模块按照解逃逸码的方法解码,即下一个要解的码为逃逸码,解析下一个ce(v)语法元素,得到一个新的CodeNum,escape_level_diff等于CodeNum。并且Run=(trans_coefficient-59)/2;对于求Level数组,如果trans_coefficient是奇数,则Level=-(RefAbsLevel+escape_level_diff);否则Level=(RefAbsLevel+escape_level_diff),其中RefAbsLevel亦根据相应的映射关系查找表求得。对于解ce(v)语法元素模块,其中又分为解帧内预测编码块,解帧间预测编码块,解色度预测编码块。输入为前面解出的CodeNum值以及控制使能信号,控制使能信号控制当前解哪一个模块,输出分为4部分,即要解码的(Run,Level)对,返回给计算阶数模块的信号用于确定阶数以及当前块解码结束信号。ce(v)语法元素模块内部结构如图2所示。
各模块的实现利用状态机实现其内部各码表的选择,这里以ce(v)语法元素intra模块的状态转换图为例如图3。
对于码表选择的状态机实现算法为每一次块解码时都从VLC0码表开始,并且maxAbsLevel=0,根据解出的Level值,求其绝对值absLevel,码表切换的状态转换条件如下:如果absLevel>maxAbsLevel,则maxAbsLevel=absLevel,并且如果absLevel=1,选择CurrentVLCTable=VLC1_Intra;如果absLevel=2,选择CurrentVLCTable=VLC2_Intra;如果absLevel=3或4,选择CurrentVLCTable=VLC3_Intra;如果absLevel=5,6或7,选择CurrentVLCTable=VLC4_Intra;如果absLevel=8,9或10,选择CurrentVLCTable=VLC5_Intra;如果absLevel>10,选择CurrentVLCTable=VLC6_Intra。如果absLevel
3.3 对码表的优化
这里以帧内预测编码块的VLC0_Intra为例。码表见表3。
通过对码表的观察分析可以归纳出:
当trans_coefficient为偶数时:
当trans_coefficient为奇数时:
(n分别为1,2,3,4,5,6,7)
码表中其他少数trans_coefficient值用查找表对应Run,Level值。其他码表也采用了类似的算术方法优化。
4 仿真结果
本设计采用的仿真工具为Synopsys公司的VCS,仿真结果表明功能完全达到设计要求,相关模块的仿真结果见图4和图5。
本设计采用0.25μm CMOS工艺库,用Design Compiler进行综合,面积1.5万门左右,最高频率达到100 MHz,达到实时解码高清AVS码流要求。
摘要:提出了一种基于AVS标准熵解码器的设计方案。采用桶形移位器进行移位,采用并行结构确定码长。采用算术方法对19张码表进行算术优化,从而减小了芯片面积,提高了解码速度。采用Verilog HDL语言进行源代码设计和仿真。在0.25μm CMOS工艺库下,用Design Compiler进行综合,面积为1.5万门左右,最高频率达100MHz,达到实时解码高清AVS码流要求。
关键词:AVS标准,指数哥伦布码,熵解码器
参考文献
[1]数字音视频编码技术标准工作组.GB/T20090.2-2006,信息技术先进音视频编码第2部分:视频[S].2006.
[2]WU Di,GAO Wen,HU Mingzeng,et al.An exp-golomb encoder and decoder architecture for JVT/AVS[EB/OL].[2008-11-20].http://ieeexplore.ieee.org/xpl/freeabs-all.jsp-arnumber=1277358.
[3]BIN Sheng,WEN Gao,DON Xie,et al.An efficient VLSI archi-tecture of VLD for AVS HDTV decoder[J].IEEE Trans.Consumer Electronics,2006,52(2):696-700.
[4]HE Yajun,ZHANG Duoli,SHEN Bin,et al.Implementation of fast Huffman decoding algorithm[C]//Proc.7th International Confer-ence on ASIC.Guilin:IEEE Press,2007:770-773.
AVS解码器 篇4
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的关系为:
对于k阶指数哥伦布码:信息位由n+k个比特构成,整个码字长度是2n+k+1,编码数据为:
其中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和相关变量值,与此同时,解析出es-cape_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仿真平台验证,在较低的解码器复杂度的前提下顺利地完成了可变长解码。
摘要:AVS是我国自主制定的音视频编码技术标准。可变字长编解码是AVS标准中的一项重要技术,该文提出了一种基于SoC平台的AVS可变字长解码(VLD)设计。根据AVS变长码表的特点,重新设计合理的变长码表减少时钟消耗,采用C语言和汇编语言进行设计、模拟,并通过了SoC仿真平台验证。在164MHz工作频率下实现满足基准档次6.0级别的AVS高清视频码流的实时解码要求。
关键词:AVS,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.
AVS解码器 篇5
现有的数字音视频编解码标准主要分两大系列:ISO/IEC JTC1制定的MPEG系列标准以及ITU针对多媒体通信制定的H.26x系列视频编码标准和G.7系列音频编码标准。其中,国际标准H.264/AVC标准和国内标准AVS[1]受到了普遍的重视和实际应用。
AVS帧内亮度预测和色度预测都是以8×8的宏块为单位[1,2],亮度预测模式共5种:Vertical预测模式(模式值0)、Horizontal预测模式(模式值1)、DC预测模式(模式值2)、Down-Left预测模式(模式值3)、Down-Right预测模式(模式值4)。色度预测模式共有4种:Vertical预测模式、Horizontal预测模式、DC预测模式和Plane预测模式。
H.264/AVC帧内亮度预测采用的是基于4×4的块预测和基于16×16的块预测方法。其中intra 4×4块有9种预测模式,intra 16×16块有4种预测模式。就算法复杂度而言,H.264/AVC帧内预测复杂度高于AVS帧内预测。
由于AVS标准是针对大尺寸视频制定的,所以其采用的技术也都考虑以适应大尺寸的图像,特别是基于8×8块的帧内预测、变换和量化等技术。对于CIF,QCIF这样尺寸比较小,同时像素间变化比较快的图像的编码性能比较差,不及H.264采用的4×4的预测[2]。实验表明,在对高清序列的编码中,AVS和H.264/AVC的编码性能基本相当,部分序列的编码性能甚至超过了H.264[3]。但是必须承认,对于如CIF一样的小尺寸图像,AVS的性能确实不如H.264。
2 AVS帧内预测模块的硬件实现
根据AVS帧内预测算法,可以将整个帧内预测模块划分为:帧内预测模式判断、样本值计算和图像重建[3,4]。预测所需的参考样本值存放在模块专用RAM中,参考预测模式则存放在预测模式专用RAM中。
2.1 工作流程
首先,由VLD可变长解码模块输出的当前块左上角像素值Img_x和Img_y在计算单元计算得到参考样本值和参考预测模式所在的RAM地址Ref_data_addr和Ref_predmode_addr,根据地址在各自的RAM中分别读出参考样本值Ref_data和参考预测模式Ref_predmode,分别送入计算单元和预测模式判别模块。参考预测模式Ref_predmode和VLD输出的Pred_mode_flag、Intra_pred_mode一起在预测模式判别模块中计算得出当前块所使用的帧内预测模式Intra_mode。然后,计算单元根据当前块帧内预测模式Intra_mode和参考样本值Ref_data计算出当前块的预测矩阵Pred_matrix,与经过反变换后的残差矩阵在图像重建模块中相加得到当前块的实际像素值。最后用得到的实际像素值更新模块专用RAM中的参考样本值。
2.2 所需RAM大小估计
在模块专用RAM中存放的是图像I帧的一整行像素(HDTV:1 920 pixel)与一宏块的一列像素(16 pixel),这是用作预测的参考样本值。
由于每个块的帧内预测模式还要被以后的预测块在计算其帧内预测模式时用到,所以需要将每个块的帧内预测模式存放在预测模式专用RAM中,每个模式大约占3 bit。
考虑到亮度预测和色度预测两种情况,所需RAM大小为(1 920+16)×8×1.5 bit=23 232 bit(模块专用RAM);(240+2)×3×1.5 bit=1 089 bit(预测模式专用RAM)。
2.3 可重构计算单元设计
研究AVS的帧内预测各个模式,虽然对应不同的模式有不同的预测值求解式,但使用到的主要运算单元的结构框架是相同的。概括来说,都是先进行求和,然后移位,最后进行限幅。求和移位部分都采用了(a+2×b+c+2)>>2的形式,所以可以根据(a+2×b+c+2)>>2作为可重构计算单位的核心结构,见图2。
这个计算单元能满足包括亮度预测和色度预测全部预测模式的需要,除了几种较负责的预测模式之外,这个计算单元可以在1个时钟周期产生1个block、1行8个预测像素值。
2.4 运算复杂度分析
当AVS应用于HDTV高清解码时,如果帧内预测解码部分是采用串行执行的,除软件方式外是无法达到实时解码性能要求的。因此在硬件实现时需要采用并行的方式进行计算,以满足速度要求,即每次对8个像素点进行处理[5,6,7]。
假设采用并联的8个最小计算单元来完成1个时钟周期8个像素点的计算,那么在最小计算单元的输入端,需要对36个参考样本值(r0~r17,c0~c17,共36个)做36选24的输入,需要耗费大量的选择器资源。考虑到每一个最小计算单元的输入端的值都是连续的,比如r0r1r2,r1r2r3,r2r3r4,…,这样就可以利用参考样本值的数据移位操作来避免使用大量的选择器。实际硬件设计中,采用16个最小计算单元,输入值分别为r0,r1,r2;r1,r2,r3;r2,r3,r4;r3,r4,r5;r4,r5,r6;r5,r6,r7;r6,r7,r8;r7,r8,r9(以分号为间隔)和c0,c1,c2;c1,c2,c3;c2,c3,c4;c3,c4,c5;c4,c5,c6;c5,c6,c7;c6,c7,c8;c7,c8,c9。对于超过r9和c9的参考数据部分,采用移位实现。
2.5 6种预测模式的硬件实现
6种预测模式中:
1)对于水平预测模式和垂直预测模式,预测值可以由参考样本值直接得到,所以不经过计算单元而直接由参考样本值赋值得到。
2)对于DC模式中仅r[i]可用情况,直接输出outr0~outr7,同时将r0~r17移位;仅c[i]可用情况,直接输出outc0~outc7,同时将c0~c17移位;当r[i]和c[i]均可用,直接输出out0sel0~out7sel0,同时将r0~r17以及c0~c17移位。
3)对于Down-Left预测模式,直接输出out0sel1~out7sel1,同时将r0~r17和c0~c17移位,使得下一时钟周期仍是需要的输出。
4)对于Down-Right预测模式,由于涉及到x=y时的特殊情况,考虑设计8个8位的寄存器strore0~store7。将store0赋值为(c[1]+2×r[0]+r[1])>>2,其余的store1~store7分别赋值为可重构计算单元的第一级输出outr0~outr6。然后每次计算完毕,将store0~store7右移,即store0赋值给store1,store1赋值给store2,…,store6赋值给store7。同时把outc0赋给store0,并把c0~c17移位。这样,每个时钟周期把寄存器store0~store7的当前值输出,可以保证在8个时钟周期内完成1个块预测值的计算。
5)对于色度预测模式,可以有以下处理方法:
其中CLip内截断函数,令
块第1行的预测数据可以由A0计算得到,即:
而接下来每一行的预测数据都可以由前一行的数据同ic相加得到,即:
由此可以看出,plane预测模式关键是计算出第1行预测值,而且计算中所需的ia,ib,ic这3个值在一个块的范围内是保持不变的,因此可以通过预处理将这3个值以及A0计算出来,然后直接利用图3所示的计算单元进行计算。同样的,考虑设计8个寄存器outP0~outP7,在确定是plane预测模式后,首先计算出第1行预测值,然后把这8个预测值一一赋值给outP0~outP7。然后把outP0~outP7的输出值回送到加法器的一端,与ic相加后在下一个时钟周期把加法器的输出赋值给寄存器,这样,8个时钟周期可以分别得到8行的预测数据值[8,9]。
综上所述,在所有预测模式情况下,该硬件结构都可以保证在8个时钟周期内完成一个块数据的预测输出。
3 逻辑仿真与综合
按照上述方案设计的帧内预测解码单元,用VHDL硬件描述语言描述其硬件结构,并用Modelsim进行了逻辑仿真。将仿真的结果与用C语言编写的AVS解码器的中间结果进行比较,比较的结果表明该硬件结构能够准确完成帧内预测解码的要求。帧内预测解码器的仿真结果如图4所示。可以看出,输出有效信号持续了8个时钟周期,每个时钟周期,对应8个预测像素点(块的一行)的并行输出,8个时钟周期,完成8×8=64个像素点的预测输出。
用Altera公司Stratix II系列中EP2S60F672C5ES系列FPGA,综合出的频率达到了123.6 MHz,消耗的A-LUTs为2 019,约占总资源量的4%,完全满足了AVS标准清晰度数字电视视频实时解码的要求。
4 小结
本文在分析AVS帧内预测模式特点的基础上,提出了一种并行结构的帧内预测解码器的硬件实现方式。其将所有预测模式的计算都集中到了一个并行结构的计算模块中,根据不同的预测模式对计算模块的输入数据进行选择,从而实现了可重构的硬件结构,节省了系统资源。
参考文献
[1]数字音视频编解码技术标准工作组.GB/T20090.2-2006,信息技术先进音视频编码第2部分:视频[S].北京:中国标准出版社,2003.
[2]梁剑宇.AVS标准的帧内预测技术研究[D].广州:中山大学,2004.
[3]胡倩.AVS视频解码器的一种结构设计与硬件实现[J].浙江大学学报,2006,40(12):2139-2143.
[4]WIEGAND T,SULLICAN G J,BJNTEGAARD G,et al.Overview of the H.264/AVC video coding standard[J].IEEE Trans.Circuits and Systems for Video Technology,2003,13(7):560-576.
[5]SCHAFER R,SIKORA T.Digital video coding standards and their role in video communications[J].Proceedings of the IEEE,1995,83(6):907-924.
[6]YU L,YI F,DONG J,et al.Overview of AVS-video:tools,per-formance and complexity[C]//Proc.SPIE Conference on Visual Commu-nications and Image Processing.Beijing:SPIE,2005:679-690.
[7]胡兴军.AVS:数字电视音视频解码技术[J].有线电视技术,2004(10):7-8.
[8]邵楠.AVS运动补偿电路的VLSI设计与实现[J].信息技术,2006(12):22-24.
AVS解码器 篇6
AVS+标准, 即GY/T 257.1-2012《广播电视先进音视频编解码第1部分:视频》[1], 于2012年发布。2014年3月, 国家新闻出版广电总局、工业和信息化部又联合颁布了《广播电视先进视频编解码 (AVS+) 技术应用实施指南》[2], 部署了AVS+在有线、地面、卫星、互联网上的推广应用。目前, AVS+视频编码已经成为高清节目上星的必要条件。而对于之前已经上星的高清数字电视频道, 在2014年底之前, 都要将其统一转换为AVS+视频编码。另外, 新部署的有线、地面、卫星高清机顶盒, 均需支持AVS+视频解码。
AVS+技术的推广, 需要相应的配套标准进行支撑。目前, AVS+高清编码器的标准已制定完毕, 于2013年10月发布实施, 即GY/T 271-2013《AVS+高清编码器技术要求和测量方法》[3]。另有两项也很亟需, 分别是《广播电视先进音视频编解码第2部分:视频符合性测试》和《AVS+卫星专业综合接收解码器技术要求和测量方法》, 两者都已制定完毕[4,5]。本文对这两项新制定的标准进行解读。
1《广播电视先进音视频编码第2部分:视频符合性测试》标准解读
1.1概述
符合性测试标准是视音频编解码系列标准之一。如H.264、H.265和国内的AVS, 都有配套的符合性测试标准。
《广播电视先进音视频编码第2部分:视频符合性测试》 (以下简称“AVS+符合性测试标准”) 是AVS+的配套标准, 它为AVS+产品的标准符合性测试提供技术指导和测试方法, 能有效作用于AVS+视频编解码产品的研发、生产、测试、运行维护等, 并对AVS+的发展起到良好的促进作用。
AVS+符合性测试标准制定的主要依据为GY/T 257.1-2012《广播电视先进音视频编解码第1部分:视频》, 主要参考文献为GB/T 20090.4-2012《信息技术先进音视频编码第4部分:符合性测试》[6]。自2014年1月起, 起草小组编写了标准讨论稿并召开了数次讨论修改会。同时, 进行了测试码流研制、测试码流验证、产品测试验证及其他相关工作。之后, 经过全国广播电影电视标准化技术委员会秘书处审阅以及广泛征求专家意见, 该标准于9月29日顺利通过了科技司和标委会组织的专家审查会。
1.2标准解读
1.2.1标准整体介绍
《广播电视先进音视频编码第2部分:视频符合性测试》共分五章, 前四章遵循标准的通用格式。第一章是标准范围, 概括给出了标准内容和适用范围。标准的规范性引用文件只有一个, 即GY/T 257.1-2012《广播电视先进音视频编解码第1部分:视频》, 在第二章列出。第三章“术语和定义”给出了符合性测试、测试位流、被测解码器、参考解码器、合法解码器、位流验证器的明确概念。第四章给出了AEC、BBV、LPS、MPS、VLC、VLD等几个缩略语。标准的核心技术内容由第五章给出。
第五章分四节, 第一节明确本章中“编码位流”、“位流”和“解码器”的含义;第二节给出了编码位流符合性定义、解码器符合性定义、与类和级相关的要求和限制、编码器的要求、保留扩展的相关要求等;第三节给出了编码位流的符合性测试;第四节给出了解码器的符合性测试。
1.2.2 AVS+符合性测试标准的主要内容
AVS+符合测试标准的内容分为编码位流的符合性测试和解码器的符合性测试两部分。AVS+符合性测试标准中对编码器的符合性测试要求体现在对其编码输出位流的符合性测试上。
编码位流符合性定义在第五章第二节给出。编码位流中包含GY/T 257.1-2012规定的大量的参数, 一些参数被规定为特定的值, 另一些参数只规定了一个范围。为了检查编码位流的正确性, 需要分析整个位流的语法, 抽取出全部参数并分析这些参数值是否符合GY/T 257.1-2012中的规定。分析工具可使用位流验证器, GY/T 257.1-2012的参考软件可以作为一个位流验证器。符合GY/T 257.1-2012的编码位流应通过位流验证器的测试, 当经过位流验证器测试时, 位流不应引起位流验证器的任何错误或非一致性消息。
编码位流的符合性测试内容包括:起始码的测试、序列头的测试、用户和扩展数据的测试、I图像头的测试、PB图像头的测试、条带的测试、宏块的测试、块的测试、码流缓冲区验证、连续B图像和跳帧数目验证。
解码器符合性定义在第五章第二节给出。GY/T 257.1-2012解码器符合性测试是测试解码器能否正确解码符合GY/T257.1-2012的编码位流。有两种测试方法:静态测试和动态测试。静态测试要求测试重建样本, 测试解码处理的准确性。由于GY/T 257.1-2012中的IDCT变换为整数变换, 因此, 当被测解码器与参考解码器 (可以使用GY/T 257.1-2012的参考软件作为参考解码器) 从同一编码位流中解码出同一幅编码图像时, 这两个解码器产生的重建样本应完全相同。动态测试将所有的重建样本输出显示并主观评价显示内容有否异常。
解码器的符合性测试需要用到测试位流。标准共整理了55个测试位流, 分为15个类型:一般性测试、存储带宽的测试、VLC解码的测试、“保留位”的测试、跳过宏块的测试、加权预测的测试、最大跳帧数目的测试、视频编辑码和随机访问的测试、填充比特的测试、伪起始码的测试、4:2:2格式解码测试、AEC测试、加权量化测试、双视点拼接测试、增强场编码测试, 基本涵盖了GY/T 257.1-2012的技术内容。
1.2.3测试位流的必要非充分性
关于解码器的符合性测试, AVS+符合性测试标准定义了共15类55个测试位流, 基本涵盖了GY/T 257.1中对解码器的各项规定。但GY/T 257.1的技术细节非常多, 无法确保能涵盖所有的细节。因此与同类标准类似, AVS+符合性测试标准规定的只能是“必要非充分”的, 不排除在实践过程中, 有更多的标准符合性测试要求可以补充和增添进来。所规定的测试位流及其相应的测试码流集, 也是可以不断补充和完善的。
在之前所有类似的视频编解码符合性测试标准中, 指出“至少能够成功解码标准中所给出的符合性编码比特流的解码器, 才可以说是符合某视频编解码标准的合法解码器”, 我们认为这样的描述不很准确, 并没有体现出“必要非充分”的含义。
在AVS+符合性测试标准中加以改动, 使得更能体现“必要非充分”, 将相应部分描述如下:
5.4定义了解码器的符合性测试, 5.4.2定义了符合性测试所用的测试位流, 解码器应通过该测试。
同时, 在标准引言部分声明:
鉴于视频编解码的高度复杂性, 本部分规定的测试可能无法完全涵盖GY/T 257.1-2012所规定的所有的参数组合和要求, 成功通过本部分测试的编码位流和解码器未必完全符合GY/T 257.1-2012的所有规定。但本部分已尽可能多地涵盖GY/T 257.1-2012所规定的参数组合和要求。因此, 在本部分中约定, 通过本部分测试的产品可认定为符合GY/T 257.1-2012标准。
这从另外一个角度表明能解码AVS+符合性测试标准中规定位流的解码器, 不一定完全符合GY/T 257.1标准, 但在一定程度上 (至少在AVS+符合性测试标准所涵盖的方面和内容上) 是符合GY/T 257.1标准的。
1.2.4“保留位”和“保留”语法元素值
在GY/T 257.1定义的位流语法中, 某些语法元素的值被标注为“保留” (reserved) 。“保留”定义了一些特定语法元素值用于将来对该标准的扩展。这些值不应出现在符合该标准的位流中, 如profi le_id, 除0x00、0x20、0x48分别是禁止、基准类和广播类的语法元素值之外, 其他的值都是保留语法元素值。位流中的“保留位” (reserved_bits) 表明保留了一些语法单元用于将来对该标准的扩展, 解码处理应忽略这些位, 如视频扩展数据保留字节reserved_extension_data_byte就是保留位, 需要在解码时忽略。但在实际应用场景中, 可能存在编码位流使用了保留语法元素值或定义了保留位功能使之变得有意义的情况, 此时该编码位流是不符合GY/T 257.1规定的位流。如果存在既能正确解码GY/T 257.2中规定的所有测试位流, 又能解码上述不符合标准的位流, 也不能说该解码器不符合GY/T 257.2标准。因此, 再强调一下本文1.2.3节中指出的规定:“通过本部分测试的产品可认定为符合GY/T257.1-2012标准”, 即能不能解码其他符合或不符合标准的位流, 不在该标准的规定范围内。
因此在AVS+符合性测试标准中, 关于“保留位”和“保留”语法元素值规定如下:
5.2.5保留扩展的相关要求
在GY/T 257.1-2012中规定了一些“保留”语法元素值和“保留位”。
“保留”语法元素值不应出现在符合GY/T 257.1-2012的编码位流中, GY/T 257.1-2012的合法解码器可以不处理“保留”语法元素值。
符合GY/T 257.1-2012的合法解码器可不处理“保留位”。
1.2.5动态测试
在AVS+符合性测试标准的主要参考文献GB/T 20090.4的5.4.1中, 给出了解码器动态测试方法。
a) 所有的重建样本都输出给显示处理;
b) 被测解码器重建样本输出给显示处理的定时与GB/T20090.2-2006的规定一致。
从而验证解码器缓冲区在使用合适的比特传送速率时不会发生上溢或下溢。
所谓“定时”, 我们理解是指在输出图像显示完整的前提下, 图像的显示间隔是frame_rate_code规定的帧率的倒数 (如若frame_rate_code为0011, 则帧率为25帧/s, 图像显示间隔为40ms) 。而对“一致”没有给出解释。“一致”是由主观定性判断, 还是由客观定量测量?如果需定量测量, 是否有一个允许的波动范围, 譬如-2ms~2ms?但在现有实验条件下, 很难实现这样的定量测量。对于内置AVS+解码功能的电视机, 只能通过对显示画面的高速捕捉, 将光信号转化为电信号进行分析, 得到显示图像的时间间隔, 并判断毫秒级的差异。但目前据了解还没有这样精密的测量装置。
基于以上考虑, 在GY/T 275.2中, 将动态测试方法改为:
动态测试通过以下步骤检查:
a) 所有的重建样本都输出显示;
b) 主观评价输出显示无异常。
即采用主观评价的方式实现动态测试。动态测试将解码的重建样本输出显示, 如输出显示经主观评价无异常, 即判定为通过。随着测量技术的发展, 可能会出现方便而准确的高精度定量动态测试方法, 那时标准可做相应修订。
1.2.6编码位流中的语法参数测试
在实际测试时, 使用的位流分析工具无法判断位流中连续的一组0和1位串是不是对应某一参数名称, 只能判断某一个参数名称对应的参数值, 不管其对和错。
如, 在GB/T 20090.4的5.3.5的表4中, 对bbv_check_times参数的第一条测试要求是:
1.当low_delay等于‘0’时, 编码比特流中不应该出现bbv_check_times。
但该测试实际上无法完成。分析如下。
在GB/T 20090.2-2006的7.1.3.1“I图像头定义”中, 给出如下代码片段:
上述代码表明, low_delay为1时, 位流中存在bbv_check_times;low_delay为0时, 不应存在bbv_check_times。如果编码器发生错误, 在low_delay为0时, 也加入了bbv_check_times的值, 那么bbv_check_times的最高位会被位流分析工具判断为是progressive_frame的值 (该参数的值是一位无符号整数) , 即发生错误的将是progressive_frame, 即使碰巧progressive_frame的值符合编码要求, 该错误也会传递下去, 在其他参数处发生错误。
因此该要求并不符合实际测试的应用场景, 在AVS+符合性测试标准中, 类似的要求都进行了删除。
1.2.7伪起始码测试
GB/T 20090.4的5.4.2.10给出了emulation_bit的测试, 如下:
5.4.2.10 emulation_bit的测试
测试比特流#25
说明:包含emulation_bit的编码比特流。
对象:解析器。
目的:测试解码器能正确进行de_emulation处理, 避免伪起始码仿真。要求emulation_bit尽可能出现在不同语法层次, 即图像头、条带头、宏块、子块级。
AVS和AVS+中的起始码的构成规则相同, 都是由起始码前缀和起始码值构成。起始码前缀为3个字节共24位, 最后一位是1, 前面23位是0。如果部分语法元素从位流字节对齐处开始取特定值时得到与起始码前缀相同的位串, 且紧随其后的一个字节与某一起始码值相同, 那么解码器就会误判这4个字节为起始码。为避免伪起始码的出现, 在GB/T20090.2和GY/T 257.1的附录C中都规定, 编码器在写入一位时, 如果该位是一个字节的第二最低有效位, 检查该位之前写入的22位, 如果这22位都是‘0’, 在该位之前插入‘10’, 该位成为下一个字节的最高有效位。这样就避免了伪起始码前缀的出现, 从而避免了伪起始码的出现。相应的, 解码器需要有处理插入的‘10’这两位的能力, 从而还原出真实的位串。
上述标准文本内容的主要的不明确之处是:1) 不论是在GB/T 20090.2还是GB/T 20090.4中, 都没有对emulation_bit的说明, 也没有对伪起始码仿真的定义, 因此会使人产生疑惑;2) 若从字面上理解emulation_bit, 是“仿真位”的含义, 更准确一点, 是“去仿真位”的含义, 即前文中提到的‘10’两个位, 避免了对起始码的“仿真”;3) 在目的中, 测试的是解码器“避免伪起始码仿真”这种能力。但实际上, 需要“避免伪起始码仿真”的是编码器, 解码器需要测试的是去除为“避免伪起始码仿真”而加入的‘10’两个位的能力。
比较次要的不明确之处是:1) 测试对象是解析器, 范围太过宽泛;2) 目的中的“要求……, 即……”是测试位流的设计目标, 而不应是测试的目的。
基于以上考虑, 在AVS+符合性测试标准中, 将标准文本描述为:
5.4.2.10伪起始码的测试
5.4.2.10.1测试位流#24
说明:编码位流包含为防止伪起始码出现而插入的‘10’, 为防止伪起始码出现而插入的‘10’尽可能出现在不同语法层次, 即图像头、条带头、宏块、子块级。
对象:伪起始码处理。
目的:测试解码器能否正确去除为防止伪起始码出现而插入的‘10’。
1.2.8亮度样本速率
在GY/T 257.1中多次出现“亮度样本速率”, 但没有给出定义。在AVS+符合性测试标准中也使用了该术语, 因此有必要对之加以说明。“亮度样本速率”是指每秒能编码的亮度样本个数, 即每行亮度样本数×每帧行数×帧率。
1.2.9参数测试描述采用引用方式
对于前后同样的多组参数, 采用了引用的方式, 既方便前后保持一致, 又能体现标准内容间的相关性。如, 在I图像头和PB图像头中都有参数bbv_delay, AVS+符合性测试标准只在I图像头处 (AVS+符合性测试标准表4) 给出了测试要求, 在PB图像头处注明“见表4中对此字段的要求”。这种描述方法简洁有效, 便于对照。
1.2.10测试码流
AVS+符合性测试标准中给出了解码器标准符合性测试所用的测试位流的文字描述, 包括每个测试位流的类别、“说明”、“对象”和“目的”。在具体测试时, 还要根据这些文字的描述, 开发出实际的测试流, 本文称为“测试码流”。
AVS+符合性测试标准中对测试位流的阐述较为宏观抽象, 没有具体列举和详细规定。在研制具体测试码流时, 针对每个测试位流, 尚需有更详细的分析, 以便明了应开发出怎样的测试码流。一般来说, 针对每个测试位流, 可能要开发数条甚至数十条测试码流, 是一对多的关系。
测试码流根据封装形式分两种, 一种是视频基本流, 可以用来测试芯片;一种是传送流 (TS流) , 用于测试数字电视和机顶盒等整机产品。
在制作测试码流时, 现有的商用编码器尤其是硬件编码器可供设置的参数非常有限, 无法制作出符合要求的测试码流。该类编码器只可以制作一些简单的码流, 用于测试整机产品是否具备AVS+的解码功能。AVS+的参考软件是以源代码形式存在, 可以完成对GY/T 257.1各种参数的设置, 生成所需的测试码流。但设计参考软件的主要目的是用于验证编解码算法, 并为产品开发提供参考, 如果要使用它生成测试码流, 生成每一个测试码流都需要对参考软件进行非常多的改动, 工作量非常大。另外, 参考软件的编码效率较低, 编码时间很长, 对于生成测试码流也不方便。因此, 我们需要专门设计开发测试码流的制作软件, 保证生成高质量的测试码流。
在测试码流生成之后, 还必须对其进行验证。要开发相应的验证工具, 对测试码流中的各个测试点进行详细分析, 从而判断测试码流是否符合我们的需求。
1.2.11使用标准下结论时的注意事项
虽然GY/T 257.1-2012经常被简称为AVS+, 但在GY/T257.1-2012和AVS+符合性测试标准中并没有给出AVS+的严格定义, 也就是说, 在257.2的标准范围内, 严格来说并不存在“AVS+解码器”或类似术语。
GY/T 257.1中包含了两种类:profi le_id为0x20的类和广播类, 其中profi le_id为0x20的类与GB/T 20090.2中的基准档次采用的编码技术完全相同。AVS+产品是什么?只支持profi le_id为0x20的类的产品是否属于AVS+产品?还是只有两个profi le_id为0x20的类和广播类都支持的才是AVS+产品?没有固定说法。
AVS+符合性测试标准没有对AVS+产品做定义。在正式测试报告的测试结论中, 不应出现“AVS+”的字眼, 需给出标准号和标准的全称, 且必须明确指出该产品支持的是profi le_id为0x20的类还是广播类。单位和个人在购置AVS+产品时, 也还需要重点关注它是否真的支持广播类。
广播类是兼容profi le_id为0x20的类的, 即广播类解码器必然能解码profi le_id为0x20的类的码流。在GY/T 257.1-2012中出现profi le_id为0x20的类, 表明是对原有技术的一个延续, 以及能够兼容现已部署的少量AVS编码器。
GY/T 257.1-2012中有4:2:2视频编码格式规定。在AVS+符合性测试标准中也明确, 4:2:2格式解码的测试位流, 只针对声明支持4:2:2格式的解码器, 在测试报告中也必须明确指出。
另外, 由于GY/T 257.1中profi le_id为0x20的类和广播类还包括不同的级, 因此, 在使用AVS+符合性测试标准进行测试时, 还应该指出被测产品符合哪一类哪一级, 明确被测产品的应用范围。
2《AVS+卫星专业综合接收解码器技术要求和测量方法》标准解读
2.1概述
两部委联合发布的《广播电视先进性视频编解码 (AVS+) 技术应用实施指南》中指出:自2014年1月1日起, 各电视台新上星的高清数字电视频道, 视频应采用AVS+编码;在2014年12月31日前, 对于已上星的高清数字电视频道, 视频应转换为采用AVS+编码。为支持上星高清节目的接收问题, 亟需AVS+卫星专业综合接收解码器标准。
另外, GY/T 257.1-2012发布时, 业界对AVS+的多数看法是用于高清节目传输, 两部委发布的实施指南也主要针对高清节目。之后, 国家新闻出版广电总局启动中央广播电视节目无线数字化全国覆盖工程, 计划在全国各地通过地面数字电视转播12套央视标清节目, 视频采用AVS+标清编码, 因此, 需要有AVS+标清卫星专业综合接收解码器配合AVS+标清节目的接收。起草小组对有关AVS+解码设备厂家进行调研发现:目前, AVS+解码芯片基本都是高标清兼容的, 现有的专业解码器大多数都兼容高标清解码;厂家纷纷表示开发高标清兼容解码器与开发纯标清解码器在成本上差别不大, 不会为此生产纯标清解码器。
因此, 在目前形势下, 制定标准的目标对象是高标清兼容的AVS+卫星专业综合接收解码器。起草小组在编制技术文件时, 也是从高标清兼容的角度考虑, 对有关技术指标进行规定。
2.2标准解读
2.2.1标准整体介绍
GD/J 056-2014暂行技术文件共分五章。第一章概括了该技术文件的适用范围;第二章列出了该技术文件的规范性引用文件, 包括相关视音频编码标准及相关测量标准;第三章给出了ASI、AVS+、ETSI、SDI、TS等缩略语;第四章和第五章是该技术文件的核心章节, 分别规定了AVS+卫星专业综合接收解码器的技术要求和测量方法。
第四章技术要求从以下九个方面进行了规定:功能和物理接口要求、卫星信道射频技术要求、标准符合性技术要求、ASI输入接口技术要求、SDI输出接口技术要求、ASI输出接口要求、IP输出传输层性能、视频技术要求和音频技术要求。
第五章测量方法首先规定了测量的环境条件、测量用参考编码器要求以及测量用TS流的要求, 进而根据不同的测量项目, 描述了相应的测量框图和测量步骤。
2.2.2功能和物理接口要求
经起草小组的讨论以及对电视台、有线运营商等相关单位的调研, 明确该技术文件的目标对象, 规定出相应的功能和物理接口。
由于目标对象为AVS+卫星专业综合接收解码器, 主要用于卫星信号接收解码, 因此卫星信道射频输入接口为必备项, 而ASI和IP输入接口为可选项。
1.ASI输入最大码率
考虑到一个36MHz的卫星转发器采用DVB-S2、8PSK方式调制, 支持的码率可以达到66Mbps, 因此, AVS+卫星专业综合接收解码器支持的ASI输入最大码率应大于66Mbps, 经实际调研, 最终定为“至少支持到70Mbps (不包含空包) ”。
2.音视频相对延时调整
起草小组经实测和调研, 目前AVS+解码器所用的几家芯片, 解码输出的音视频相对延时在断开信号重连后均有正负几十毫秒之内的无规律改变。即便是国际主流解码器所用芯片也有类似现象 (但可通过手动方式逐毫秒地调整音视频相对延时) 。因此直接规定音视频相对延时指标不符合实际, 经讨论, 不做音视频相对延时指标规定, 但在表1“功能和物理接口要求”中, 增加音视频相对延时调整的功能要求。
3.“高清视频解码支持”中的类和级
GY/T 271-2013中规定了AVS+高清编码器必备的类和级为:广播类, 6.0.1.08.60级。《广播电视先进性视频编解码 (AVS+) 技术应用实施指南》中也提出:上星的高清数字电视频道, 视频应采用AVS+标准中的广播类 (broadcast profi le) 、级6.0.1.08.60压缩编码方式。基于这些因素, GD/J056-2014对类和级的解码支持要求“广播类, 6.0.1.08.60级”为必备项。
4.“高清视频解码支持”中的最大码率
根据GY/T 257.1的规定, 采用AVS+广播类, 6.0.1.08.60级编码, 视频最大码率可到50Mbps。但是《广播电视先进性视频编解码 (AVS+) 技术应用实施指南》建议的AVS+编码码率为至少12Mbps。经起草小组讨论认为上星高清节目的AVS+编码码率通常不会超过15Mbps, 因此, GD/J 056-2014规定视频解码支持的最大码率应不低于15Mbps。
5.“高清视频解码支持”中的场顺序
在GY/T 257.1中, 规定了AVS+编码场顺序可以为顶场在先和底场在先, 考虑到我国高清电视采用的制式为顶场在先, 结合当前设备的实现情况, GD/J 056-2014最终确定技术要求为“支持顶场在先”。
6.“标清视频解码支持”中的类和级
根据GY/T 271-2013的规定, 对于广播类, 4.0.2.08.60级编码, 支持的最大帧率为60, 支持的最大码率为20Mbps, 支持的BBV缓冲区大小为10485760 bit。起草小组讨论认为该编码级已可满足当期的标清应用需求。
2.2.3卫星信道射频技术要求
GD/J 056-2014的4.2规定了被测设备卫星信道的射频技术指标要求, 该指标要求引用了GY/T 148-2000[7]的相应技术要求。测量方法按照GY/T 150-2000[8]规定的测试方法进行测量。
2.2.4标准符合性技术要求
GD/J 056-2014的4.3规定了被测设备视频解码环节的标准符合性技术要求为:
4.3标准符合性技术要求
应能通过GY/T 257.2-2014的5.4.2中不超出本技术文件表1“高清视频解码支持”和“标清视频解码支持”技术要求的符合性测试。
GD/J 056-2014的5.4规定了相应的测量方法:
5.4功能和符合性测量
5.4.1测量框图
见图1。
5.4.2测量步骤
测量步骤如下:
a) 如图1连接测量仪器和被测设备;
b) 播放测试用TS流, 由被测解码器解码输出至监视器;
c) 通过监视器观察测试过程中解码输出的音视频是否出现不应有的异常情况。
将上述技术要求和测量方法结合起来, 可以理解为:采用GY/T 257.2-2014的5.4.2中不超出GD/J 056-2014表1“高清视频解码支持”和“标清视频解码支持”技术要求的测试位流进行测试, 通过监视器观察, 测试过程中解码输出的音视频不应出现不应有的异常情况。
对此, 用户可能会有两个疑问:测试用TS流是什么码流?通过监视器观察时如何判定音视频是否出现不应有的异常情况?
1.测试用TS流
GY/T 257.2-2014的5.4.2中规定了解码器的符合性测试所用的15类共55个测试位流, 基本涵盖了GY/T 257.1中对解码器的各项规定, 这些测试位流对各项码流参数 (帧率、色度格式、场顺序、码率等) 进行了精心设计, 力图使得各项参数能遍历其可能的取值, 以便对解码器的标准符合性进行全面考察。
而GD/J 056-2014从实际应用的角度出发, 对AVS+卫星专业综合接收解码器“高清视频解码支持”和“标清视频解码支持”的规定为最基本要求, 针对性较强。例如:“高清视频解码支持”要求中, 支持的色度格式规定“4:2:0”为必备项;支持的最大码率规定“不小于15Mbps”。
因此, GY/T 257.2-2014中的某些测试位流可不用来测试AVS+卫星专业综合接收解码器, 如测试位流#26:
5.4.2.11.2测试位流#26
说明:测试位流中level_id的值为‘0x22’或‘0x42’, chroma_format的值为2, intra_chroma_pred_mode和intra_chroma_pred_mode_422遍历所有可能的取值。
对象:4:2:2格式的解码。
目的:测试解码器能否支持4:2:2格式的正确解码。
从描述中可见, 测试位流#26的色度格式为4:2:2, 而GD/J 056-2014“高清视频解码支持”中只要求4:2:0, 没要求4:2:2。因此, 测试位流#26不应用于AVS+卫星专业综合接收解码器的测试。
所以, AVS+卫星专业综合接收解码器的所用的测试码流, 应是257.2-2014的5.4.2的55个测试位流所对应的测试码流集中, 参数取值不超出GD/J 056-2014“高清视频解码支持”和“标清视频解码支持”的那一部分。
2.符合性测试结果的判定
在进行标准符合性测试时, 测试人员需通过监视器观察解码输出的音视频是否出现不应有的异常情况。此处之所以强调“不应有的异常情况”, 是因为在测试过程中, 测试人员观察到的画面异常可能包含两种情况。一种是测试码流压缩制作过程中产生的一些异常, 与解码器无关;另一种是被测解码器可能引入的异常, 这后一种异常才是“不应有的异常”。
有必要强调的是, 由于标准符合性测试的特殊性, 有些测试码流本身可能会存在马赛克、静帧等异常, 测试人员应该正确识别这些情况。
2.2.5 ASI输入输出接口技术要求
GD/J 056-2014的4.4和4.6规定了被测设备ASI输入输出接口的电气特性技术要求, 该要求引用的是GY/T 170-2001《有线数字电视广播信道编码与调制规范》[9]中的ASI链路电气特性指标规定。
2.2.6 SDI输出接口技术要求
GD/J 056-2014的4.5规定了被测设备SDI输出接口的电气特性技术要求。其中SDI高清输出接口要求引用的是GY/T157-2000《演播室高清晰度电视数字视频信号接口》的相关规定;SDI标清输出接口要求引用的是GB/T 17953-2012《标准清晰度电视4:2:2数字分量视频信号接口》的相关规定。
2.2.7 IP输出传输层性能
GD/J 056-2014的4.7规定了被测设备IP输出传输层的技术要求, 该技术要求及相应测量方法参考GY/T 271-2013《AVS+高清编码器技术要求和测量方法》进行规定。
2.2.8视频技术要求
GD/J 056-2014的4.8规定了被测设备的高清数字视频通道和标清数字视频通道指标要求。其中, 高清视频技术要求及相应的测量方法参照GY/T 271-2013《AVS+高清编码器技术要求和测量方法》进行规定。标清视频技术要求及相应测量方法参照GY/T 243-2010《标准清晰度电视数字视频通道技术要求和测量方法》进行规定。
2.2.9音频技术要求
GD/J 056-2014的4.9规定了被测设备的数字音频通道技术指标要求, 该技术要求主要参考了GY/T 271-2013《AVS+高清编码器技术要求和测量方法》的规定, 并根据实际测试情况, 增加了音频通道“介入增益”测试项, 主要考察解码器对音频信号电平的保真程度。介入增益的测量结果以输出信号电平与输入信号电平的差值表示。
2.2.10测量用TS流
GD/J 056-2014的5.3规定了测量用TS流的要求为:
5.3测量用TS流
5.3.1高清测试流
除5.5中对码率有特殊规定以及符合性的检测项目之外, 在测量过程中, TS输出码率设置为14Mbps;视频压缩码率设置为12Mbps;双声道和2.0立体声音频压缩码率设置为256kbps, 取样频率48k Hz;5.1环绕声音频压缩码率设置为384kbps, 取样频率48k Hz。无ETSI TR 101 290 V1.2.1中规定的一级、二级错误。
5.3.2标清测试流
除5.5中对码率有特殊规定以及符合性的检测项目之外, 在测量过程中, TS输出码率设置为4Mbps;视频压缩码率设置为3Mbps;双声道和2.0立体声音频压缩码率设置为256kbps, 取样频率48k Hz。无ETSI TR 101 290 V1.2.1中规定的一级、二级错误。
之所以要对测试用的TS流做出上述规定, 主要考虑到两个因素:
1.TS流码率、视音频压缩码率, 与IP输出传输层性能、视频指标、音频指标等息息相关。为保证测量结果的准确性和一致性, 有必要统一码率设置。
2.测量用的TS流本身不应出现ETSI TR 101 290 V1.2.1[10]中规定的一级、二级错误, 否则可能引起解码器的解码异常, 影响测量结果。
3总结和展望
《广播电视先进音视频编码第2部分:视频符合性测试》使得采用GY/T 257.1-2012视频压缩的产品的测试有了基础依据。有了《AVS+卫星专业综合接收解码器技术要求和测量方法》标准, 对于专业解码产品的生产、测试、使用以及AVS+应用部署能发挥良好作用。
亟需的还有AVS+地面数字电视机顶盒、有线数字电视机顶盒、卫星数字电视机顶盒的标准。对于AVS+符合性测试码流的制作和验证, 也还有完善的空间。
参考文献
[1]GY/T 257.1-2012广播电视先进音视频编解码第1部分:视频.
[2]广播电视先进视频编解码 (AVS+) 技术应用实施指南, 国家新闻出版广电总局, 工业和信息化部, 2014.
[3]GY/T 271-2013 AVS+高清编码器技术要求和测量方法.
[4]GY/T 257.2-2014广播电视先进音视频编码第2部分:视频符合性测试.
[5]GD/J 056-2014 AVS+卫星专业综合接收解码器技术要求和测量方法.
[6]GB/T 20090.4-2012信息技术先进音视频编码第4部分:符合性测试.
[7]GY/T 148-2000卫星数字电视接收机技术要求.
[8]GY/T 150-2000卫星数字电视接收站测量方法——室内单元测量.
[9]GY/T 170-2001有线数字电视广播信道编码与调制规范.
AVS解码器 篇7
随着电子信息产业的迅猛发展,集成电路规模的不断扩大,微电子已经渗透到科技、国防、经济和社会生活的各个领域,集成电路产业也发展到了大规模超大规模集成电路的时代。随着集成电路设计能力的提升,对验证技术的要求也就越来越高[1]。
验证就是测试设计是否存在功能、时序、可测试性和功耗等方面是否达到系统规范说明的要求[2]。在设计过程中,设计人员一不留意就可能产生错误,如果验证失败,遗漏了某些错误,让其通过验证存在于产品中,后果非常严重[3]。验证问题已经成为制约集成电路设计高速发展的重要因素之一,科学地解决验证问题已经成为提高产品质量的有力保证。本文正是基于这个原因致力搭好AVS解码器的验证平台,以得到更准确高效的验证结果。
1RVM验证方法学及Vera验证语言
RVM验证方法学由Synopsys公司提出,采用Vera硬件验证语言建立目标模型环境,激励可自动生成,是一种含错误指示的自核对式测试,并且有覆盖状况分析能力。RVM验证方法学将整个验证平台根据功能从下到上划分为五个层次:信号层、命令层、功能层、场景层和测试层,每个层次用于完成不同的功能[4]。层次化结构可以使验证环境效率更高、可重用性更强。RVM完整的测试平台的总体结构如图1所示。
信号层为被测对象(Design Under Test,DUT)提供信号级的连接。在信号层,使用接口技术(interface)将DUT的端口信号封装在接口类中。与其他模块接口时,使用基于接口事务的传输,当验证遵守同一传输接口协议的DUT时,验证环境无需修改即可用于不同模型的验证。
命令层直接进行DUT的读写、配置等指令操作。命令层为DUT提供一个一致的、低层次的事务级接口,不必管被测设计如何建模。在命令层,事务被定义成为接口上的数据单元传输或指令操作,如寄存器读写,以太网帧的传输或取指令操作。
功能层提供必要的抽象层次用于处理应用层的事务,来验证DUT的正确性。功能层根据所要验证的功能,可能需要在不同的抽象层、物理层或功能层判断DUT响应的正确性。此层还包括高层激励和响应事务的功能覆盖模型,并记录本层创建和处理的所有事务的相关信息。
场景层提供可控的、同步的数据和事务的发生器(generator)。每个场景都代表了一个值得关注的事务序列,用以实现对某种特定边界情况的功能测试。
测试层主要用来定义测试案例、修改发生器的约束、定义新的随机场景、同步不同的事务处理器、创建定向激励以及对特定的测试案例提供事务级的自检查机制。
层次结构是一个抽象化的模型,实际中完整的验证平台并不一定要包含上述层次中的每一个层次,在实际的验证平台的搭建过程中也没有十分明确的分界[5]。
Vera语言是Synopsys公司推出的一种直观的、面向对象的高级语言,应用范围从单片ASIC到多片ASIC组成的系统,从定制、半定制电路到高复杂的微处理器以及SoC芯片[6]。Vera是开发者用来针对设计单元做功能验证的一种验证语言,用它所搭建的验证平台可以有效地对设计单元进行验证工作,并可以兼顾用Verilog、VHDL及SystemC这些语言编写的硬件单元。
2AVS解码器结构及验证平台的实现
2.1AVS视频解码器结构
AVS视频标准由我国自主创建,面向高质量数字电视广播、网络电视、移动视频通信、视频监控及其他相关应用[7]。研究设计本AVS解码器,是为了支持我国自主创新,促进AVS产业化进程。
本解码器的主要功能是完成码流数据的解码,生成重构图像。本设计中AVS解码器用verilog HDL语言编写,主要结构包括变长熵解码器、反量化、反DCT变换、帧内预测、运动补偿、环路滤波、像素重建。变长熵解码器将待解码图像数据进行熵解码,之后通过反量化模块逆量化,反量化向反变换模块输出系数块,在块内实现反向“Z”型扫描,恢复出宏块的直流系数,产生残差矩阵。帧内预测模块预测出当前宏块的直流分量值,最终加上残差矩阵得到解码的像素矩阵。在帧间预测模块中,运动补偿单元进行运动矢量和运动补偿计算,形成预测矩阵,预测输出块与反变换单元输出信号同步并与反变换模块输出的残差矩阵重建出当前宏块。环路滤波模块对解码后的像素矩阵进行滤波,以消除块效应[8]。
2.2验证平台结构及实现
通过分析AVS视频解码芯片的功能和结构,基于RVM验证方法学所提倡的层次结构,本文将此视频解码器的验证平台分成五层,结构如图2。
2.2.1 信号层
在信号层定义多组端口interface用于和AVS视频解码器端口连接,通过interface就可以采样和驱动其端口信号的值。interface用来将信号按时钟域分组,interface的个数由设计的时钟数目来决定,如果一个接口中没有时钟,那么就使用SystemClock作为这个接口的参考时钟。所有的接口都被定义在同一个独立的接口文件(.vrh)当中。AVS视频解码器是单时钟的,所以只定义一个interface即可。
AVS视频解码器的interface定义如下:
interface avs_top {
input clk CLOCK ;
output rst OUTPUT_EDGE OUTPUT_SKEW ;
……
output [31:0] DO OUTPUT_EDGE OUTPUT_SKEW ;
} // end of interface avs_top
interface首先定义了信号的输入方向,对于AVS解码器来说,有input和output两种类型。此处的input和output是针对验证平台来说的,除时钟信号clk之外,input为验证平台的输入、设计的输出,output为验证平台的输出、设计的输入。其次,还需设置skew的值。skew决定了在时钟沿之前多长时间进行采样,或者在时钟沿之后多长时间进行驱动。时钟信号作为skew的参考,所以不能对时钟信号设置skew。
2.2.2 命令层
在命令层中,采用了三个组件:总线功能模型BFM(Bus Functional Module)、参考模型RM(Reference Module)和自动比较器checker。
BFM隔离了被测设计的周边时序,用于将上层(功能层)产生的激励以每个时钟8位的速度传给DUT,同时,接收来自DUT的解码后的数据,将其以每拍32 bit的速度传给checker。使用Vera实现BFM时,可以很方便地将功能与时序分开,所有的功能都用task或者function来描述,这样可以全力关注功能,还可以使验证人员更方便地修改时钟信号。
AVS视频解码芯片对数据的处理很多,仅一帧图像的解码后数据量都是非常大的,直接对解码出的数据内容进行判断相当困难。所以本验证平台采用参考模型和自动比较器的方法对AVS视频解码器输出的数据进行检测。具体方法是通过checker将DUT的输出与RM的输出以每次32位进行比较,如有不同,则根据提示查找出错原因。
此处的RM选用官方发布的AVS解码器C代码,没有严格的时序要求,即RM对数据处理的过程无需跟AVS视频解码器保持完全一致,只要最终结果正确就可以,这样可以降低复杂度,减少出错的可能性。RM解码后的数据是是以32位的方式输出的。Vera语言有针对C语言的接口,可以很方便地调用RM。
checker用来完成对RM数据和AVS解码器解码数据的自动对比,可提高验证效率。本文采用写一组任务的方法来实现自动比较。checker先从和BFM通信的通道中获得一个数据,再从和RM通信的通道中获取相应的数据,之后函数compare()对数据进行对比。如果数据长度和内容一致则显示通过,如果长度和数据内容有任何一个不相同,则显示对比失败。Checker只有从BFM和RM中都获取了数据以后才会对数据进行比较,如果前面数据的对比结果都正确,则认为仿真通过。本文在checker设了两个计数器,计数器A用来标记BFM送来的数据是第几组,计数器B用来表示RM送来的数据的组数。在仿真结束前,比较A和B,如果A和B一致,则认为仿真通过。
2.2.3 功能层
本文功能层只有一个组件driver,它时刻监控generator的动作,主要功能有两点:第一,通过例化产生器内所定义的激励类型,生成若干个数据帧激励;第二,把生成的数据帧发送给参考模型和驱动器。
2.2.4 场景层
在场景层中,使用组件generator来产生环境和DUT所需要的图像数据。在本验证平台中,分模块验证时采用随机产生的激励,而系统验证时使用的测试向量是符合AVS标准的比特流。系统测试使用的测试向量就是将AVS视频比特流作为输入;分模块测试时,测试向量需要随机产生,本解码器中的数据多为8bit、32bit、22bit以及4bit等,生成方法如下:
class AVSData
{
rand bit[7:0]data0; //随机产生8bit数据
rand bit[31:0]data2; //随机产生32bit数据
……
}
2.2.5 测试层
测试层包含了很多直接或者随机的测试用例,在测试层可以根据需要修改参数的配置值以及随机变量的约束范围从而产生更多的场景。由于使用了RM,那么在发送激励到DUT的同时,也要发给RM。本文将信号级的信号配置成相应的任务task供测试向量调用。配置如下:
task SendData()
{
C_Frame m_Frame;
……
th.m_RM.m_Core.m_UPProcess(m_Frame);
th.m_AVS_TOP.m_SendFrame(m_Frame);
}
这样,当发送测试向量到解码器时,只要在测试用例中调用这个任务,就可以将其同时发到RM中去,减少了因为粗心等造成的人为错误。
2.2.6 顶层
顶层文件将所有的验证模块组合起来,构成一个真正的仿真测试环境。这一部分主要包括了以下几个内容:定义接口,提供复位、初始化等最基本的全局性的任务;绑定虚拟端口;例化激励、BFM、RM等组件;声明TestCase。
Vera的顶层经过编译之后,可以生成Vera Shell文件,这个Shell文件就是提供Vera环境和MAC相连接的接口文件。只要将这个Shell文件与MAC的设计代码一起例化到验证的顶层中,就构成了一个封闭的测试环境,如图所示:
3验证结果
本文采用的验证工具是Synopsys的VCS(Verilog Compiled Simulator)。VCS是一种编译型模拟器,能够支持Vera、Verilog、VHDL、SystemVerilog、SystemC以及C等多种语言混合仿真,它具有目前行业中最高的模拟性能,内存管理能力出色,模拟精度也完全满足深亚微米ASIC Sign-Off的要求,具有很强的覆盖率分析功能[6]。
验证时,首先对各个小模块进行验证,基本模块验证通过之后,才能组成大的模块,对各个大的功能模块验证完毕,再进行整个系统的验证。验证时,要检测RM和DUT输出结果是否一致。不一致的话则定位、解决问题,直到RM和DUT结果一致。之后,还要进行回归测试。因为设计修改了就会出现一些新的逻辑,这就有可能引入一些新的问题,导致之前已通过测试的功能出现问题。回归验证就是用来检查修改是否正确以及修改是否影响其他功能。同时,也要同步地进行覆盖率分析等工作,发现测试遗漏的地方,及时补充测试向量,加入到回归测试中,或者如果有过时的测试向量,则要进行删除。回归验证时,当覆盖率分析结果满足要求,并且在较长一段时间内没有发现电路缺陷时,可以结束功能验证。由于整个解码器的模块较多,所以,选取其中的一部分来说明。
get_start_unit是码流分割模块里的一个子模块,其主要功能是去除起始码和伪起始码,起始码是解码器判断是否可以解码的标志,是编码时人为添加的部分,去掉之后即得到编码码流。get_start_unit模块的波形图如图4。
对比测试序列和输出波形,得知解码结果不正确。首先从输入激励查原因,无误,可排除测试向量数据的错误。然后去程序里面找错误,发现原来是一个寄存器赋值错误,这个寄存器的值应该实时更新,需要采用阻塞赋值的方法,但是代码中运用了非阻塞赋值,导致仿真波形错误。修改后,得出正确解码数据。
基本模块的功能验证完成后,就可以将部分模块进行联调,以确保各模块组成一个整体之后的正确性。等所有功能模块的验证均通过后,就可以对整个系统进行验证了。
AVS视频解码芯片的Vera验证一共开发测试用例2 400多条,使用VCS-cm-pp gui-cm line+cond命令来查看覆盖率分析结果。通过查看覆盖率报告可看到代码覆盖率情况,其中行覆盖率(line)为99.2%,条件覆盖率(cond)为95%,状态机覆盖率(fsm)是98.1%,跳转覆盖(tgl)达95.2%,已经达到了本项目的验证要求,可以结束验证了。
经过验证,找出多处错误,典型的有下面几种:FIFO定义的宽度过大,导致程序运行时将电脑内存用光,后来将宽度改小,解决了这个问题;部分模块的时钟未注意大小写,导致系统出现两个时钟,编译通过,但仿真出问题,经发现后改正; 寄存器赋值错误等。
4总结
RVM综合了一系列高级验证方法:约束随机化、覆盖率分析等,使验证技术统一于一个科学而系统的标准,并与 Vera 语言绑定在一起,极大地提高了验证平台的自动化。在本文中,依据M验证方法学,使用Vera验证语言搭建验证平台对AVS视频解码器进行了验证。结果表明,基于RVM的Vera平台可以准确高效地对芯片进行验证。
参考文献
[1]沈理.SOC/ASIC设计、验证和测试方法学.广州:中山大学出版社2006:10—15
[2]杨宗凯,黄建,杜旭.数字专用集成电路的设计与验证.北京:电子工业出版社,2004:139—155
[3]陈迅.X微处理器功能验证方法研究.长沙:国防科学技术大学硕士论文学位,2005
[4]陈辉,申敏.结合覆盖率驱动技术的RVM验证方法学在SOC验证中的应用.微计算机信息,2005;10-2:120-121
[5] Synopsys.Reference verification methodology user guide,2004.12.www.synopsys.com
[6] Synopsys,Open Vera/Vera user guide,2004.www.synopsys.com/
[7]黄铁军.AVS知识产权策略与状况知识产权策略与状况.信息技术与标准化,2003;(7):3—7
相关文章:
安全在我心中作文400字01-03
安全分娩01-03
爱上语文并不难01-03
安康杯活动个人工作总结01-03
《爱是什么》教学设计01-03
安全生产标准化01-03
安全员主要工作内容01-03
安全生产评估方法01-03
安全的本质是生命01-03
爱在父亲的伤痕里初一优秀记叙文01-03