当前位置:首页 > 电源 > 数字电源
[导读]本文概述了H.264视频压缩编码标准的主要特性,简要介绍了当前H.264的几种开源软件,详细分析了其中X264参考程序的具体结构,并针对TMS320DM642平台建议了可能的优化方向。

摘要:本文概述了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单元的类型和切片类型。

接着进行一系列初始化参数的操作,包括建立关于参考帧的list0和list1,初始化量化参数QP、MV、参考帧等相关变量,初始化比特流的起始位置和大小等。

    ②以宏块为单位对视频数据进行编码

    在进行预测编码之前必须得到周围块的相关信息。在X264中开辟了intra4x4_pred_mode和non_zero_count区域用来存放当前宏块左侧和上侧相邻宏块的预测模式和非零值个数。在编码开始之前通过x264_macroblock_cache_load()函数将相关数据载入缓存。然后,利用x264_macroblock_analyse()函数分析参数,确定最佳编码模式。I片从9种4x4模式和4种16x16模式中选择模式; P片选择帧间预测模式下的宏块分割方式或帧内预测模式下的4x4模式和16x16模式。接着,用x264_macroblock_encode()函数对宏块进行编码。编码过程严格按照编码框架中规定的DCT变换、zigzag扫描和熵编码的过程以先亮度块再色度块的顺序进行。需要声明的是编码过程对DC参数和AC参数的处理是分开进行的:首先对整个宏块进行DCT变换,然后将亮度块和色度块的DC参数抽出分别组成4×4和2×2的子块并对剩余AC参数进行量化扫描,接着对DC子块再进行Hadmard变换、量化、zigzag扫描、反变换、反量化,再对剩下的AC参数进行反量化,最后将处理后的DC子块和AC子块重新组合并对组合后的宏块进行IDCT变换。

    以上过程完毕以后,统计CBP(Coded Block Pattern)信息。CBP一共6bit,用于表示当前宏块是否存在非零值,主要用于决定熵编码时采用的码表。其中,高2bit表示2个8×8色度块的CBP (2:Cb、Cr中至少一个4×4块的AC系数不全为0;1:Cb、Cr中至少一个2×2的DC系数不全为0;0:所有色度系数全0)。低4bit分别对应4个8×8亮度块,第i位(i= 0、1、2、3)表示一个MB中第i行的4个4×4子块是否有非零参数。若存在非零值,则将相应位置1。将各子块的非零值个数保存到non_zero_count区域。使用先前得到的CBP查相应码表进行熵编码,将编码参数和编码数据写入比特流。

    ③保存编码信息

    利用x264_macroblock_cache_save()函数将当前MB最下一行和最右一列的子块的编码模式保存到intra4x4_pred_mode,将子块非零参数的个数保存到non_zero_count中,以备下一次预测编码采用。最后,统计MB信息,更新参考帧列表,并从unused区域取出新的帧放入fenc区域以备下次编码。

    3)数据的输出

    对NAL编码数据加上NAL头信息组成完整的NAL单元,输出到本地文件。

 

3、X264在TMS320DM642平台上的移植与优化

       原始的X264代码是基于PC平台的,程序通过采用MMX和SSE语言编写SAD、DCT等函数使X264具有很高的编码速度。而在实际应用中,要想实时实现H.264的复杂算法,必须借助DSP这样具有超强运算能力的嵌入式平台。本文采用TMS320DM642开发板作为实现和开发的平台,并在其上进行代码的移植和优化。

       1)TMS320DM642硬件平台简介

       TMS320DM642是一款基于TI 的第二代高性能超长指令字(VLIW) 架构VelociTI.2(tm)的高性能DSP,该器件是目前计算密集型视频/图像应用领域的理想选择,其主要特点如下 :

    ① 增强功能单元:DM642 的8 个功能单元中的VelociTI.2 扩展包括加速视频与影像应用性能的新指令。

    ② L1/L2 分级存储器结构:16 KB 直接映射的L1P 程序高速缓存,16 KB 双路关联L1D 数据高速缓存,256 KB L2 统一映射RAM/高速缓存(灵活的RAM/缓存分配)。

    ③ 64 位外部存储器接口(EMIF):可实现与异步存储器和同步存储器无缝连接。

    ④ 增强型直接存储器存取(EDMA)控制器(64个独立通道)。

       以DM642为硬件平台开发视频编码器,开发者可以充分利用其硬件特性,提高视频编解码算法的运算速度。

       2)X264的移植

       由于适用于PC机通过MMX和SSE编写的代码在DSP上无法运行,想要使X264代码在DM642上运行,必须将原来的代码加以修改使其变成纯C语言的代码。具体做法是:在X264代码中将HAVE_MMX编译选项屏蔽,同时将代码中与该编译选项相关的代码注释掉。当程序成为纯C代码时,就可以开始往DM642上移植了。

    然而,DSP开发工具CCS有自己的ANSI C编译器和优化器,并有自己的语法规则和定义。所以需要将代码作相应修改,使其完全符合DSP中C的规则,同时要配置CCS的编译选项,才能使X264在CCS和VC下运行产生的结果一致。这个过程称为代码的DSP化。

       由于纯C语言编写的程序无法利用DSP的并行处理机制,此时代码的运行速度非常慢。在DM642平台上,对相同的YUV数据(此处采用container.qcif)进行编码,若采用带X86汇编的X264代码(DCT和SAD部分采用汇编代码)在VC环境下运行,编码速度能达到QCIF 60fps;若将代码改为纯C语言仍然在VC下运行,则编码速度马上降到QCIF 10fps ;将该代码稍作修改移植到DM642的硬件平台,用CCS编译,编码速度仅能达到1帧/6秒。这样的速度离实时处理的目标还非常遥远。

       所以,必须结合DSP本身的特点,对代码进行优化,才能在DM642平台上实现X264对视频图像的实时处理。

