用数字信号处理器优化视频编码器
扫描二维码
随时随地手机看文章
用数字视频编码进行视频压缩能够在尽可能降低视频容量的同时保持可接受的视频质量。但是,为便于传输和存储而降低大小的视频压缩可能会牺牲一些图像质量。此外,视频压缩还要求处理器具备较高性能,并且在设计中要支持丰富的功能,因为不同类型的视频应用在分辨率、带宽以及灵活性方面都有着不同的要求。具有更高灵活性的数字信号处理器(DSP)不仅能够充分满足上述需求,而且还可充分发挥高级视频压缩标准提供的丰富选项来帮助系统开发人员实现产品优化。
视频编解码(编解码器)算法的固有结构和复杂性促使我们必须采用优化方案。编码器非常重要,因为它们不但必须满足应用要求,而且也是视频应用进行大量处理任务的主要部分。虽然编码器是基于信息理论之上的,但在实施过程中仍需要在不同因素间权衡取舍,因此会非常复杂。编码器应当具有高度的可配置性,并能针对各种视频应用提供简单易用的系统接口且实现性能最佳化,从而使开发人员受益匪浅。
视频压缩的特性
原始数字视频的传输或存储需要占用大量空间。像H.264/MPEG-4 AVC等高级视频编解码器能实现高达60:1到100:1的压缩比并确保持续不变的吞吐量,这使我们能够利用较窄的传输通道实现传输,并能减少视频存储所占的空间。
与静态影像领域的JPEG标准一样,ITU与MPEG视频编码算法也需要结合采用离散转换编码(DCT或类似技术)、量化和可变长度编码等技术来压缩帧中的宏块。一旦算法建立了基线编码内(I帧),只需通过视觉内容的差值或它们之间的残留值进行编码,就可建立众多的后续预测帧(P帧)。我们可用所谓运动补偿技术来实现这种帧间差值。该算法首先估算前一参考帧宏块移入到当前帧的位置,然后再消除冗余并压缩剩余部分。
图1给出了一般性运动补偿视频编码器的结构图。运动矢量(MV)数据描述了各块的移动位置,该数据在估算阶段创建,这通常是算法中计算强度最大的阶段。
图1:一般性运动补偿视频编码器的结构图。
图2显示了P帧(右)及其参考帧(左)。在P帧下方,剩余部分(黑色部分)显示了计算出运动矢量(蓝色部分)后剩余的编码量。
图2:显示计算运动矢量后剩余编码量的P 帧及参考帧。
视频压缩标准仅指定位流语法与解码进程,从而使编码器拥有很大的创新空间。速率控制也是一个可以创新的领域,使编码器能分配量化参数,从而以适当的方式确定视频信号中的噪声。此外,高级H.264/MPEG-4 AVC标准还可提供宏块大小、运动补偿四分之一像素分辨率(quarter-pel resolution)、多参考帧、双向帧预测(B帧)以及自适应环内去块滤波(in-loop deblocking)等多种选择,从而既提高了灵活性同时还增强了功能。
多样化的应用需求
视频应用要求差异很大。高级压缩标准的各种特性为技术人员提供了广阔的空间,在复杂性、延迟以及其他约束实时性能的因素之间获得最佳平衡。例如,我们可以设想,视频电话、视频会议以及数码摄像机(DVR)对视频就有着不同的要求。
视频电话与视频会议
就视频电话与视频会议应用而言,传输带宽通常是最重要的问题。根据链接的不同,带宽传输的范围可介于每秒数十到数千KB之间。在某些情况下,我们可以确保传输速度,但对于互联网及众多企业内部网而言,传输速度会有很大差异。因此,视频会议编码器通常需要满足不同类型的链路,并应实时适应不断变化的可用带宽。发送系统收到接收端条件后,应不断调节编码输出,以确保尽可能以最少的视频中断提供最佳的视频质量。如果条件较差,则编码器可以采取降低平均比特率、跳帧或更改图像组(GoP,即I帧与P帧相混合)等方法来应对。I帧的压缩程度低于P帧,因此带有较少I帧的GoP所需的整体带宽较低。由于视频会议的可视内容通常不会变化,因此可减少I帧的使用数量,使其低于娱乐应用的水平。
H.264采用自适应环路内去块滤波器处理块的边缘,以保持视频在当前帧与后续帧之间的平滑,从而提高视频编码质量,这点在低比特率时尤其有效。此外,关闭过滤器也能提高在既定比特率下可视化数据的数量,并可将运动估算分辨率从四分之一像素精度提高到二分之一乃至更高。在某些情况下,我们可能需要降低去块滤波质量或降低分辨率,从而减小编码工作的复杂性。
由于互联网的分组提供不能确保质量,因此视频会议通常能从可提高容错率的编码机制中受益。如图3所示,P帧的连续图像条(progressive strip)可用做帧内编码(I图像条),这样在初始帧之后就不再需要完整的I帧了,并能减少整个I帧被丢弃和图像破损的问题。
图3:P 帧的连续条状图像可用做帧内编码。
数字录像
适用于家庭娱乐的数码摄像机(DVR)可能是使用范围最广的实时视频编码器应用了。对于这种系统来说,如何实现存储容量和画质之间的最佳平衡是一大问题。与不能容忍延迟的视频会议不同,如果系统缓冲可用的存储器足够的话,则视频录制的压缩可以承受一定的实时延迟。要满足实际要求的设计意味着让输出缓冲器可以处理数个帧,这样才足以保持磁盘能获得稳定持续的数据流。不过,在某些情况下,由于可视信息变化非常快,导致算法产生大量P帧数据,这时缓冲器就可能出现阻塞。只要解决了阻塞问题,图像质量就能重新提升。
有效进行权衡取舍的机制之一就是即时改变量化参数Qp。量化是压缩数据算法最后阶段的步骤之一。提高量化可减少算法的比特率输出,但图像失真会与Qp的平方成正比增长。提高Qp会降低算法的比特率输出,但同时也会影响画质。不过,由于这种变化是实时发生的,因此有助于减少跳帧或画面破损的现象。如果可视内容更改非常快,例如缓冲器拥塞时,那么这时虽然画质降低,但却不会像内容缓慢变化时那样引人注意。可视内容返回较低比特率且缓冲器清空后,就能将Qp重设为正常值。
编码器的灵活性
由于开发人员可在各种视频应用中使用DSP,因此DSP编码器在设计时就应当考虑到要发挥自身在压缩标准方面的灵活性优势。例如,基于德州仪器(TI)移动应用领域OMAP媒体处理器、TMS320C64x+DSP或达芬奇(DaVinci?)处理器的编码器就具备高度灵活性。为了最大限度地提高压缩性能,每个编码器都可用于充分利用其平台的DSP架构,其中包括某些处理器中内置的视频与图像协处理器(VICP)。
所有编码器均使用一套采用默认参数的基本API,因此无论使用何种类型的系统,系统接口都不会改变。扩展的API参数可使编码器满足特定应用的要求。默认情况下,可将参数预设为高质量,此外还提供高速预设设置。程序使用扩展参数可以覆盖所有预设参数。
扩展参数使应用能满足H.264或MPEG-4的要求。编码器可支持若干选项,如YUV 4:2:2与YUV 4:2:0输入格式、最小四分之一像素分辨率的运动补偿、各种I帧间隔(从每帧都为I帧到首个I帧后无后续I帧)、Qp比特率控制、存取运动矢量、去块滤波器控制、同时编码两个或更多通道以及I图像条(strip)等等。编码器可动态不受限制地确定默认运动矢量的搜索范围,这种技术相对于固定范围搜索而言是一个进步。
此外,通常都会存在最佳操作点(sweet spot),也就是既定输入分辨率和每秒帧数(fps)情况下最佳的输出比特率。开发人员应当认识到编码器的这个最佳点,从而在设计方案中实现系统传输与画质的最佳设计平衡。