新闻中心

EEPW首页>嵌入式系统>设计应用> 基于嵌入式平台的视频编码器的实现

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

作者: 时间:2011-08-18 来源:网络 收藏

  (2)1/4像素精度的运动估值。在h.264中通过6阶FIR滤波器的内插获得l/2像素位置的预测值。当l/2像素值获得后,通过取整数像素位置和l/2像素位置像素值均值的方式获得l/4像素位置的值,这样迸一步减小帧间预测误差,减少了经变换和量化后的非零比特数,提高了编码效率。

  (3)多参考帧运动估值。以往的编码技术在对P帧(场)图像进行帧间预测时,只允许以前一个I帧(场)图像或P帧(场)图像为参考帧。对B图像进行预测时只允许以前后两个I帧(场)图像或P帧(场)图像为参考图像。h.264则允许在ReferenceBuffer中的多个图像中选取一个(P预测方式)或两个(B预测方式,图像作为参考图像。参考图像甚至可以是采用双向预测编码方式的图像。

  (4)参考图像的选取与其编码方式无关。允许选取与当前图像更加匹配的图像为参考图像进行预测,减小了预测误差,提高编码效率。

  (5)更精确的帧内预测。在h.264中,每个4*4块中的每个像素都可用17个最接近先前已编码的像素的不同加权和来进行帧内预测。

  (6)环路去方块滤波器。h.264/AVC把去方块滤波引入运动估计预测环路中,既可去除方块效应,又能保护图像细节边缘,同时亦改善了图像的主、客观评定质量。而且经过滤波后的图像根据需要放在缓存中用于帧间预测,进一步提高预测精度。

  (7)h.264使用统一的可交长度编码国Ⅵz)码表。以往标准的熵编码通常采用变长度的哈夫曼编码,其码表不统一,不能适应变化多端的内容,从而影响编码效率的提高。在此,即对h.263不同系数采用不同码表进行VLC作了改进,采用了一个统一码表的IrvIC,同时,又对h.26L中的VCL方法进行了改进,使量化后的DCT变换系数使用内容的自适应可变长度编码(CAⅥC),此外还定义了一种上下文内容的自适应二进制算术编码(CABAC),其性能比CAVLC更好。从而,借助UVLC,CAVLC及CABAC较好地提高了压缩编码效率。

  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语言程序。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)


评论


相关推荐

技术专区

关闭