基于Android的OpenMAX框架研究与开发.docx
《基于Android的OpenMAX框架研究与开发.docx》由会员分享,可在线阅读,更多相关《基于Android的OpenMAX框架研究与开发.docx(45页珍藏版)》请在冰豆网上搜索。
![基于Android的OpenMAX框架研究与开发.docx](https://file1.bdocx.com/fileroot1/2022-10/25/5a309d7e-1513-41d5-a42f-90ba0d027bd8/5a309d7e-1513-41d5-a42f-90ba0d027bd81.gif)
基于Android的OpenMAX框架研究与开发
基于Android的OpenMAX框架研究与开发
摘要
从近几年手机的发展趋势看,智能手机越来越流行,Android手机表现的尤为强劲。
而多媒体播放的娱乐功能显得尤为重要。
如何更好地提高多媒体效率成为了用户选择使用的一大契机。
本文主要研究在Android平台上实现硬件编解码。
主要是jni技术实现数据交换,通过对OpenMAX框架的抽象封装,流程控制,数据输入输出。
从而实现硬件编解码,并且把OpenMAX框架硬件编解码集成到项目中,加强多媒体文件编解码速度,提高性能。
论文的研究结果可以提供一个优秀的OpenMAX硬件编解码框架,为其他Android手机开发者参考。
本文的主要创新点和贡献点如下:
1,实现多媒体硬件编解码,提高多媒体文件的编解码效率。
2,对OpenMAX框架的抽象和封装,更加便于开发调用。
3,实现更加精简的代码便于后期维护。
4,加强产品的使用性,提高产品的用户体验。
本文同时介绍了GoogleAndroid平台与多媒体框架的工作机制,OpenMAX框架,硬件编解码。
详细分析OpenMAX框架的运行机制。
对Android和OpenMAX有一个更加详细的了解。
关键词:
Android,OpenMAX,多媒体框架,编解码
Abstract
Developmenttrendsofmobilephonesinrecentyears,smartphonesbecomeincreasinglypopular,Androidphoneisparticularlystrong.Theentertainmentfeatureofmultimediaplayerisparticularlyimportant.HowtobetterimprovethetheMultimediaefficiencyhasbecomeagreatopportunityfortheusertochoose.
ThispapermainlystudieshardwarecodecontheAndroidplatform.Themainisthejnitechnologyfordataexchange,theabstractencapsulationfortheOpenMAXframework,processcontrol,datainputandoutput.Inordertoachievehardwarecodec,andOpenMAXframeworkhardwarecodecintegratedintotheproject,toenhancemultimediafileencodinganddecodingspeed,improveperformance.ThethesisresultscanprovideanexcellenttheOpenMAXhardwarecodecframeworkofreferenceforotherAndroidphonedeveloper.Themaininnovationandcontributionofthisarticleareasfollows:
1,multimediahardwarecodec,improvetheefficiencyofencodinganddecodingofmultimediadocuments.
2,abstractionandencapsulationoftheOpenMAXframeworkeasiertodevelop.
3,toachieveamorestreamlinedcodetofacilitatelatermaintenance.
4,toenhancetheuseoftheproduct,toimprovetheuserexperience.
ThispaperdescribestheworkingmechanismoftheGoogleAndroidplatformmultimediaframework,theOpenMAXframework,hardwarecodec.DetailedanalysisoftheoperatingmechanismoftheOpenMAXframework.AmoredetailedunderstandingoftheAndroidandOpenMAX.
KeyWords:
Android,OpenMAX,multimediaframework,Hard-codec
图目录
表目录
绪论
本章为本文的绪论,主要介绍了项目的背景,研究的目的和意义,较为详细的介绍了当前Android手机设备的软件编解码和硬件编解码在手机中的使用情况,最后对本人进行的主要工作和本文的章节安排进行描述。
项目背景
目前,Android上的多媒体软件大部分都还没有使用OpenMAX硬件编解码提高手机性能,如何通过硬件编解码提高多媒体的性能仍处于需要加强的阶段,需要通过实际手机设备提高性能,与实际应用联系不够,所使用的多媒体软件性能不够强大。
基于此,本文主要结合视频编辑器项目和OpenMAX框架的结合,研究如何在Android项目过OpenMAX实现视频硬件编解码,以提高项目的编解码效率,提高性能。
Android系统对OpenMAX 层进行使用部分,基本上使用的都是标准OpenMAX 层之上的接口,只是对其进行了简单的封装。
标准的OpenMAX 实现非常容易以插件的形式嵌入到Android系统中。
Android中的多媒体引擎OpenCore和StageFright都是使用OpenMAX 作为多媒体编解码上的插件,只是没有直接通过OpenMAX 层提供的纯C接口调用,而是对纯C接口进行了一定的抽象封装。
并且Android上的多媒体引擎OpenCore和StageFright大部分都是采用了软件形式的编解码,很少采用通过硬件形式的编解码。
项目研究目的和意义
多媒体—无论图像、视频还是声音,都早已经成为了手机移动设备受到广泛欢迎的主要原因。
到目前,基本上每个手机设备都会有一个以上的摄像头,并且随着手机技术的不断更新,同时越来越多的手机设备都需要拥有更为高档次的多媒体性能。
目前使用者都是非常频繁地用手机来进行拍摄和浏览照片,同时也有录制声音和观看视频功能[1]。
Android系统的多媒体解决方案一般都是软件编解码,解码效率不高,并且代码复杂纷乱,不容易调试,这样满足不了消费者的需求,也不容易维护。
运用OpenMAX硬件编解码既可以解析大多数流行的媒体文件,而且编解码效率也是增加不少,这样既可以满足消费者的要求,对开发和OEM来说也方便维护。
本文通过对Android的OMXCodec的封装和抽象,对OpenMAX的控制,对数据的循环输入和输出,对代码的精简,对硬件编解码的控制。
实现了一个基于Android系统的,编解码效率更加强大的OpenMAX 多媒体编解码框架。
它是通过研究OpenMAX来实现一个更加简洁,功能更加强大的代码框架,而且便于后期维护,提供新的多媒体编解码解决方案。
目的实现可以屏蔽硬件特性,最大发挥硬件编解码效率的框架。
国外现状分析
Android是以Linux为核心的手机操作平台,使用Java作为主要编程语言,但可以通过NDK支持C/C++,主要使用于便携设备[2]。
Android是Google公司在2007年11月5日公布的智能手机操作系统[3]。
早期是由原名是"Android"的公司来开发,谷歌在2005年收购"Android.Inc"公司后,继续对Android系统进行深入开发运营推广,它采用了4个主要层次架构,包括LinuxKernel(Linux核层),Library(函数库)和AndroidRuntime(Android运行时库),ApplicationFramework(应用软件架构),Application(应用程序)[4]。
2012年初数据显示,无论设备的出货量还是手机的数据流量都已经成为了手机系统里面的老大,已经完全超过了IOS,黑莓系统,还有称霸十年的塞班系统,使Android系统成为了我们最为喜爱的智能手机系统[5]。
目前,Android系统不仅广泛应用于各种手机设备,而且平板电脑的数量也在急剧上升。
采用Android系统开始广泛流行,主要厂商众多包括HTC、三星、LG、摩托罗拉等,中国大陆厂商如:
华为、中兴、联想等[6]。
目前多媒体蓬勃发展,Android手机设备已经深入到了大众生活。
手机设备上的多媒体应用更加显的流行了。
更是由于3G时代的来临,多媒体功能越来越受到大众的喜欢。
编解码效率的提高对多媒体的性能提高有极大的帮助。
现在的手机上的编解码大体主要分为两类:
分为硬件解码和软件解码两种。
硬件解码的话,音质主要取决于置的解码芯片,而如今的技术发展比较快,更为强劲出色的解码芯片已经不比MP3差了,效率比较高。
而软件解码就是通过CPU的运算进而实现视频音频的播放,使用操作系统的手机一般采用上面这种方法。
当前的智能手机使用的CPU频率已经非常高,并且解码软件也非常成熟,支持解码MP3变得非常轻松的一件事情,输出的音频视频的质量还是非常高[7]。
一般播放器都会识别多种视频格式封装(即文件格式),例如,Coreplayer能播放AVI,WMV,MP4等多种格式,RUN播放器能播放rm,rmvb格式的视频。
Android系统中的的多媒体主要为OpenCore和StageFright。
Android的多媒体引擎OpenCore和StageFright都是通过OpenMAX 作为多媒体问卷的编解码插件,只是没有直接通过OpenMAX 层提供的纯C接口的调用,而是对纯C接口进行了一定的抽象封装。
OpenMAX是无授权费的,实现跨平台的应用程序接口API,目的是使媒体加速组件能够在开发、集成和编程各个环节中能够屏蔽硬件的差别同时实现接口统一,方便调用。
也为设备提供比较全面的编解码器和应用程序来屏蔽硬件。
OpenMAXAPI将会和处理器一起提供,以使库和编解码器的开发者能够高速有效地利用硬件芯片的完整加速潜能,并且无需担心底层的硬件结构[8]。
OpenMAX标准主要是针对嵌入式移动设备和手机移动设备的多媒体软件架构。
在架构底层上为多媒体的编解码和数据处理定义了一套非常完整的统一的编程接口即(OpenMAXILAPI),并且对多媒体数据编解码进行了非常系统的抽象,同时用户可以不用关注底层硬件的细节了。
因此,大多数的多媒体软件和多媒体框架就是通过OpenMAXIL实现了一种可以用统一的方式来让codec和其他多媒体数据实现处理功能,屏蔽了底层硬件的差异性。
本人主要工作
在这个项目开发中,本人主要进行的工作:
1.研究Android系统的多媒体框架。
2.研究OpenMAX 框架的运行机制。
3.设计软件的架构。
设计了OpenMAX框架硬件编解码的处于的层次,与OpenMAX框架硬件编解码的逻辑设计,对硬件控制,数据控制进行了详细的设计。
4.编写OpenMAX 模块的的代码,加入逻辑控制。
5.将功能集成到项目。
6.优化代码,提高编解码效率。
7.测试项目,修改出现的问题。
章节安排
第二章:
对Android系统的介绍,描述Android的结构与多媒体框架的现状。
第三章:
对O