基于DM642的X264开源代码实现的研究

[10-10 20:36:41]   来源:http://www.88dzw.com  电子制作   阅读:8742

文章摘要:摘要:本文概述了H.264视频压缩编码标准的主要特性,简要介绍了当前H.264的几种开源软件,详细分析了其中X264参考程序的具体结构,并针对TMS320DM642平台建议了可能的优化方向。 关键字:H.264;开源软件;X264;TMS320DM642;优化 引言 H.264/AVC是ISO/IEC和ITU-T两大国际标准化组织联合制定的新一代视频编码标准。它引入多种宏块划分、多模式的帧内和帧间预测编码、高精度亚像素运动估计、多参考帧运动补偿等技术,提高了压缩比;采用整数DCT变换,避免了精度的损失。在码流结构上,提出VCL层和NAL层的概念,其中增加的NAL层负责将编码器的输出码流适配到各

基于DM642的X264开源代码实现的研究,标签:电子小制作,http://www.88dzw.com
摘要:本文概述了H.264视频压缩编码标准的主要特性,简要介绍了当前H.264的几种开源软件,详细分析了其中X264参考程序的具体结构,并针对TMS320DM642平台建议了可能的优化方向。
关键字:H.264;开源软件;X264;TMS320DM642;优化

引言

H.264/AVC是ISO/IEC和ITU-T两大国际标准化组织联合制定的新一代视频编码标准。它引入多种宏块划分、多模式的帧内和帧间预测编码、高精度亚像素运动估计、多参考帧运动补偿等技术,提高了压缩比;采用整数DCT变换,避免了精度的损失。在码流结构上,提出VCL层和NAL层的概念,其中增加的NAL层负责将编码器的输出码流适配到各种类型的网络中,提供了友好的网络接口。同时,标准提供的许多工具如参数集、灵活的宏块排列次序、冗余片等,使得H.264的码流在网络中传输时具有更强的抗误码性能。基于H.264的实时编解码器设计与实现已经成为当前视频通信领域的热点问题。

1、H.264开源代码简介

       H.264所具有的独特优势促进了与之对应的开源软件的开发与应用。目前常见的H.264开源软件编解码器有以下三种 :

       1)JM

       H.264的官方测试源码,由德国HHI研究所负责开发。该代码旨在实现H.264的所有特性,因而结构冗长,编码复杂度极高,多用于学术研究,不适于实际应用。

       2)X264

       X264是由法国巴黎中心学校的中心研究所于2004年6月发起,并由许多视频编码爱好者共同完成的项目。其目标是实现实用的264编码器,所以它引入MMX、SSE等汇编指令来提高编码速度,同时摒弃了一些耗时但对编码性能提高微小的模块,如多参考帧等。

       3)T264

       由中国视频编码自由组织联合开发的H.264编解码器。它和X264一样注重实用,吸收了JM、X264、XVID的优点。但其解码器只能解T264编码器生成的码流。

2、X264代码分析

       本文所介绍的X264为060418版,下文所提到的程序结构和运行结果如不作特殊说明均针对该版本。

       代码的实现流程如图1所示。

图1  X264编码流程图

       整个代码的执行可以分为以下三个部分:

    1)数据的读入与存放

       X264开辟了unused、next、current、reference等区域分别保存未处理原始图片序列、即将编码帧序列、当前编码帧和参考帧序列,同时还开辟了fenc和fdec区域用于存放已编码帧和重构帧。

       程序按以下顺序读入数据:首先,从YUV数据文件中读取数据存到临时变量pic_in,同时为unused开辟存储空间,并用fenc指针指向这个空间。接着,将pic_in中的图片数据拷贝到fenc所指向的区域,并在拷贝完成后对图片大小进行判断,如果长宽不为16的整数倍则进行像素扩展;将处理后的fenc区域数据放入next区域。之后,如果存在B帧,则从next区域取出B帧以后的P帧放到current区域中,也就是说先编码I、P帧再编码之间的B帧;否则,直接从next区域取出一帧存入current区域。此时current区域中存放的就是已经过预处理的即将要编码的帧数据了。最后,由于fenc区域是编码的直接对象,再将current区域中的内容拷贝到fenc中正式开始编码。

    2)数据的压缩编码

    ①判断帧类型,初始化相关参数

如果是IDR帧,意味着是一个新切片的开始。在H.264中为了防止编码错误扩散规定当前切片不以本切片以外的其它帧为参考,因而遇到IDR帧需要重置参考帧区域。同时,将SEI(Sequence Enhancement Information)、SPS(Sequence Parameter Set)和PPS(Picture Parameter Set)分别单独写入NAL单元。这三个参数集集合了编解码的核心参数,直接关系解码端能否正常解码。如果不是IDR帧,依据帧类型设定当前NAL单元的类型和切片类型。

[1] [2] [3]  下一页


Tag:电子制作电子小制作维修教程知识 - 电子制作

《基于DM642的X264开源代码实现的研究》相关文章