微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于嵌入式平台的视频编码器的实现

基于嵌入式平台的视频编码器的实现

时间:07-30 来源:维库 点击:

4 PXA255上的h.264编码算法的实现

ITU-T(国际电信标准化部门)提供了h.264的核心算法,本文使用的是开源编码软件x264。将其通过交叉编译后移植到PXA255嵌入式开发平台上。由于h.264编码算法复杂度高、运算量大等特点导致h.264编码效率不高,经初步测试编码速率为QCIF格式图像10帧/秒,不能达到实时视频编码的要求。

因此需要对编码程序进行相应的优化。

4.1 C语言优化

编码软件包含了解码和传输部分的程序,而本文只对视频进行编码,并不需要解码和传输。所以对代码进行调整,删除解码和传输部分的代码,再重新改写makefile文件。这样可以缩小程序的空间大小,减少程序的运行时间,提高编码效率。

使用尽量小的数据类型。能够使用字符型(char)定义的变量,就不要使用整型(int)变量来定义;能够使用整型变量定义的变量就不要用长整型(10ng in0,能不使用浮点型(float)变量就不要使用双精度浮点型(doubles)变量。

程序中被多次调用的、函数体代码不是很大的函数使用内联函数。使用内联函数可以避免由于保护现场和记忆执行的地址所带来的时间和空间方面的开销,以提高程序的执行效率。

4.2 Itrm汇编优化

用C语言编程结构化程度高,易于编写,但执行速度相对较慢:与之相反,汇编程序速度快,但很难有较好的结构,而且编写起来耗时,不易调试。C和汇编混合编程结合了各自的优势,往往能构造出结构好且执行速度快的程序。利用汇编语言优化C语言代码,优化后的汇编程序可以被C语言程序调用,并且在汇编程序中也可以调用C语言程序。

将编码程序中的较复杂的部分程序段使用arm汇编进行改写,这样可以很大程度的提高代码的运行速度。例如下面就是宏块预测predict.c中的一段汇编优化的代码,C代码如下:


4.3 基于PXA255结构的优化

结合PXA255硬件结构特点,从以下几个方面对h.264编码程序进行优化处理:

(1)合理分配变量的存储位置。根据片内存储器容量小而存取速度快,片外存储器容量大但存取速度慢的特点,在分配存储器的时候对于那些经常使用的变量放在片内,如VLC表、运动矢量、反量化、反DCT的系数以及其它中间变量等,而对于那些执行次数比较少或者比较大的变量如参考帧则放在片外。此外由于编译和分配空间是以文件为单位的,所以把频繁使用的函数放在同一文件中,再将这个文件放入片内存储器以高效地利用有限的片内资源。

(2)PXA255处理器中集成了大量的DSP多媒体操作指令,使用这些指令可以极大的提高程序的运行效率。

(3)指令并行执行是提高程序执行效率的很好的方法,PXA255处理器中引入了Branch Target Buffer技术,以实现指令执行的流水线。

  5 实验结果

为了验证程序优化的效果,改变每次采集的帧数进行实验结果分析。结果如表1所示。由表l中的实验结果可知,经过优化的h.264编码器每秒能处理20帧左右的QCIF图像,而图像的质量没有什么影响。因此,优化后,h.264压缩算法能够对采集到的图像进行实时压缩,具有很好的实用性。图5为采集的视频经过h.264压缩后的视频流。


  6 结束语

本文描述了在嵌入式平台PXA255上实现新一代视频压缩标准h.264编码算法,并结合硬件芯片特点和专有汇编指令对原程序进行相应优化,实现了编码器实时编码的要求。研究基于嵌入式平台的h.264视频编码算法有很大的实用价值,它的优异的压缩性能也将在嵌入式数字电视广播以及视频实时通信等各个方面发挥作用。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top