基于龙芯3B的H.264解码器的向量化

2010-12-18 18:08:42来源: 现代电子技术

0 引言

  当今社会已经步入信息时代,传统的信息载体和通信方式已经无法满足人们对信息的需求。而实验表明:相比较语音和抽象数据,人类接受的信息更多是以图片和视频方式为载体的。其中视频信息具有直观、具体和高效的特点,这也就决定了视频通信技术将成为信息时代的重要技术之一。

  由于视频的数据量巨大,而存储视频的资源通常是非常有限的,因而对视频进行压缩编码,以减少存储资源的消耗,非常必要。然而,通常情况下,使用的压缩算法的复杂度越高,压缩比率越高,视频播放时的解码速度就会越低。因而在提高编码压缩率的同时,也需要对解码器进行相应的优化,以提高视频解码器在目标平台上的性能。本文就实现了ffmpeg解码器在龙芯3B上的移植与向量化,提高了该解码器在龙芯3B上的性能。

1 视频编/解码与龙芯3B

  1.1 视频编/解码

  目前,成熟的压缩编/解码方法有很多。其中H.261、MPEG-1、MPEG-3和H.263采用了第一代压缩编码方法,如预测编码、变换编码、熵编码以及运动补偿;而MPEG-4和H.264采用了第二代的压缩编码方法,如分段编码和基于模型或对象的编码等。

  视频压缩编码的主要目的是减少存储视频所占用的资源,而解码技术的目标则是提高解码的速度,从而提高视频播放的流畅性。常见的基于H.264编码方法的软解码器包括CoreAVC、ffmpeg和JM等。其中JM是H.264官方网站提供的编/解码器,集合了各种编/解码算法,而且代码的结构清晰,很适合应用于对视频编/解码技术的研究。而CoreAVC解码器则主要用于商用,其解码速率比ffmpeg快50%以上。ffmpeg是开源的解码器,而且性能相对较好,很多开源项目都直接或间接地使用了ffmpeg,如mplayer播放器等。通过对性能以及开源特性的综合考虑,本文选择ffmlpeg作为移植和向量化对象。

  1.2 龙芯3B体系结构

  龙芯3B处理器在兼容了MIPS64指令集的同时,实现了针对多媒体应用的向量扩展指令,这对视频编/解码应用性能的提升有很大的帮助。

  龙芯3B提供了256位的向量寄存器并实现包括256位向量访存在内的向量扩展指令。使用向量指令可以一次完成32个字节宽度数据的操作。而这样的结构和指令集设计,使得龙芯3B非常适合于实现大规模相同类型数据的相同运算,比如矩阵乘法运算和FFT运算,以及视频编/解码运算等。

  不过由于ffmpeg并未实现对龙芯3B平台的支持,因而需要完成ffmpeg到龙芯3B的移植工作。本文之前也有一些ffmpeg到其他平台的移植工作和针对龙芯平台的移植与优化工作,都取得了不错效果。

2 基于龙芯3B的ffmpeg移植

  2.1 ffmpeg的移植

  ffmpeg解码器提供了对不同目标平台的支持,而与这些平台相关的文件都保存在以该目标平台命名的目录下。例如,ffmpeg解码器实现了对arm和sparc平台,以及x86平台的支持。

  对于实现ffmpeg解码器对龙芯3B的支持,主要完成以下5个步骤:

  (1)修改configure配置文件,增加与龙芯体系结构相关的配置选项;

  (2)新建龙芯专用文件夹godson,将龙芯体系结构相关的文件都存放于该文件夹中;

  (3)将godson文件夹下新增的需要编译的文件添加到Makefile中;

  (4)增加与dsputil_init类似的新的初始化函数dsputil_init_godson;

  (5)在头文件中添加新增函数的声明。

  针对龙芯3B的ffmpeg移植工作相对比较简单,因而本文重点介绍针对龙芯3B的向量化工作。

  2.2 移植后的ffmpeg的性能比较

  本节对移植后的ffmpeg解码器进行了性能测试,对使用龙芯3B向量扩展指令和不使用龙芯3B扩展指令两种情况下的性能进行了比较。测试时使用支持龙芯3B扩展指令集的GCC编译器进行编译,并且开启-ftree-vectorize和-march=godson3b编译选项来支持龙芯 3B扩展指令。使用的测试用例为视频“walk_vag_640x480_qp26.264”,测试结果如表1所示。

  从表1的测试结果中可以看出,使用龙芯3B的向量扩展指令可以提高ffmpeg解码器在龙芯3B上的性能,用来测试的视频的解码时间减少了约466s。尽管如此,由于GCC编译器本身自动向量化能力的限制,ffmpeg解码器的性能提升还是比较有限的,因而针对龙芯3B的指令集对移植后的ffmpeg解码器进行向量化,就成为了进一步提高性能的重要工作。

3 ffmpeg的向量化

  3.1 ffmpeg的oprofile测试

  使用oprofile对ffmpeg解码视频“问道武当002.mkv”的过程进行测试,测试结果如表2所示。表2列出了各个函数的调用过程以及运行时间所占的比重。而针对ffmpeg解码器进行的向量化工作,则主要是针对oprofile测试结果中执行时间较长、运行比重较大的几个函数的向量化。

  

[1] [2] [3]

关键字:H.264  ffmpeg  解码器  Godson3B  向量化

编辑:鲁迪 引用地址:http://www.eeworld.com.cn/afdz/2010/1218/article_3359.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
H.264
ffmpeg
解码器
Godson3B
向量化

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 视频监控 智能卡 防盗报警 智能管理 处理器 传感器 其他技术 综合资讯 安防论坛

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved