OpenMax多媒体引擎

合集下载

索爱XPERIA X10 基本配置,基本设置,及使用设置详细说明

索爱XPERIA X10 基本配置,基本设置,及使用设置详细说明

索爱XPERIA X10 基本配置,基本设置,及使用设置详细说明

基本规格

SonyEricsson Xperia X10

基本规格

尺寸:

119.0 x 63.0 x 13.0 毫米

重量:135.0 克

屏幕:

4英寸,FWVGA(854x480)分辨率,65536色,TFT材质,电容屏

记忆体:

系统内存384MB(实际可用268MB左右).机身储存空间1GB(实际可用465MB),随机配件包含8GB MicroSD卡,最大可扩展至16GB.

系统:

Android

固件版本:

1.6

网络制式:

GSM/GPRS/EDGE 850/900/1800/1900

UMTS/HSPA 900/1700/2100

WiFi:

WiFi 802.11b/g

蓝牙:

Bluetooth 2.1,支持A2DP蓝牙立体声

FM收音机:

不支持

GPS:

支持GPS,支持aGPS网络辅助导航功能

摄像头:

810万像素

照片大小:800万像素4:3/600万像素16:9/200万像素4:3/200万像素16:9

照片场景模式:正常/人像/风景/夜景/夜景人像/海滩和雪/运动/聚会/文档

视频大小:WVGA/VGA/QVGA/短信/Youtube

视频场景模式:正常/人像/风景/夜景/海滩和雪/运动/聚会

防抖

16x数码变焦

对焦模式:单次自动对焦/多次自动对焦/微距/人脸检测/无限远

笑脸快门

人脸识别(最多五个)

自拍记时器

测光模式:中心/平均/点

白平衡:自动/白帜灯/荧光/日光/阴天

内建补光灯(手动开启或关闭)

地理标签(需开启GPS)

娱乐:

3.5毫米耳机接口

利用ARM+NEON+OpenMax+DL技术优化面向CortexA8的H264解码器

利用ARM+NEON+OpenMax+DL技术优化面向CortexA8的H264解码器
HclE姆I
·叩Ⅸ、,CM4PlQ同司Ⅺ]10幽噌西嘲
varl姆·._mlⅨ、,a垤|PlQ同圃Ⅺ如dd昭蛐
l-lar:'姆_I
据所用视频比特流的分析结果,熵 解码,反转量子化和反转变换3种操作 占6%的解码时间。如果比特率更高, 这些例程占用的份额也会相应增加。 OpcnMax DL接口为剩余处理提供了5个 紧密相连的例程,比如,不存在专门的 反转变换加速函数。
测量时,我们用测试工作台运行解 码器,以便测量每个解码视频帧的周期 此外,还测量了缓存未命中、指令数和 数据读取、写入等事件。在真实硬件上 运行性能仿真具有极大的优势,因为通 过脚本可以极快地运行多个仿真,并可 在优化中考虑真实存储器延迟效应。
主要优化步骤及用到的OpenMax DL函数如图l所示,在H.264视频解码 中,插值和解块是最耗时的操作,通常 占解码时间的50-80%。显然,首先需要 优化这些例程。
H.264.烈tt:解码器优化中使用NEON优化
OpenMaxDL例程。
优化中使用的工具
在集成和优化过程中,RealView ProfilerⅣ1等新工具可提高仿真速度并给 出较好的分析数据,具有重要的辅助作 用。借助Profiler,可以轻松发现代码 中的热点,分析C代码中的特定行是如
何进行编译的,是如何调度使用指令集 的。根据分析结果,我们可以重点关注 这些热点,对其进行优化并调度汇编优 化代码,以尽量减少互锁数。

安卓操作系统简介

安卓操作系统简介

安卓操作系统简介

简言:

Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。目前,最新版本为Android 2.4 Gingerbread和Android 3.0 Honeycomb。

系统介绍:

