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

2010-12-18 18:08:42来源: 现代电子技术 关键字:H.264  ffmpeg  解码器  Godson3B  向量化

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
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:基于微控制器的数控DC电流源系统设计
下一篇:基于Blackfin533的CCSDS图像压缩算法编码优化

论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
H.264
ffmpeg
解码器
Godson3B
向量化

小广播

独家专题更多

迎接创新的黄金时代 无创想,不奇迹
迎接创新的黄金时代 无创想,不奇迹
​TE工程师帮助将不可能变成可能,通过技术突破,使世界更加清洁、安全和美好。
TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 

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

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

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

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