当前位置:
文档之家› 基于S3C2440的H264软编解码器实现
基于S3C2440的H264软编解码器实现
(School of Oploelectronic Information·University of Electronic Science and Technology of China.Chengdu.610054.China)
Abstract:Nowadays,the software realization of H.264 encoder/decoder is the hotspot of the embedded application re— search.Implementation of H.26r1 encoding and decoding in the Linux system baded on¥3C2440 is introduced.The encoding code is based on x264,and the decoding code on ffmpeg codec。and play on ffplay codec.The experimental results show that at the resolution of qcif,the near rea[一time decoding and playing can be gained.Aimming at real—time video decoding and pla— ying based on the video streaming.the optimization of codec options is given.
收稿日期:2009—10—28 38
万方数据
随着视频压缩技术的日益成熟,嵌入式视频监控成 为当今视频监控的主流。采用¥3C2440为硬件平台, 将Linux与H.264相结合,实现x264和ffmpeg的移 植,对实际嵌入式视频通信系统的设计开发,具有重要 意义和实用价值嘲。
1 系统架构
采用¥3C2440作为硬件平台,稳定运行在 400 MHz,64 MB片上SDRAM,可以满足大型软件内 存需要,64 MB NAND FLASH,用于存储文件系统镜 像,接口丰富,功能强大。以拥有免费性,高可靠性,携 带源代码,强大的网络功能等特性的Linux作为嵌入式 软件开发平台。
关键词:¥3C2440;H.264;视频流;编解码;嵌入式开发
中图分类号:TP311
文献标识码:A
文章编号:1004—373X(2010)06—038—02
Implementation of H.264 Software Encoder/Decoder Based on S3C:2440
HE Xun。ZHOU Ying,WANG Yafei
比如CISC结构的CPU,基本上所有的指令都能访 问内存,对内存的操作都可以通过一个指令直接完成。 而RISC结构的CPU对内存的操作大都是通过Load/ Stores来进行的,其对内存的算术操作不能在一个指令 周期内完成。通常通过Load将内存中的操作数取出, 送入寄存器,再修改寄存器的内容.最后再用Store将 寄存器的数据送回内存。RISC结构的内存操作方式, 决定了由CISC结构CPU上开发的软件不能直接成功 移植到RISC上面¨。。
目前,H.264的开源解码器软件主要有:德国HHI 研究所负责开发的H.264官方测试软件JM,由法国巴 黎中心学校的中心研究所的学生发起的,网上自由组织 联合开发的兼容264标准码流的编码器x264,以及中 国视频编码自由组织联合开发T264等。对比之下, x264注重实用,在不明显降低编码性能的前提下,努力 降低编码的重复计算复杂度,摒弃了H.264标准中 一些对编码性能贡献微小但计算复杂度极高的新特性 如多参考帧。
紧接着在shell脚本make,在make中会出现关于 cpu set t的错误,关于CPU set t的以下那段代 码是计算CPU内核数目的,所以将np一1(计算机是单 核)直接返回,而没有用它的计算,还可能会出现变量未 定义的情况,可以用extern来辅助定义和应用相关函 数得到解决。然后make install,就会得到目标平台处 理格式的二进制可执行文件x264,将其移植到开发板 上,具体参数说明可以键入“./x264一help”进行查看。
2 x264的移植
由于普通PC机的X86体系结构和ARM的体系 结构的差别,X86就是采用复杂指令架构计算机(Com— plex Instruction Set Computer,CISC)架构。在CISC
处理器中,程序的各条指令是按顺序串行执行的,每条 指令中的各个操作也是按顺序串行执行的。顺序执行 的优点是控制简单,但计算机各部分的利用率不高,执 行速度慢。arm结构采用的是精简指令集计算机(Re— duced Instruction Set Computer,RISC)架构,是一种执 行较少类型计算机指令的微处理器。他们有以下区别: RISC对存储器操作有限制,使控制简单化;而CISC机 器的存储器操作指令多,操作直接。RISC机器在一条 指令执行的适当地方可以响应中断;而CISC机器是在 一条指令执行结束后响应中断。RISC汇编语言程序 一般需要较大的内存空间,实现特殊功能时程序复杂, 不易设计;而CISC汇编语言程序编程相对简单,科学 计算及复杂操作的程序设计相对容易.效率较高。
4几组实验数据的对比
在S3C2440平台下,采用Linux内核2.6,用成功 移植的x264和ffmpeg以及ffplay,对标准序列做了以 下测试,如表1所示。
表1测试结果
从表1可以看出,在¥3C2440平台上编码速度比 较慢,解码速度能接近实时,相信进过优化,能达到一般 安全监控的要求。ARM上测试序列标准序列suzie— qcif.yuv播放效果如图1所示,测试电影中的1个片段 播放效果如图2所示。
然后交叉编译ffmpeg,注意的是要把x264加进 来,当Configure时要加入一enable—x264选项,具体参 数说明可键人“./configure—help”查看。
Configure后会出现在SDL support NO之后。编 辑脚本configure里面的sdl—check,找到:
SDL—CONFIG=“MYM{cross—prefix)sdl—con— fig”,修改为自己安装的目录,如笔者为/usr/local/ arm/3.4.1/bin/sdl—eonfig,紧接着make进行编译和 make install进行安装就能得到目标平台处理器格式的 二进制可执行文件ffplay和ffmpeg,将生成的ffplay和 ffmpeg移植到开发板上,同时将生成的库文件 libSDI。一1.2.SO.0和libx264.SO.56移植到ARM上 Linux系统的根目录lib下运行。
3 ffmpeg和ffplay的移植
由于ffplay需要SDI。库的支持,SDI.是一个跨平台 的多媒体库,以用于直接控制底层的多媒体硬件的接VI。
万方数据
首先交叉编译SDL,这里采用的版本为SDL一1.2.13。 键入“./configure—help”根据需要设置参数,然后
make和make install,看情况改变prefix目录和各种选 项。make install之后便在prefix目录下生成所需的动 态库和include头文件等。
DIS是数字信息技术和嵌入式技术在教育领域的 最新应用。分析了DIS系统的整体模型,给出了其主 体的一个具体实现。由于硬件上定义了统一的接口,软 件上引入了实时操作系统,系统的扩展性极强。创新性 地提出了传感器的无线连接方式,以方便实验。系统硬 件上基于ARM7平台,体积小,重量轻,功耗低,价格便 宜;软件上提供了图形用户界面,支持触摸操作,使用方 便,界面友好。系统集数据采集与分析显示于一体,可 独立使用,又可以方便地与计算机通信,性能优越,稳定 性好。可以预见,该设计在中小学实验教学领域将有广 泛的应IS在高中生物学实验中的应用初探[J].生物学通 报,2008,43(8):42—43.
[2]张晓伟.刘盼盼.ARM嵌入式系统设计原理与开发实例 [M].北京:电子工业出版社.2008.
[3]赖于树.ARM微处理器与应用开发[M].北京:电子工业出 版社,2007.
[4]周立功.ARM微控制器基础与实战[M].北京:北京航空航 天大学出版社,2003.
为了能够在PC机(CISC结构)上编译得到能在ARM 上(RISC结构)运行的二进制程序,要使用交叉编译工具链 来编译程序,这里选用arlTl—Linux—gcc 3.4.1。
笔者移植所选版本为x264一snapshot 20070920— 2245。将x264程序拷贝到PC机上的Linux系统,运 行x264所在目录下的configure脚本进行配置,输入 CC—arm—I。inux一./configure。会在当前目录生成 config.mak文件,修改该脚本,设置编码器和库文件安 装路径、目标系统类型(Linux或Windows)、指定编译 工具链和编译选项等。比如把CC=gcc,AS=yasm修 改为CC=arm—Linux—gcc.AS=arm—Linux—as等。
Keywords:¥3C2440;H.264;video streaming;encoder/decoder;embedded development
0引 言
由国际电信联合会ITU视频编码专家组VCEG (Video Coding Expert Group)和国际化标准组织运动 图像专家组MPEG(Motion Picture Expert Group)共 同组成的联合视频组JVT(Joint Video Team)联合制 定的H.264视频压缩标准,凭借相对其他标准较高的 压缩效率和优秀的图像质量,已经成为目前最流行的视 频处理协议,具有广阔的前景和巨大的应用价值。由于 H.264采用分层设计、多模式运动估计、改进的帧内预 测等技术,显著提高了预测精度,从而获得比其他标准 好得多的压缩性能¨]。然而H.264获得优越性能的代 价是大幅度增加计算复杂度。