Android是基于Linux内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统,早期由Google开发,后由开放手持设备联盟(Open Handset Alliance)开发。它采用了软件堆层(software stack,又名以软件叠层)的架构,主要分为三部分。底层Linux内核只提供基本功能;其他的应用软件则由各公司自行开发,部分程序以Java编写。

2010年末数据显示,仅正式推出两年的操作系统Android已经超越称霸十年的诺基亚(Nokia)Symbian OS系统,采用Android系统主要手机厂商包括宏达电子(HTC)、三星(SAMSUNG)、摩托罗拉(MOTOROLA)、LG、Sony Ericsson、魅族M9等,使之跃居全球最受欢迎的智能手机平台,Android系统不但应用于智能手机,也在平板电脑市场急速扩张。

系统架构:

应用程序:

Android以Java为编程语言,使接口到功能,都有层出不穷的变化,其中Activity 等同于J2ME的MIDlet,一个Activity 类(class)负责创建视窗(window),一个活动中的Activity就是在foreground(前景)模式,背景运行的程序叫做Service。两者之间通过由ServiceConnection和AIDL连结,达到复数程序同时运行的效果。如果运行中的Activity 全部画面被其他Activity 取代时,该Activity 便被停止(stopped),甚至被系统清除(kill)。

多接口视频编码方案的设计与实现

多接口视频编码方案的设计与实现

多接口视频编码方案的设计与实现

孙宝海;秦丽;刘文怡;张会新

【摘要】针对现有编码系统处理视频格式单一的问题,提出多接口视频编码方案,采用TI DSP(TMS320DM8168)+FPGA构架,将多种常见的视频接口设计在同一系统中,应用FPGA采集视频数据后传送给DM8168,通过软件控制送至各子模块,进行编码.经长期测试结果表明,该系统编码性良好,视频显示无误码,适用性和通用性更强.%In view of the existing coding system to deal with the issue of single video format,the interface video cod-ing scheme has been put forward,using TI DSP(TMS320DM8168)+FPGA architecture. A variety of common video interface is designed in the same system,acquisited video data by the FPGA transmitted to the DM8168,through software control sends to each module to make code. Through long-term test results show that coding of the system is good,video display error free,stronger applicability and versatility.

飞凌OK210硬件手册说明书

飞凌OK210硬件手册说明书

飞凌OK210硬件手册

注意事项与维护

产品使用环境

工作温度:-10°-+75℃

工作湿度:10%-95%

一般注意事项

℃ 不能带电插拔核心板!

℃ 请保持本产品干燥。如果不慎被任何液体泼溅或浸润,请立刻断电并充分晾干。℃ 请不要在多尘、脏乱的环境中使用或存放本产品。

℃ 使用中注意本产品的通风散热,避免温度过高造成元器件损坏。

℃ 请不要将本产品应用在冷热交替环境中,避免结露损坏元器件。

℃ 请不要尝试拆卸本产品。

℃ 请不要粗暴对待本产品,跌落、敲打或剧烈晃动都可能损坏线路及元器件。

℃ 请不要用有机溶剂或腐蚀性液体清洗本产品。

℃ 请不要用颜料涂抹本产品。

℃ 擅自修改或使用未经授权的配件可能损坏本产品,由此造成的损坏将不给予保修。

如果产品出现故障,请联系飞凌技术服务部。

版权声明

本手册所有权由保定市飞凌嵌入式有限公司独家持有。未经本公司的书面许可,任何单

位和个人无权以任何形式复制、传播、转载本手册的任何部分,否则一切后果由违者自负。技术支持与更新

技术支持说明

技术支持范围:

开发板软、硬件资源;

判断开发板是否存在故障;

如何烧写和更新系统;

如何测试和运行开发板提供的程序。

技术支持时间:

周一到周五:9:00—11:30,13:30—17:00。公司按照国家法定节假日安排休息,在此期间无法

提供技术支持,有问题请在论坛发帖。

保修范围及内容说明:

1.凡飞凌出售的产品,除特殊说明外,提供一年的保修服务,(液晶屏提供三个月质保)。

2.保修期间凡产品出现质量问题,均可享受飞凌的免费维修服务,运费由双方均摊。

3.保修期满后出现性能故障和硬件问题,可与飞凌取得联系,飞凌提供有偿的维修服务,视具体情况而定。

Stagefright分析

Stagefright分析

1、StageFright介绍

Androidfroyo版本多媒体引擎做了变动,新添加了stagefright框架,并且默认情况android选择stagefright,并没有完全抛弃opencore,主要是做了一个OMX层,仅仅是对opencore的omx-component部分做了引用。stagefright是在MediaPlayerService 这一层加入的,和opencore是并列的。Stagefright在Android中是以sharedlibrary的形式存在(libstagefright.so),其中的module --AwesomePlayer可用来播放video/audio。AwesomePlayer提供许多API,可以让上层的应用程序(Java/JNI)来调用。

2、StageFright数据流封装

封装流程如下图:

当调用MediaSource.start()方法后,它的内部就会开始从数据源获取数据并解析,等到缓冲区满后便停止。在AwesomePlayer里就可以调用MediaSource的read方法读取解码后的数据。

ν对于mVideoSource来说,读取的数据:在onVideoEvent回调函数中mVideoSource->read(&mVideoBuffer,&options)交给显示模块进行渲染,mVideoRenderer->render(mVideoBuffer);

ν对mAudioSource来说,在play_l函数中用mAudioPlayer对mAudioSource进行封装,然后由mAudioPlayer负责读取数据和播放控制。

omx 解码流程 -回复

omx 解码流程 -回复

omx 解码流程-回复

OMX(OpenMAX)是一种开放的媒体编解码接口,用于实现多媒体应用程序的硬件加速解码。它提供了一组跨平台的API,允许开发人员使用统一的方式访问各种媒体编解码器,并利用硬件加速来提高解码性能。

本文将详细介绍OMX解码流程,包括探索OMX的工作原理、常用的解码器类型、解码步骤以及解码器的配置。

1. 了解OMX的工作原理

OMX是一个开源的跨平台媒体编解码接口规范,它定义了一套标准的API,用于实现多媒体应用程序的硬件加速解码。OMX的主要目标是提供一种统一的接口,使开发人员能够使用相同的方法调用各种媒体编解码器,并充分利用硬件加速来提高解码性能。

2. 常用的解码器类型

OMX支持各种类型的解码器,包括视频解码器和音频解码器。常见的视频解码器有H.264、H.265、MPEG-4、VP8等。常见的音频解码器有AAC、MP3、WMA等。不同类型的解码器具有不同的解码算法和数据格式,因此在使用OMX进行解码之前,需要首先确定所需解码器的类型。

3. 解码步骤

OMX解码流程通常包括以下步骤:

(1) 创建OMX组件:使用OMX库创建一个OMX组件。OMX组件是一个抽象的实体,用于表示特定类型的媒体编解码器。

(2) 配置解码器:通过OMX组件的输入和输出端口来配置解码器。输入端口用于接收待解码的媒体数据,输出端口用于输出解码后的媒体数

据。配置包括设置解码器参数、数据格式、输入缓冲区和输出缓冲区等。

(3) 分配和注册缓冲区:为输入端口和输出端口分配缓冲区,并将它们注册到OMX组件中。

android多媒体框架

android多媒体框架

