新闻中心

EEPW首页 > 消费电子 > 设计应用 > H.264在ADSP-BF561上的实现与优化

H.264在ADSP-BF561上的实现与优化

作者:时间:2009-05-25来源:网络收藏

2.1.2 ADSP-561 EZkite
  视频编码器平台采用ADI公司的 EZ-kit Lite评估板。此评估板包括1块处理器、32 MB SDRAM和4 MB Flash,板中的AD-V1836编解码器可外接4输入/6输出接口;而ADV7183视频解码器和ADV7171视频编码器则可外接3输入/3输出视频接口。此外,该评估板还包括1个UART接口、1个USB调试接口和1个JTAG调试接口。摄像头输入的模拟视频信号经视频芯片ADV7183A转化为数字信号,此信号从ADSP-BF561的PPI1(并行外部接口)进入ADSP-BF561芯片进行压缩,压缩后的码流则经ADV7179转换后从ADSP-BF561的PPI2口输出。此系统可通过Flash加载程序,并支持串口及网络传输。编码过程中的原始图像、参考帧等数据可存储在SDRAM中。
2.2 算法选取与方案
2.2.1 算法选取
  的源代码不止一种,其中最常见的有JM、X264和T264。对比这三种源代码,X264比T264具有更高的效率。而且相比广泛采用的JM编码模型,X264在兼顾编码质量的同时大幅度地提升了编码速度,所以选取X264作为算法原型。
2.2.2 方案
  该方案从三个层次对算法进行优化:算法层次、代码层次、平台层次。下面介绍具体优化方法。
2.2.2.1 编码器具体参数的选择
  该编码器使用main档次,I、B、P帧量化值分别为26、31、29,流控参数选为CBR。IDR帧间隔设为50,B帧间隔为2帧。这样的选择是为了在速度和运算量上取折中。选用B帧并将其量化值加大,可比baseline档次、IPPP结构提高约10%的压缩率。而B帧的计算量,因其不用做参考帧,故无需进行去块滤波和插值计算,在31的qp下,很多块会被判做skip模式编码,因而多数时B帧总运算量候反而较P帧低。
2.2.2.2 算法层次的优化
  算法层次的优化主要是指在参数选定的情况下,对部分算法所作的替换或优化。和参数的选择一样,算法层次优化也主要受优化策略的指导。如运动匹配准则是选用SSD、SAD或SATD。如果只看中准确程度,则选择SSD最佳;如果只看中运行速度,则选择SAD最佳;如果要兼顾二者,则选用SATD是比较好的一个方案。在进行算法优化时还应该注意一个问题,即要考虑实际运行平台的支持情况。如在追求速度的策略下,匹配准则选用SAD,如果只计算一半的点则会大大降低运算速度。但是如果考虑ADSP-BF561汇编指令的设计情况,就会发现这样做反而会增加指令数,会使速度更低。算法层次优化包括如下几个部分:
  (1)除法求余。改进策略是浮点型算法尽量改为整型,64位尽量改为32位,32位尽量改为16位。而对于某些计算比较多的,则改为查表计算。在ADSP-BF561平台上,一次32位整形除法需耗时300个CYCLE,而查表仅需几个CYCLE,这样的改进能显著提高速度。
  (2)饱和函数。在视频的计算中,几乎每次像素的计算都会调用饱和函数,X264代码的中已将这部分代码改为查表函数,在其他的编解码器实现中也有将这部分改为一个判断和几个逻辑运算的形式。对大部分DSP平台,采用判断跳转会打断流水线,即使平台有比较好的跳转预测功能,打断流水仍然会造成stall。所以查表方法是一种高效方法。而在ADSP-BF561汇编指令中,可以通过设置指令后缀或使用某些特殊指令来进行饱和工作。甚至不用查表,在不同的场合使用不同的饱和算法能大大提高代码的执行效率。
  (3)MC部分函数。实测中发现MC部分函数运行效率不如ffmpeg解码器中MC部分效率高,所以将这部分代码用ffmpeg中的相应部分替换。此外qpel16_hv函数中计算有冗余,减少这些冗余能提高代码运行效率。
  (4)算法替代和改进。帧间预测的改进:关于算法的改进主要集中在对me(motion estimation)的改进上,流程如图2所示。costmin1=min(cost16,cost8,cost16×8,cost8×16),costmin2=min(costmin1,costsub),依次在16×16、8×8、16×8和8×16大小宏块的整像素位置做预测,再做次像素估计和帧内预测,选用匹配准则函数(采用sad作为匹配准则函数)取得最小值的模式进行编码。每计算一种模式,都将sad值与一个经验阀值做比较。当sad值小于这个阀值时,立即结束运动估计,从而减少运算量。

本文引用地址:http://www.eepw.com.cn/article/166951.htm


  帧内预测的改进:标准所采用的帧内预测模式除了DC模式都具有方向性,相邻4×4块都具有相关性。根据这样的相关性,只将当前4×4块上边和左边选用预测模式及其相邻的两种预测模式作为当前4×4块的预测模式,当其阀值都大于一个经验阀值时,才采用DC模式。这样的方案不用一一计算9种预测模式,在复杂度、编码效率、质量和速度上取了一个折中。流程如图3所示。



评论


相关推荐

技术专区

关闭