Mpeg2编码器技术文档
本方案为符合MPEG-2/DVB标准的广播级高品质数字压缩编码设备开发方案,可对模拟/数字视频和音频信号进行数字压缩处理,通过DVB标准的ASI接口与其它设备互联互通。可通过系统控制台或本机控制按键方便的进行系统参数设置,紧凑的尺寸和低码率性能,使之在节目覆盖/传输系统、数字电视平台及监测系统的节目接收/解码部分广泛应用。其特色是视频音频编码全部使用DSP实现,避免了对专用芯片的依赖,同时各项指标完全达到了广播标准。
1.硬件框图
网管控制端口数字模拟音视频音视频LCD按键A/DFPGAbusvportbusLCD屏幕LED指示灯ASI输出ARMDSPbus
图1.1 :Mpeg-Ⅱ视频编码器硬件原理图
硬件设计兼顾扩展性通用性与当前项目的特定要求,综合考虑了实现复杂度与尺寸的,硬件由主体的DSP板和一块接口扩展板组成。视频采用模拟复合视频(CVBS)/S-Video/SDI(内嵌数字音频)接口,音频采用模拟平衡或非平衡音频接口,数字音频(AES/EBU)接口,支持双路立体声或4个单声道,采用DVB标准的ASI接口,4个E1捆绑接口,100/10bBase-T以太网接口,支持SNMP网管控制,方便远程维护与升级。DSP板主要由一块DM2、一块ARM9和一块FPGA构成,如图1.1所示。ARM9负责上电后的系统配置、接收控制命令、与外部的数据通讯以及控制DSP。DSP板上还有一块FPGA,用来增强ARM9与外部的通讯功能,ARM9 通过该FPGA控制LCD,扩展外部接口等。扩展板接口板通过FPGA与ARM9通讯,主要是为接入一路视频输入或输出,也可以扩展其它数据接口。
2.软件架构
系统软件由DSP与ARM的软件组成。DSP负责核心的视频编码算法,ARM负责数据通讯和系统控制,DSP采用DSP/BIOS核完成实时多任务调度。
图 2.1是DSP的软件架构,并指出了应用层主要任务间的数据流向。各个模块分别为不同优先级的模块,由内核统一调度。系统控制拟采用任务与系统控制参量来完成。系统控制参数只能由控制任务写,由受控任务读;采用按键和远程网管两种控制方式。其中,当远程网管锁定本机按键时,用户将不能进行本机按键操作。此时需要用户输入正确的的密码,才能操作本机按键。远程网管未锁定本机按键或者未连接远程网管时,可以进行本机按键的控制。
视频编码音频编码模拟音视频输出处理ASI输出处理网管监控输出处理FIFOFIFOFIFOFIFOLCD数据系统控制参量FIFOFIFO应用层DSP/BIOSHPI驱动LCD驱动音频驱动视频驱动网络驱动硬件输出输入
图2.1: mpeg-Ⅱ视频编码器软件架构图
3. 解决的核心技术问题
Mpeg-Ⅱ编码器要解决的核心问题就是复杂度和压缩质量之间的一个平衡。既要尽可能地降低复杂度,还要保持好的画面质量。编码器的性能主要取决于以下几个模块,下面进行详细的介绍,整体编码框图参见图3.1。
3.1 运动预测
运动预测的目标是在参考帧中搜索与当前宏块最匹配的块,作为当前宏块的预测值。运动预测得越准确,补偿的残差就越小,编码的效率就越高。因此搜索的精度将直接影响到编
码的质量。可以说,运动搜索是整个编码算法中最重要的,也是复杂度最高的模块。
运动预测技术主要包括2点,一是块匹配准则,二是运动搜索算法。 块匹配准则。在运动估计算法中通常有3种匹配准则:
最小绝对差(SAD) 最小方均差(MSE)
归一化互相关函数(NCCF)。
其中,SAD准则具有不需乘法运算、实现简单方便的优点而使用最多。 运动搜索算法。最直接的搜索方式称为全搜索,也就是在给定的搜索区域中对每个像素点逐一按匹配准则进行计算。全搜索一般可以找到与当前宏块最匹配的宏块,但是其复杂度也是最高的。例如对一个水平32,垂直32的区域进行全搜索,搜索的次数为32×32=1024次,对于实时编码来说,这么高的运算复杂度实际上是不可实现的。实际中使用的搜索算法都是一些快速算法,目前搜索算法的种类很多,其中菱形搜索算法经过多次改进,已发展成目前最优性能块匹配算法中的一种。其基本思路是采用两种模板,即大模板LDSP(Large Diamond Search Pattern)和小模板SDSP(Small Diamond Search Pattern)。首先,搜索时程序先采用大模板LDSP对搜索中心点周围的9个点进行匹配运算,当最小块误差点即为中心点时,则转换为小模板SDSP搜索策略,对中心点周围其他5个点进行匹配运算,5点中的最优匹配点即为最优匹配点。如果在采用大模板LDSP搜索时,最优点不在中心点时,那么就以该最优点为中心点重新采用大模板LDSP进行搜索,直到最优匹配点为中心点时,再转换为小模板SDSP搜索,最终找到最优匹配点。
菱形搜索算法的特点是由于它依据了视频图像中运动矢量的一般规律,先采用大模板LDSP对图像进行粗略定位,然后再采用小模板SDSP进行准确定位,这样既不会使视频图像搜索限于局部最优,也大大缩短了运动估计所消耗的时间。另外,其搜索时各步之间存在很强的相关性,移动模板时只需在几个新的检测点进行匹配运算就可以了。
3.2 码率控制
码率控制是整个编码过程中十分重要的环节之一,也是与其他环节相比算法不确定性最大、对编码效果影响最大的环节。
码率控制本质上是量化因子的选择。量化是整个编码中唯一的“有损压缩”过程,由上面的分析可以得知,“有损压缩”是根据人的视觉特性对图像信息进行过滤的,因此码率控制的前提就是需要对图像性质进行分析,从而为每一帧设定合适的编码比特数,为每个宏块选择合适的量化因子。
码率控制有两种方法:前置式和反馈式。前置式码率控制中,假设编码器的一些参数之间的联系是已知的,例如量化步长、比特率和编码质量。这样用这些联系来优化编码器的各项设置。为了得到这些信息,需要一个复杂的预分析过程,实现起来比较困那。而反馈式码率控制是根据之前的编码比特数以及当前图像与之前图像的相关性来进行计算的,因此复杂度相对较低。所以在大多数编码算法中,采用的都是反馈式码率控制方法。
Test Model5(TM5)是MPEG-2标准中推荐的,也是实际中应用最多的码率控制算法之一。算法引入了虚拟缓存器的概念,针对不用的帧类型(I、P、B)的压缩比和重要性不同,预先分配不同的比特数,并在编码过程中根据虚拟缓存器的充盈程度和宏块的性质,对量化因子进行实时修正,从而达到总体的编码质量最优。算法主要包括目标比特分配、码率控制和自适应量化三个步骤。
1.目标比特分配。首先进行复杂度分析,为每一类型(I、P、B)图像定义一个“全局复杂度”(Xi、Xp、Xb),一半I帧的复杂度约为P帧的2~3倍,约为B帧的4~6倍,全局复杂度在每一相同类型帧编码结束后根据编码结果进行更新,然后就可以根据全局复杂
度来计算下一个相同类型图像的预分配比特数。
2.虚拟缓冲器控制。在编码一个宏块之前,根据图像类型,计算合适虚拟缓冲区填充度。在码率控制过程中应保证虚拟缓冲区既不上溢也不下溢。
3.自适应量化。计算每个宏块的参考量化参数和空域活动度,然后根据这两个参数就可以计算出宏块的量化因子。
TM5码率控制算法在大多数情况下能够提供比较好的编码质量,但是在某些情况下(如场景切换)会产生码率不收敛的现象,这是由于反馈式算法本身决定的。针对TM5算法的不足,引入一定的预分析,其实也就是前置式和反馈式相结合的码率控制算法。这些算法能够比较好的解决TM5算法的问题,缺点是增加了计算的复杂度。
码率控制帧存储区+--DCT变换量化变长编码反量化输入反DCT变换打包输出缓冲+运动补偿帧存储区输出运动估计
图3.1:mpeg-Ⅱ视频编码器核心算法框图
3.3 离散余弦变换
变换编码在图像编码中的作用是将数据由一个空间映射变换到另一个空间,从而提高数据之间的相关性,以利于进一步压缩处理。变化编码的种类很多,MPEG-2标准采用DCT变换编码,DCT将块的数据由空间域转换到频域,其优点是压缩性能好、复杂度适中且具有快速算法。DCT的单位是8×8块,对于帧内编码的宏块,一般来说,相邻像素之间变化不大,即空间频率较低,因此经过DCT变换,大部分能量集中在低频系数,即变换矩阵的左上角;对于帧间编码的宏块,变换后的系数值将更小。
3.4变长码编码
采用不相同的位数(bit)对数据进行编码,以节省存储空间。如不同的字符或汉字出现的概率是不同的,有的字符出现的概率非常高,有的则非常低。根据统计,英文字母中“E”的使用概率约为13%,而字母“Z”的使用概率则为0.08%。
因此,为了节省空间,在对数据进行编码时,就有可能对那些经常出现的数据指定较少的位数表示,而那些不常出现的数据指定较多的位数表示。这样从总的效果看还是节省了存储空间。用这种方法得到的代码,其码的位数,也即码长就是不固定的。
霍夫曼(Huffman)提出了一种不定长编码的方法。基本方法是先对图像数据扫描一遍,计算出各种像素出现的概率,按概率的大小指定不同长度的唯一码字,由此得到一张该图像的霍夫曼码表。编码后的图像数据记录的是每个像素的码字,而码字与实际像素值的对应关
系记录在码表中。MPEG-2标准采用霍夫曼编码作为熵编码。
4. 测试指标
编码器的指标包括视频、音频和传输流(系统)三部分。一个常见的测试方案如图4.1所示,在编码器的输入端接入视频和音频信号发生器,用以输入标准的测试波形;编码器的码流同时输出到解码器和码流分析仪;解码器的视频和音频输出到测试仪器,可以对视频和音频的指标进行测试;码流分析仪可以对传输流的指标进行测试。
音频信号发生器视频信号发生器音频待测编码器视频TS标准解码器视频音频音视频测试仪器码流分析仪 图4.1:指标测试方案
4.1 视频指标
本产品视频指标测试结果如表4-1所示(和解码器连接测试)。
表4-1 模拟视频指标
检测项目 视频输出幅度(17)(mV)P-P 行同步幅度(17)(mV)P-P 色同步幅度(17)(mV)P-P 幅度特性(sinx/x) (dB) K因子(17)(%) ≦4.8MHz 5.0 5.5 2T 亮度非线性(330)(%) DG(330)(%) DP(330)(%) 色亮增益不等(17)(%) 色亮时延不等(17)(%) S/N加权值 行同步前沿抖动(17)(ns)P-P 技术指标 702 301 303 ≦0.5,≧-0.5 ≦0.5,≧-1.0 ≦0.5, ≧-4 1.0 0.8 0.4 1.0 0.8 2 ≦-68 4
各指标测试的方法如下:
(1) 幅频特性:视频信号发生器送sinx/x信号。 (2) K因子:视频信号发生器送2T正弦平方波。
(3) 亮度非线性失真:视频信号发生器送出一种不带调制的阶梯信号。 (4) 微分增益失真(DG):视频信号发生器送出叠加彩色负载波的亮度阶梯信号。 (5)微分相位失真(DP):视频信号发生器送出叠加彩色负载波的亮度阶梯信号。 (6)色度—亮度增益差:视频信号发生器送出彩色负载波填充的20T脉冲信号。
(7)色度—亮度时延差:视频信号发生器送出彩色负载波填充的20T脉冲信号。 (8)S/N加权值(5Mhz带宽测量值):视频信号发生器送出50%的平场信号。 (9)行同步前沿抖动:视频信号发生器送出带有同步的任意信号。
4.2 音频指标
本产品音频指标测试结果如表4-2所示。
表4-2 模拟音频指标 项目 60Hz~ 18KHz 20Hz~ 20KHz L R L R L > R R > L L R L R 单位 dB dB dB dB % % dB dB dB dB dB (°) 技术指标 <=0.5,>=-0.5 <=0.5,>=-0.5 <=1,>=-2 <=1,>=-2 <=1 <=1 >=70 >=70 <-70 <-70 0.5 5 幅频 响应 谐波 失真 S/N 左右声道串扰 左右声道电平差 左右声道相位差
各指标测试的方法如下:
(1)音频幅频特性:音频信号发生器送出20Hz—20KHz幅度为0dB的序列信号。 (2)总谐波失真:音频信号发生器送出幅度为+9dBm的音频信号(如频率为100Hz、1KHz、5KHz、10KHz等等),用视音频测试仪进行测量。选其上述各频点测量值的最大值为总谐波失真。
(3)音频信噪比(不加权):音频信号发生器关闭音频输出信号,测额定带宽内的噪声(即噪信比),取绝对值再加9即得为音频信噪比。
(4)左右声道串扰:音频信号发生器送出单频额定功率信号给系统输入端左(或右)声道,在系统输出端测出左右声道串扰。 (5)左右声道电平差:音频信号发生器送出两路同频、同相、同电平的音频序列信号(60Hz—18KHz)给系统输入端左、右声道。 (6) 左右声道相位差:音频信号发生器送出两路同频、同相、同电平的音频序列信号(60Hz—18KHz)给系统输入端左、右声道。
4.3 传输流指标
本产品传输流指标测试内容如表4-3所示。
表4-3 传输流指标
测试项目 PCR抖动 (ns) PAT重复间隔 (ms) PMT重复间隔 (ms) PTS重复间隔 (ms) PCR重复间隔 (ms) 技术指标 0 100 100 100 35