opencore-编译
编译opencore的代码需要到opencore的根目录下执行mm 命令编译,不能在opencore的子目录下执行mm编译。
重新编译所有代码: find . -name “*.cpp” –o name “*.h”|xargs touch
opencore-调度器
OsclExecScheduler是opencore中一个用户级的调度器,其 主要功能如下: A、该调度器负责实现opencore主线程循环 B、调度需要运行的活动对象(ActiveObject) C、负责对象的定时处理 D、在没有对象需要运行的时候,自动进入休眠状态
opencore-节点(Node)
文件 src/pvmf_node_interface.cpp include/pvmf_node_interface.h 说明 Node接口定义源文件 Node接口定义头文件
以上文件目录均是基于:pvmi/pvmf/目录
opencore-端口(Port)
1、Port用来实现Node之间的媒体数据传输,每个port中都包含一个输入消息队 列和一个输出消息队列用来存放收到和待发送的消息;
opencore-端口(Port)
重要的Port消息:
消息名称 PVMF_PORT_ACTIVITY_OUTGOING_MSG PVMF_PORT_ACTIVITY_INCOMING_MSG PVMF_PORT_ACTIVITY_OUTGOING_QUE UE_BUSY PVMF_PORT_ACTIVITY_OUTGOING_QUE UE_READY PVMF_PORT_ACTIVITY_CONNECTED_PO RT_BUSY PVMF_PORT_ACTIVITY_CONNECTED_PO RT_READY 有消息需要发送 消息说明

安卓操作系统简介

安卓操作系统简介

简言:

Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。目前,最新版本为Android 2.4 Gingerbread和Android 3.0 Honeycomb。

系统介绍:

Android是基于Linux内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统,早期由Google开发,后由开放手持设备联盟(Open Handset Alliance)开发。它采用了软件堆层(software stack,又名以软件叠层)的架构,主要分为三部分。底层Linux内核只提供基本功能;其他的应用软件则由各公司自行开发,部分程序以Java编写。

2010年末数据显示,仅正式推出两年的操作系统Android已经超越称霸十年的诺基亚(Nokia)Symbian OS系统,采用Android系统主要手机厂商包括宏达电子(HTC)、三星(SAMSUNG)、摩托罗拉(MOTOROLA)、LG、Sony Ericsson、魅族M9等,使之跃居全球最受欢迎的智能手机平台,Android系统不但应用于智能手机,也在平板电脑市场急速扩张。

系统架构:

应用程序:

Android以Java为编程语言,使接口到功能,都有层出不穷的变化,其中Activity 等同于J2ME的MIDlet,一个Activity 类(class)负责创建视窗(window),一个活动中的Activity就是在foreground(前景)模式,背景运行的程序叫做Service。两者之间通过由ServiceConnection和AIDL连结,达到复数程序同时运行的效果。如果运行中的Activity 全部画面被其他Activity 取代时,该Activity 便被停止(stopped),甚至被系统清除(kill)。

详细整理OpenMax

详细整理OpenMax

OpenMax的集成层,并阐述了其在Android上的实现和运行过程。

关键字:OMX,多媒体框架,IL,Android,Stagefright

1、OpenMax集成层介绍

OpenMax是一个多媒体应用程序的框架标准。它自上而下分为三层,Application Layer,Integration Layer和Development Layer。应用层规定了应用程序和多媒体中间层的标准接口,使应用程序的移植性更好。集成层定义了多媒体组件的接口,使得多媒体框架能以一种统一的方式访问多媒体Codec和组件,以便在嵌入式流媒体框架中快速集成加速编解码器。。开发层为Codec厂商和硬件厂商提供了一套API,使开发更加便捷。

图1OpenMax的分层结构

OMX集成层由Client、Core、Component和Port组成,Client通过Core得到对应Component的Handle,而后通过命令直接和Component进行交互。每个Component至少有一个Port进行数据交互,如Decoder有一个输入Port接收码流,一个输出Port输出YUV序列。Component内部可能通过消息处理机制完成Client要求的任务。

图2OMX IL层的组成

在Android中,OpenMax IL层,通常可以用于多媒体引擎的插件,Android2.2的多媒体引擎StageFright都可以使用OpenMax作为插件,主要用于编解码(Codec)处理。

在Android的框架层,定义了由Android封装的OpenMax接口,和标准的接口概念基本相同,使用C++类型的接口,并且使用了Android的Binder IPC机制实现了函数远程调用。Android封装OpenMax的接口被StageFright使用。

Android的系统架构

Android的系统架构

Android的系统架构

Android的系统架构和其它操作系统一样,采用了分层的架构。android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。

