关键词:
intel , mpeg , pxa27x , 编码器 , 平台
随着人们对消费类电子产品(如pda,mp4,hdtv等)需求不断增加,特别是对高质量高清晰多媒体的要求越来越高,因此视频质量已经成为广大消费者关注的焦点之一。在视频的格式方面,一些国际组织和大公司分别提出了自己的标准,如iso组织的mpeg一2,mpeg一4,微软的wmv等。
针对intel公司的pxa27x处理器(这是一个包含intel wireless mmx技术基于intel xscale的处理器),以xvid mpeg一4为基础,针对mpeg一4在linux操作系统中实现视频的编码要求。在此首先介绍mpeg一4视频标准,紧接着阐述mpeg-4视频标准的关键技术和mpeg一4视频编码软件部分,最后还介绍了优化方法和实际平台的测试。
1 mpeg一4是视频标准
mpeg一4视频部分是mpeg一4标准的核心内容之一。既提供传统的基于帧的编码方法又提供基于视频对象(vo)的编码方法。在某一时刻,视频对象以视频对象平面(vop)的形式出现,图1所示为mpeg一4编码的框架。编码也主要针对该时刻视频对象的形状、运动和纹理这三类信息来进行。
2 mpeg一4视频编码关键技术
mpeg一4视频基于vop的编码就是针对运动信息、形状信息和纹理信息等3种信息的编码技术。
2.1 形状编码
mpeg一4首次引入形状信息的编码。vo的形状信息有2类:二值形状信息和灰度形状信息。二值形状信息用0,1表示vop的形状。二值信息的编码采用基于块的运动补偿技术,可以无损或有损编码。灰度形状信息用0~255之间的数值表示vop的透明程度。对灰度形状信息的编码是分别对二值形状及像素亮度值进行编码。目前对灰度形状信息的编码主要采用基于块的运动补偿与dct方法,在不需要形状信息的应用中(譬如基于规则矩形框帧的视频编码),形状编码会被屏蔽掉。这部分编码是以宏块为单位进行的。
2.2 运动估计与补偿编码
类似于现有的编码标准,mpeg一4采用运动预测和运动补偿技术来去除图像信息中的时间冗余成分,这些运动信息的编码技术可视为由现有标准向任意形状的 vop的延伸。vop的编码有3种模式,即帧内编码模式(i—vop)、帧间预测编码模式(p—vop)和双向预测编码模式(b—vop)。在mfeg一 4中运动预测和运动补偿可以是基于16×16宏块的,也可以是基于8×8子块的。为了能适应任意形状的vop,mpeg一4引入了图像填充技术和多边形匹配技术。图像填充技术利用vop内部的像素值外推vop外的像素值,以此获得运动预测的参考值。对于标准宏块,采用传统的基于块的运动估计和补偿技术。
2.3 纹理编码
vop视频的纹理信息可以表示为亮度成分y和两个色度成分cr,cb。帧内编码情况下,纹理信息包含有亮度和色度成分;运动补偿情况下,纹理信息表示经过运动补偿后的残差。纹理编码的对象可以是帧内编码模式的i—vop,也可以是帧间预测编码模式b—vop或p—vop运动补偿后的预测误差。在帧内编码模式中,对于完全在vop内的像素块,采用经典dct方法。对于完全位于vop之外的像素块则不进行编码:对于部分在vop内,部分在vop外的像素块首先采用图像填充技术获得vop之外的像素值,之后再进行dct编码。在帧间编码模式中,为了对b—vop和p—vop运动补偿后的预测误差进行编码,将那些位于vop区域之外的像素值设为128。纹理编码过程如图1所示,dct变换、量化、扫描及变长编码,这些过程与现有标准基本相同。
3 mpeg一4是视频编码软件
mpeg一4是软件编码是一个比较大的工程,项目用到的主要函数有:
mp4_encoder_init:初始化编码的参数,如视频大小尺寸、码流、缓冲大小;
encode_mpeg一4:编码调用的总函数,文本是基本层;
encode_pvop_mpeg一4对p帧的vop的编码的总函数;
ippiblockmatcn_imeger_16x16_mvfast:运动搜索mvfast(motion vector field adadtive search technique)。
下面是帧间宏块编码的函数:
encode_inter_mb_mpeg一4
(1)lookup_uvmv_mpeg一4:查找色度图像块的运动矢量;
(2)ippicomputetextureerrorblock_sad_8u16s:计算块残余的纹理误差;
(3)encode_block_inter_mpeg一4:dct变化和量化每块的系数。这还得反变化,来重构下帧的参考帧;
(4)create_mb_mpeg一4:得到宏块编码的信息;
(5)ippiencodemv_mpeg一4_8u16s:运动矢量和纹理残余的编码;
(6)ippiencodevlczigzag_inter_mpeg一4_16slu:zigzig扫描和变长编码。
ipp的函数合理使用,可以提高性能。如ip—piblockmatch_inieger_16x16_mvfast这个函数就比ippimotionestimation_16x16_mvfast减少3倍时间。这个函数是占正个系统最多的时间之一。
4 mpeg一4是视频编码优化和结果
这里是针对intel公司的pxa27x处理器,mpeg一4计算量复杂,特别是运动搜索,必须对其必要的优化,以满足实时编码的要求。编译优化是静态优化,优化编译器可以自动完成程序段和代码块范围内的优化问题,但由于对算法的流程很难获取,所以人工优化是不必可少的。可使用内联函数,wireless mmx指令编写,如wldrd和wmacs,特别在对数据处理时,打包指令是必不可少的指令。合理分配指令周期流水线也是重点,如wldrd需要4个周期,而wun—pckel只需要1个周期,使用ipp库函数将大量节约开发时间和提高性能等,按照实际的工程的需要编写指令。当然对算法的本身优化也不必可少,如运动搜索,运动补偿算法,将这些函数优化运算时间大量减少。还有对数据搬移方面,如何有效应用硬件资源也将提高运行的性能,如dma、缓存、寄存器等。
这里的试验平台是南望信息产业有限公司pda,主频可达624 mhz。视频大小(480×272)透过大量的试验,测试表明mpeg一4编码可以满足用户拍视频需求,速度可达到20帧/s,而且有较高的压缩率,码流比较低,质量也不错。图3,4为实际拍摄2帧图像。
5 结 语
针对intel公司的pxa27x微处理器开发平台,在linux操作系统中实现视频编码的功能。但是消费类产品对视频的画面有更高的要求,同时由于视频编码需要消耗大量的电源,电源的管理仍是视频开发的研究重点。
对于蓝牙耳机我们该怎么选,续航时间长的蓝牙耳机推荐
苹果Mac OS X如何维护和保养
英飞凌全新NFC标签侧控制器集成传感和能量采集功能,助力无电池智能传感物联网方案更加小型化
嵌入式的CPU自定义指令有什么特点
够神奇!纳米机器人将在医疗领域大显身手
4编码器在Intel PXA27X平台上的实现
基于单片机的波形信号发生器设计
英伟达正与软银就收购Arm进行“高级谈判”
STK4191 Ⅱ50W+50W功放,STK4191 POWER AMPLIFIER
易鲸捷受邀出席2020飞腾生态伙伴大会
回收利用难题待解决,退役锂电池派上新用场
探讨新一代网络技术革命浪潮下的IoT物联网革命
[图文]耳机功放IC TDA1308
N9342C手持式频谱分析仪的功能特性及应用范围
宝马电子气门的结构与工作原理
解析人工智能诞生以来的训练方式
常见串行通讯协议:SPI、I²C、UART、红外
深耕半导体市场,台积电2nm技术工厂落户新竹!
华为135瓦电源高端显示器入网 三星Tizen设备使用量达1.623亿
顺风清洁能源公布2019年业绩 2020年将进一步制定清晰的应对策略和有效的调配资源