基于Android的OpenMAX框架研究与开发摘要从近几年手机的发展趋势看,智能手机越来越流行,Android手机表现的尤为强劲。
而多媒体播放的娱乐功能显得尤为重要。
如何更好地提高多媒体效率成为了用户选择使用的一大契机。
本文主要研究在Android平台上实现硬件编解码。
主要是jni技术实现数据交换,通过对OpenMAX框架的抽象封装,流程控制,数据输入输出。
从而实现硬件编解码,并且把OpenMAX框架硬件编解码集成到项目中,加强多媒体文件编解码速度,提高性能。
论文的研究结果可以提供一个优秀的OpenMAX硬件编解码框架,为其他Android手机开发者参考。
本文的主要创新点和贡献点如下:1,实现多媒体硬件编解码,提高多媒体文件的编解码效率。
2,对OpenMAX框架的抽象和封装,更加便于开发调用。
3,实现更加精简的代码便于后期维护。
4,加强产品的使用性,提高产品的用户体验。
本文同时介绍了Google Android平台及多媒体框架的工作机制,OpenMAX框架,硬件编解码。
详细分析OpenMAX框架的运行机制。
对Android 和OpenMAX有一个更加详细的了解。
关键词:Android,OpenMAX,多媒体框架,编解码AbstractDevelopment trends of mobile phones in recent years, smart phones become increasingly popular,Android phone is particularly strong. The entertainment feature of multimedia player is particularly important. How to better improve the the Multimedia efficiency has become a great opportunity for the user to choose.This paper mainly studies hardware codec on the Android platform. The main is the jni technology for data exchange, the abstract encapsulation for the OpenMAX framework ,process control, data input and output. In order to achieve hardware codec, and OpenMAX framework hardware codec integrated into the project, to enhance multimedia file encoding and decoding speed, improve performance. The thesis results can provide an excellent the OpenMAX hardware codec framework of reference for other Android phone developer. The main innovation and contribution of this article are as follows:1,multimedia hardware codec, improve the efficiency of encoding and decoding of multimedia documents.2, abstraction and encapsulation of the OpenMAX framework easier to develop.3, to achieve a more streamlined code to facilitate later maintenance.4, to enhance the use of the product, to improve the user experience.This paper describes the working mechanism of the Google Android platform multimedia framework, the OpenMAX framework, hardware codec. Detailed analysis of the operating mechanism of the OpenMAX framework. A more detailed understanding of the Android and OpenMAX.Key Words:Android, OpenMAX, multimedia framework, Hard-codec目录摘要 (i)Abstract ........................................................................................... i i 图目录 (IV)表目录 (V)第1章绪论 (1)1.1 项目背景 (1)1.2 项目研究目的和意义 (1)1.3 国内外现状分析 (2)1.4 本人主要工作 (3)1.5 章节安排 (4)第2章Android系统的介绍 (5)2.1 Android系统的简介 (5)2.2 Android平台的架构 (6)2.2.1 Linux Kernel(Linux内核层) (6)2.2.2 Library(函数库) (6)2.2.3 Android Runtime(Android运行时库) (7)2.2.4 Application Framework(应用软件架构) (7)2.2.5 Application(应用程序) (8)2.3 Android系统的多媒体框架 (8)2.4 本章小结 (9)第3章OpenMAX 介绍 (10)3.1 OpenMAX 的简介 (10)3.2 OpenMAX的概述 (10)3.2.1 OpenMAX标准化接口[17] (10)3.2.1.1 OpenMAX IL(Integration Layer) (10)3.2.1.2 OpenMAX DL(Development Layer) (12)3.2.1.3 OpenMAX AL (Appliction Layer) (12)3.2.2 Android中OpenMAX的使用情况 (15)3.2.3 Android 中OpenMAX的实现的内容 (15)3.2.4 Android中的OpenMAX接口函数 (16)3.3 本章小结 (19)第4章OpenMAX框架硬编解码分析和设计 (20)4.1 OpenMAX 框架硬件编解码结构 (20)4.2 OpenMAX 框架硬件编解码模块及功能分析 (21)4.2.1 JNI模块 (21)4.2.2 硬件解码功能 (22)4.2.2.1 数据转换模块 (22)4.2.2.2 硬件控制模块 (22)4.2.3 硬件编码功能 (23)4.2.3.1 数据转换模块 (23)4.2.3.2 硬件控制模块 (23)4.3 OpenMAX 框架硬件编解码的整体设计 (23)4.3.1 OpenMAX框架硬件编解码的整体结构 (23)4.3.2 OpenMAX框架硬件解码的数据控制结构 (24)4.3.3 OpenMAX框架硬件编码控制结构 (24)4.4 本章小结 (25)第5章OpenMAX框架的硬编解码的实现 (26)5.1 系统整体流程 (26)5.1.1 具体流程 (26)5.1.2 数据处理流程 (27)5.1.3 编解码的参数设置 (28)5.1.3.1 解码芯片参数 (28)5.1.3.2 编码芯片参数 (28)5.2 基于OpenMAX框架硬件解码 (29)5.2.1 基于OpenMAX框架硬件解码整体设计 (29)5.2.2 基于OpenMAX框架硬件解码的设计 (30)5.2.2.1 硬件解码的设置 (30)5.2.2.2 初始化的设计 (30)5.2.2.3 打开的设计 (31)5.2.2.4 关闭的设计 (32)5.2.2.5 数据处理过程具体函数 (32)5.2.3 基于OpenMAX框架硬件解码的实现 (33)5.2.3.1 变量和结构体的定义 (33)5.2.3.2 主要函数 (34)5.3 基于OpenMAX框架硬件编码 (34)5.3.1 基于OpenMAX框架硬件编码整体设计 (34)5.3.2 基于OpenMAX框架硬件编码的设计 (35)5.3.2.1 硬件编码设置 (36)5.3.2.2 初始化的设计 (36)5.3.2.3 打开的设计 (36)5.3.2.4 启动的设计 (37)5.3.2.5 关闭的设计 (38)5.3.2.6 数据处理过程具体函数 (39)5.3.3 基于OpenMAX框架硬件解码的实现 (40)5.3.3.1 变量和结构体的实现 (40)5.3.3.2 主要函数 (41)5.4 本章小结 (42)第6章Android中OpenMAX框架硬编解码的应用 (43)6.1 OpenMAX框架硬件编解码的应用 (43)6.1.1 生成动态库 (43)6.1.2 Jni的数据交互 (44)6.2 MovieStory中OpenMAX框架硬件解码的应用 (44)6.2.1 MovieStory项目的介绍 (44)6.2.2 MovieStory使用OpenMAX框架硬解码 (44)6.2.2.1 OMX开启 (44)6.2.2.2 数据流程 (45)6.2.2.3 OMX的关闭 (45)6.3 Amdv中OpenMAX框架硬件编码应用 (45)6.3.1 Amdv的简单介绍 (45)6.3.2 Amdv使用OpenMAX框架硬编码 (47)6.3.2.1 初始化 (47)6.3.2.2 数据的传入 (47)6.3.2.3 数据的输出 (47)6.3.2.4 退出 (48)6.4 本章小结 (48)第7章OpenMAX效果测试 (49)7.1 效果测试环境 (49)7.2 MovieStory硬件解码效果测试 (49)7.2.1 MovieStory硬件解码效果测试设计 (49)7.2.2 MovieStory硬件解码效果数据对比 (49)7.2.3 MovieStory硬件解码加强点 (49)7.3 Amdv中的硬件编码效果的测试 (50)7.3.1 Amdv硬件编码效果测试设计 (50)7.3.2 Amdv硬件编码效果数据对比 (50)7.3.3 Amdv硬件编码效果加强点 (51)7.4 本章小结 (51)第8章总结 (52)参考文献 (53)作者简历 (55)致谢 (56)图目录图2.1 Android系统的构成 (6)图2.2 Android 多媒体播放整体框架 (8)图3.1 OpenMAX IL 层次结构 (11)图3.2 OpenMAX IL 组件工作流程 (13)图3.3 OpenMAX IL 组件结构 (14)图3.4 OMX Codec解码序列图 (18)图4.1 OpenMAX框架硬件编解码整体架构 (20)图4.2 OpenMAX框架硬编解码的内部结构 (23)图4.3 OpenMAX框架硬解码的数据控制结构 (24)图4.4 OpenMAX框架硬编码的数据控制结构 (25)图5.1 整体流程类图 (26)图5.2 编解码控制流程 (27)图5.3 整体数据流程 (28)图5.4 解码控制流程 (30)图5.5 解码数据流程 (30)图5.6 解码Init函数流程 (31)图5.7 解码Open函数流程 (32)图5.8 解码Close函数流程 (32)图5.9 解码数据处理具体流程 (33)图5.10 编码控制流程 (35)图5.11 编码数据流程 (35)图5.12 编码Init函数流程 (36)图5.13 编码Open函数流程 (37)图5.14 编码ProcStart函数流程 (38)图5.15 编码Close函数流程 (39)图5.16 编码数据处理具体流程 (40)图7.1 MovieStory的运行效果 (50)图7.2 Amdv的运行效果 (51)表目录表5.1 图片解码参数 (28)表5.2 音频解码参数 (28)表5.3 视频解码参数 (28)表5.4 MEDIA_MIMETYPE_AUDIO_AMR_NB参数 (29)表5.5 MEDIA_MIMETYPE_AUDIO_AAC参数 (29)表5.6 MEDIA_MIMETYPE_VIDEO_MPEG4参数 (29)表5.7 MEDIA_MIMETYPE_VIDEO_H263参数 (29)表5.8 MEDIA_MIMETYPE_VIDEO_AVC参数表 (29)表7.1 软件硬件解码效率对比表 (47)表7.2 软件硬件编码效率对比表 (49)第1章绪论本章为本文的绪论,主要介绍了项目的背景,研究的目的和意义,较为详细的介绍了当前Android手机设备的软件编解码和硬件编解码在手机中的使用情况,最后对本人进行的主要工作和本文的章节安排进行描述。