Android是以Linux为核心的手机操作平台,作为一款开放式的操作系统,随着Android的快速发展,如今已允许开发者使用多种编程语言来开发Android 应用程序,而不再是以前只能使用Java开发Android应用程序的单一局面,因而受到众多开发者的欢迎,成为真正意义上的开放式操作系统。

在Android中,开发者可以使用Java作为编程语言来开发应用程序,也可以通过NDK使用C/C++作为编程语言来开发应用程序,也可使用SL4A来使用其他各种脚本语言进行编程(如:python、lua、tcl、php等等),还有其他诸如:Qt(qt for android)、Mono(mono for android)等一些著名编程框架也开始支持Android编程,甚至通过MonoDroid,开发者还可以使用C#作为编程语言来开发应用程序。另外,谷歌还在2009年特别发布了针对初学者的Android Simple 语言,该语言类似Basic语言。而在网页编程语言方面,JavaScript,ajax,HTML5,jquery、sencha、dojo、mobl、PhoneGap等等都已经支持Android开发。

而在Android系统底层方面,Android使用C/C++作为开发语言。

应用程序(部分)

早期的Android应用程序开发,通常通过Android SDK(Android软件开发包)下使用Java作为编程语言来开发应用程序,但通过不同的软件开发包,则使用的编程语言也不同。

android系统详细介绍

android系统详细介绍

• 这意味着小型手机制造商要使用Honeycomb将不得不等 待一段时间。不过大型设备商如HTC和摩托罗拉,已经可 以使用。这些设备制造商一般安装在平板电脑中。 • 对此,谷歌工程副总裁和Android主管安迪·鲁宾(Andy Rubin)表示:“为了制定平板电脑出货的时间表, 我们 进行了一些折衷设计。我们不想思考如何在手机上运行同 一个软件”。 • 鲁宾还表示,谷歌不想冒险“带来非常糟糕的用户体验”。 今年2月在发布Honeycomb时,谷歌发言人称,目前是专 为平板电脑设计,“以后这些功能将推广到手机上。手机 版的新Android,可能不会被叫做“Honeycomb ”,也可 能是与3.0不同的版本。
• View等同于J2ME的Displayable,程序人员可以通过 View 类与“XML layout”档将UI放置在视窗上,Android 1.5的版本可以利用 View 打造出所谓的 Widgets,其实 Widget只是View的一种,所以可以使用xml来设计layout, HTC的Android Hero手机即含有大量的widget。至于 ViewGroup 是各种layout 的基础抽象类(abstract class),ViewGroup之内还可以有ViewGroup。View的 构造函数不需要再Activity中调用,但是Displayable的是 必须的,在Activity 中,要通过findViewById()来从XML 中 取得View,Android的View类的显示很大程度上是从XML 中读取的。View 与事件(event)息息相关,两者之间通 过Listener 结合在一起,每一个View都可以注册一个 event listener,例如:当View要处理用户触碰(touch) 的事件时,就要向Android框架注册View.OnClickListener。 另外还有Image等同于J2ME的BitMap。

openMAX IL介绍

openMAX IL介绍

OpenMAX Integration Layer介绍

单位名称:无锡东集电子有限责任公司

部门名称:SOC系统研发部关键技术组

报告人:陈小晓

日期:2010-3-23

目录

1. OpenMAX IL的初步认识 (3)

1.1 OpenMAX overview (3)

1.2 OpenMAX IL introduction (3)

1.2 OpenMAX IL features (3)

1.3 OpenMAX IL design philosophy (3)

2. OpenMAX IL的分析 (4)

2.1 Key definitions (4)

2.2 The interface (4)

2.2.1 core (4)

2.2.2 component (6)

2.3 Ports (8)

2.4 Communication types (8)

2.5 Port Reconnection (9)

2.6 Component States (11)

2.7 Component Architecture (12)

2.8 Tunneled Buffer Allocation (12)

2.9 Queues and Flush (14)

2.10 Marking Buffers (14)

2.11 Events and Callbacks (15)

2.12 Buffer Payload (15)

2.13 Buffer Flags and Timestamps (17)

2.14 Synchronization (17)