3)X264的优化

       X264代码的优化分为三个层次:项目级优化,算法级优化和指令级优化。

    ①项目级优化:主要通过设置CCS编译器的选项,调整代码结构和合理分配内存来实现。如设置-o3选项,将常用数据分配到访问速度高的片内内存等。

    ②算法级优化:提出快速高效算法,从算法上挖掘潜力,提高运行速度,达到优化目的。用X264支持的4种运动估计算法(菱形搜索算法、六边形搜索算法、非对称十字型多层次六边形格点搜索算法和连续消除法)处理同样的YUV数据(此处仍为container.qcif),编码速度分别为13fps、11fps、9fps和4fps,可见不同的运动估计算法引起的编码速度的差别非常明显。

    ③指令级优化:这部分又可以分为C语言级的优化和汇编级的优化。前者主要包括消除冗余代码、调整数据类型、优化程序结构、打开for循环和充分利用内联函数等操作。后者主要是将耗时函数抽取出来,用线性汇编改写,充分利用丰富的媒体处理指令,最大限度的利用DSP的并行性,加快编码速度。汇编级优化涉及到的主要部分有SAD计算、DCT变换、反DCT变换、量化等过程比较规范,重复性比较高的计算过程。

 

4、结束语

    目前,H.264视频编码技术以其独有的优势,受到业界几乎所有主流视频相关设备、产品厂商的支持。由于完全独立开发编解码器所需要的人力和物力都很大,许多公司和团体都采用直接修改移植开源代码的方式以求缩短开发周期。在目前可选的几种开源代码中, X264以其结构精简适于应用的特点,成为众多团体选择的对象。熟悉X264代码,以此为基础将其移植到DSP平台并进行优化,对构建高效的多媒体平台具有一定的实际意义。

 

参考文献

[1] 毕厚杰.新一代视频压缩编码标准-H.264/AVC.人民邮电出版社,2005.

[2] 李世平.2005年全球H.264编解码器荟萃. http://blog.csdn.net/sunshine1314

[3] 李方慧,王 飞,何佩琨.TMS320C6000 DSPs 原理与应用(第二版) [M].电子工业出版社,2003.

[4] 张旭东,魏振宇,史鵾.H.264编解码器在C6416 DSP上的实现与优化.电子产品世界,2005,5:71-74.

[5] 安向阳,沈庭芝.基于TMS320DM642的H.264编码的实现和优化.微计算机信息,2005,7-2:128-130.

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

北京2024年5月20日 /美通社/ -- 过去五年里,支付和收款方式日新月异,其发展和变化比过去五十年都要迅猛。从嵌入式数字商务的出现,到"一拍即付"的...

关键字: VI BSP PAY COM

助力科研与检测新突破 上海2024年5月15日 /美通社/ -- 全球知名的科学仪器和服务提供商珀金埃尔默公司今日在上海举办了主题为"创新不止,探索无界"的新品发布会,集中展示了其在分析仪器领域的最...

关键字: 质谱仪 BSP DSC 气相色谱

上海2024年5月16日 /美通社/ -- 2024年5月10日至5月13日,富士胶片(中国)投资有限公司携旗下影像产品创新力作亮相北京P&E 2024。在数码相机展览区域,全新制定的集团使命"为世界绽...

关键字: 富士 数码相机 影像 BSP

贝克曼库尔特目前已成为MeMed Key免疫分析平台和MeMed BV检测技术的授权经销商 在原有合作的基础上,继续开发适用于贝克曼库尔特免疫分析仪的MeMed BV检测 加州布瑞亚和以色列海法2024年5月16日...

关键字: BSP IO 检测技术 免疫分析仪

英国英泰力能的燃料电池是可产业化的产品解决方案 英国首个专为乘用车市场开发的燃料电池系统 在 157kW 功率下,此燃料电池比乘用车的其他发动机更为强大 &...

关键字: ENERGY INTELLIGENT 氢燃料电池 BSP

深爱人才,共赴"芯"程 深圳2024年5月15日 /美通社/ -- 5月11日,深圳国资国企"博士人才荟"半导体与集成电路产业专场活动在深圳市重投天科半导体有限公司(简...

关键字: 半导体 集成电路产业 BSP 人工智能

武汉2024年5月15日 /美通社/ -- 北京时间4月26日-5月4日,2024 VEX 机器人世界锦标赛于美国得克萨斯州达拉斯市举办。本届 VEX 世锦赛为期九天,设有 VIQRC 小学组/初中组、V5RC 初中组/...

关键字: 机器人 BSP RC POWERED

上海2024年5月15日 /美通社/ -- 由生成式人工智能(AI)驱动的临床阶段生物医药科技公司英矽智能宣布,与复星医药(600196.SH;02196.HK)合作开发的潜在"全球首创"候选药物IS...

关键字: ISM BSP PC 人工智能

上海2024年5月13日 /美通社/ -- 5月8日,浦东新区国资委组织陆家嘴集团等9家区属企业与立邦中国召开合作交流会,旨在贯彻落实浦东新区区委、区政府工作要求,进一步放大进博会溢出带动效应,持续扩大区属企业与进博会重...

关键字: BSP 数字化 自动化立体仓库 智慧园区

上海2024年5月13日 /美通社/ -- 在数字化时代,高效的税务管理和ERP系统成为企业发展的关键。为了满足这一需求商应信息科技与Exact Software 易科软件就金四全电票税系统与ERP系统集成及商务合作建立...

关键字: AC 软件 BSP 数字化
关闭
关闭