2.15 Rate Control (18)

openscenegraph三维渲染引擎设计与实践

openscenegraph三维渲染引擎设计与实践

openscenegraph三维渲染引擎设计与实践

OpenSceneGraph是一个开源的三维渲染引擎,用于创建高性能的实时图形应用程序。它提供了一套强大的工具和库,使开发人员能够轻松地创建和渲染复杂的三维场景。

OpenSceneGraph的设计目标是提供一个可扩展和可定制的框架,以满足不同应用的需求。它采用了面向对象的设计模式,将场景中的对象表示为一种叫做"节点"的数据结构。每个节点都可以包含其他节点,形成一个层次结构,这样就可以组织和管理复杂的场景。

在OpenSceneGraph中,节点可以是几何体、纹理、光源、相机等,它们都有各自的属性和行为。通过设置这些属性和行为,开发人员可以控制节点在场景中的位置、旋转、缩放等,从而实现所需的渲染效果。

OpenSceneGraph还提供了一系列的渲染器,用于将场景中的节点转换为可见的图像。这些渲染器使用现代图形硬件加速技术,能够高效地处理大量的几何体和纹理,并提供各种渲染效果,如阴影、反射、抗锯齿等。

除了基本的渲染功能,OpenSceneGraph还支持一些高级特性,如碰撞检测、动态模拟、动画等。开发人员可以利用这些功能,创建更加逼真和交互性强的三维应用程序。

总结起来,OpenSceneGraph是一个功能强大的三维渲染引擎,通过节点的层次结构和各种渲染器,能够实现复杂的三维场景渲染和图像效果。它的设计目标是可扩展和可定制,开发人员可以利用它来创建高性能的实时图形应用程序。

MTKMT6737芯片处理器资料介绍

MTKMT6737芯片处理器资料介绍

MTKMT6737芯片处理器资料介绍

MT6737处理器的出现是针对中低阶市场所研发,以支持LTE Cat-4行动网络的四核心64位智能手机单芯片。

MT6737是联发科技极具成本效益的R.9 Cat-4 LTE解决方案,不但能将模块及内存成本降至最低,符合中低端市场需求,同时具备超越同级产品的性能与电源效能表现。此外,MT6737能在全球范围内支持各式IP多媒体子系统(IMS),支持VoLTE、ViLTE、VoWiFi、RCS 的快速数据传输功能,让消费者感受丰富的移动体验。

该应用程序处理器是一个四核ARM Cortex-A53 MPCoreTM,包括一个霓虹灯多媒体处理引擎,它提供支持最新OpenOS及其所需的处理能力。如网页浏览、电子邮件、gps导航和游戏。所有这些都是在高分辨率触摸屏上观看,并通过2D和3D图形加速增强了图形。此外,还包括多标准视频加速器和高级音频子系统,以提供先进的多媒体应用程序和服务,如流媒体音频和视频、多种生态器和编码器,如H.264和MPEG-4。音频支持包括fr、rr、efr、amr fr、amr hr和宽带amr vocoder、复音铃声和回声cancella等高级音频功能。免提电话操作和噪音消除.

MT6737还提供优质的多媒体、显示与拍照摄像功能,适用于全球各种高性价的手机平板设备,让消费者享有丰富又实惠的使用体验。仅用512MB的内存便能顺畅运行Android M操作系统。

此外,MT6737的电源效率表现大幅超越同类产品,在GPS与FM模式的耗电量相对较低。性能方面,MT6737搭载Cortex-A53的四核心64位处理器,以及Mali T720 MP 图像处理器,能顺畅运行各式3D游戏等高端Android应用程序。

openMAX介绍

openMAX介绍

OpenMax的摘要

1.OpenMax总体层次结构

OpenMax是一个多媒体应用程序的框架标准,由NVIDIA公司和Khronos在2006年推出。现在最新的版本是1.1。

OpenMax实际上分成三个层次,自上而下分别是,OpenMax AL(应用层),OpenMax IL(集成层)和OpenMax DL(开发层)。三个层次的内容分别如下所示。

第一层:OpenMax AL(Appliction Layer,应用层)

这一层是多媒体应用和多媒体中间层的标准接口,它使得多媒体应用在多媒体接口上具有可移植性。OpenMAX AL 层是OpenMAX 规范 API 集得最上层接口,对于上层多媒体应用的开发只需要关注 OpenMax AL 层的接口,因此开发者只需要调用 AL 层的相应接口函数就可以完成对多媒体的开发。

第二层:OpenMax IL(Integration Layer,集成层)

这一层使得多媒体应用和多媒体框架可以以统一的方式访问多媒体编解码组件和底层的组件,多媒体编解码组件可以是硬件编解码和软件编解码。在架构底层上位多媒体的编解码和数据处理定义了一套统一的编程接口.OpenMax IL API,为用户屏蔽了底层的细节。IL的主要目的是使用特征集合为编解码器提供一个系统抽象,为解决多个不同媒体系统之间轻便性的问题。

第三层:OpenMax DL(Development Layer,开发层)

这一层包含了视频、音频、图像编解码使用的函数集合,这些函数可以由芯片或硬件厂商对新处理器进行实现和优化,然后编解码供应商使用它来编写更广泛的编解码器功能。它包括音频信号的处理功能,如FFT和filter,图像原始处理,如颜色空间转换、视频原始处理,以实现例如MPEG-4、H.264、MP3、AAC 和JPEG等编解码器的优化。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Android OpenMax的基本层次结构如图18-1所示。

OpenMax是无授权费的,跨平台的应用程序接口API,通过使媒体加速组件能够在开发、集成和编程环节中实现跨多操作系统和处理器硬件平台,提供全面的流媒体编解码器和应用程序便携化。

OpenMax的官方网站如下所示:

/openmax/

OpenMax实际上分成三个层次,自上而下分别是,OpenMax DL(开发层),OpenMax IL(集成层)和OpenMax AL(应用层)。三个层次的内容分别如下所示。

第一层:OpenMax DL(Development Layer,开发层)

OpenMax DL定义了一个API,它是音频、视频和图像功能的集合。供应商能够在一个新的处理器上实现并优化,然后编解码供应商使用它来编写更广泛的编解码器功能。它包括音频信号的处理功能,如FFT和filter,图像原始处理,如颜色空间转换、视频原始处理,以实现例如MPEG-4、H.264、MP3、AAC和JPEG 等编解码器的优化。

第二层:OpenMax IL(Integration Layer,集成层)

OpenMax IL作为音频、视频和图像编解码器能与多媒体编解码器交互,并以统一的行为支持组件(例如,资源和皮肤)。这些编解码器或许是软硬件的混合体,对用户是透明的底层接口应用于嵌入式、移动设备。它提供了应用程序和媒体框架,透明的。S编解码器供应商必须写私有的或者封闭的接口,集成进移动设备。IL的主要目的是使用特征集合为编解码器提供一个系统抽象,为解决多个不同媒体系统之间轻便性的问题。

第三层:OpenMax AL(Appliction Layer,应用层)

OpenMax AL API在应用程序和多媒体中间件之间提供了一个标准化接口,多媒体中间件提供服务以实现被期待的API功能。

--------------------------------------------------------------------------------------------------- OpenMax的三个层次如图18-2所示。

OpenMax API将会与处理器一同提供,以使库和编解码器开发者能够高速有效地利用新器件的完整加速潜能,无须担心其底层的硬件结构。该标准是针对嵌入式设备和移动设备的多媒体软件架构。在架构底层上为多媒体的编解码和数据处理定义了一套统一的编程接口,对多媒体数据的处理功能进行系统级抽象,为用户屏蔽了底层的细节。因此,多媒体应用程序和多媒体框架通过OpenMax IL

OpenMAL IL中一个组件的结构如图18-5所示。

Android系统的一些部分对OpenMax IL层进行使用,基本使用的是标准OpenMax IL层的接口,只是进行了简单的封装。标准的OpenMax IL实现很容易以插件的形式加入到Android系统中。

Android的多媒体引擎OpenCore和StageFright都可以使用OpenMax作为多媒体编解码的插件,只是没有直接使用OpenMax IL层提供的纯C接口,而是对其进行了一定的封装(C++封装)。

在Android2.x版本之后,Android的框架层也对OpenMax IL层的接口进行了封装定义,甚至使用Android中的Binder IPC机制。Stagefright使用了这个层次的接口,OpenCore没有使用。

提示:OpenCore使用OpenMax IL层作为编解码插件在前,Android框架层封装OpenMax接口在后面的版本中才引入。

18.1.2 Android OpenMax实现的内容

Android中使用的主要是OpenMax的编解码功能。虽然OpenMax也可以生成输入、输出、文件解析-构建等组件,但是在各个系统(不仅是Android)中使用的最多的还是编解码组件。媒体的输入、输出环节和系统的关系很大,引入OpenMax标准比较麻烦;文件解析-构建环节一般不需要使用硬件加速。编解码组件也是最能体现硬件加速的环节,因此最常使用。

在Android中实现OpenMax IL层和标准的OpenMax IL层的方式基本,一般需要实现以下两个环节。

编解码驱动程序:位于Linux内核空间,需要通过Linux内核调用驱动程序,通常使用非标准的驱动程序。

OpenMax IL层:根据OpenMax IL层的标准头文件实现不同功能的组件。Android中还提供了OpenMax的适配层接口(对OpenMax IL的标准组件进行封装适配),它作为Android本地层的接口,可以被Android的多媒体引擎调用。

18.2 OpenMax的接口与实现

18.2.1 OpenMax IL层的接口(1)

OpenMax IL层的接口定义由若干个头文件组成,这也是实现它需要实现的内容,它们的基本描述如下所示。

OMX_Types.h:OpenMax Il的数据类型定义

OMX_Core.h:OpenMax IL核心的API

OMX_Component.h:OpenMax IL 组件相关的API

OMX_Audio.h:音频相关的常量和数据结构

OMX_IVCommon.h:图像和视频公共的常量和数据结构

OMX_Image.h:图像相关的常量和数据结构

OMX_Video.h:视频相关的常量和数据结构

OMX_Other.h:其他数据结构(包括A/V 同步)

OMX_Index.h:OpenMax IL定义的数据结构索引

OMX_ContentPipe.h:内容的管道定义

提示:OpenMax标准只有头文件,没有标准的库,设置没有定义函数接口。对于实现者,需要实现的主要是包含函数指针的结构体。

其中,OMX_Component.h中定义的OMX_COMPONENTTYPE结构体是OpenMax IL层的核心内容,表示一个组件,其内容如下所示:

[cpp]view plaincopyprint?

1.typedef struct OMX_COMPONENTTYPE

2.{

3.OMX_U32 nSize; /* 这个结构体的大小 */

4.OMX_VERSIONTYPE nVersion; /* 版本号 */

5.OMX_PTR pComponentPrivate; /* 这个组件的私有数据指针. */

6.

7./* 调用者(IL client)设置的指针,用于保存它的私有数据,传回给所有的

回调函数 */

8.OMX_PTR pApplicationPrivate;

9./* 以下的函数指针返回OMX_core.h中的对应内容 */

10.OMX_ERRORTYPE (*GetComponentVersion)(/* 获得组件的版本*/

11.OMX_IN OMX_HANDLETYPE hComponent,

12.OMX_OUT OMX_STRING pComponentName,

13.OMX_OUT OMX_VERSIONTYPE* pComponentVersion,

14.OMX_OUT OMX_VERSIONTYPE* pSpecVersion,

15.OMX_OUT OMX_UUIDTYPE* pComponentUUID);

16.OMX_ERRORTYPE (*SendCommand)(/* 发送命令 */

17.OMX_IN OMX_HANDLETYPE hComponent,

18.OMX_IN OMX_COMMANDTYPE Cmd,

相关文档
最新文档