OpenMax多媒体引擎

摘自《Android系统级深入开发—移植与调试》

18.1  OpenMax系统结构和移植内容

OpenMax是一个多媒体应用程序的框架标准。其中,OpenMax IL(集成层)技术规格定义了媒体组件接口,以便在嵌入式器件的流媒体框架中快速集成加速编解码器。

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

在Android的框架层,也定义了由Android封装的OpenMax接口,和标准的接口概念基本相同,但是使用C++类型的接口,并且使用了Android的Binder IPC机制。Android封装OpenMax的接口被StageFright使用,OpenCore没有使用这个接口,而是使用其他形式对OpenMax IL层接口进行封装。

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

clip_image001

图18-1  Android中OpenMax的基本层次结构

18.1.1  OpenMax系统的结构(1)

1.OpenMax总体层次结构

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

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

OpenMax的官方网站如下所示:

http://www.khronos.org/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可以以一种统一的方式来使用编解码和其他多媒体数据处理功能,具有了跨越软硬件平台的移植性

提示:在实际的应用中,OpenMax的三个层次中使用较多的是OpenMax IL集成层,由于操作系统到硬件的差异和多媒体应用的差异,OpenMax的DL和AL层使用相对较少。

clip_image003

图18-2  OpenMax的三个层次

2.OpenMax IL层的结构

OpenMax IL目前已经成为了事实上的多媒体框架标准。嵌入式处理器或者多媒体编解码模块的硬件生产者,通常提供标准的OpenMax IL层的软件接口,这样软件的开发者就可以基于这个层次的标准化接口进行多媒体程序的开发。

OpenMax IL的接口层次结构适中,既不是硬件编解码的接口,也不是应用程序层的接口,因此比较容易实现标准化。

OpenMax IL的层次结构如图18-3所示。

clip_image005

图18-3  OpenMax IL的层次结构

18.1.1  OpenMax系统的结构(2)

图18-3中的虚线中的内容是OpenMax IL层的内容,其主要实现了OpenMax IL中的各个组件(Component)。对下层,OpenMax IL可以调用OpenMax DL层的接口,也可以直接调用各种Codec实现。对上层,OpenMax IL可以给OpenMax AL 层等框架层(Middleware)调用,也可以给应用程序直接调用

OpenMax IL主要内容如下所示。

客户端(Client):OpenMax IL的调用者

组件(Component):OpenMax IL的单元,每一个组件实现一种功能

端口(Port):组件的输入输出接口

隧道化(Tunneled):让两个组件直接连接的方式

OpenMax IL的基本运作过程如图18-4所示。

clip_image006

图18-4  OpenMax IL的基本运作过程

如图18-4所示,OpenMAL IL的客户端,通过调用四个OpenMAL IL组件,实现了一个功能。四个组件分别是Source组件、Host组件、Accelerator组件和Sink组件。Source组件只有一个输出端口;而Host组件有一个输入端口和一个输出端口;Accelerator组件具有一个输入端口,调用了硬件的编解码器,加速主要体现在这个环节上。Accelerator组件和Sink组件通过私有通讯方式在内部进行连接,没有经过明确的组件端口。

OpenMAL IL在使用的时候,其数据流也有不同的处理方式:既可以经由客户端,也可以不经由客户端。图18-4中,Source组件到Host组件的数据流就是经过客户端的;而Host组件到Accelerator组件的数据流就没有经过客户端,使用了隧道化的方式;Accelerator组件和Sink组件甚至可以使用私有的通讯方式。

OpenMax Core是辅助各个组件运行的部分,它通常需要完成各个组件的初始化等工作,在真正运行过程中,重点是各个OpenMax IL的组件,OpenMax Core不是重点,也不是标准。

OpenMAL IL的组件是OpenMax IL实现的核心内容,一个组件以输入、输出端口为接口,端口可以被连接到另一个组件上。外部对组件可以发送命令,还进行设置/获取参数、配置等内容。组件的端口可以包含缓冲区(Buffer)的队列。

组件的处理的核心内容是:通过输入端口消耗Buffer,通过输出端口填充Buffer,由此多组件相联接可以构成流式的处理。

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

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
TensorFlow OpenMax是一个用于图像分类任务的开源工具,可以用于处理和分析深度学习模型的输出概率分布。 OpenMax是一种开源的概率校准框架,旨在提高深度学习模型的不确定性估计。概率校准是指通过调整分类器的概率输出,使其更符合实际概率分布。传统的深度学习模型往往对于属于不同类别的样本,输出的概率很接近1或者0,忽略了模型的不确定性。而OpenMax通过引入Open Set Recognition的概念,对未知样本进行特殊处理,提供更加准确的概率估计。 TensorFlow OpenMax基于TensorFlow框架,提供了一套接口和工具,可以方便地集成到现有的深度学习模型中。通过调用OpenMax接口,可以获取深度学习模型的概率输出,然后使用OpenMax工具对这些概率进行校准。校准的过程包括计算置信度分布和外部期望分布,并进一步计算OpenMax概率。 使用TensorFlow OpenMax可以提高深度学习模型在图像分类任务中的表现。通过校准概率输出,可以更准确地估计模型的不确定性,并能够对未知样本进行更好的处理。这对于一些对模型的鲁棒性要求较高的应用场景非常有用。 总而言之,TensorFlow OpenMax是一个用于图像分类任务的开源工具,可以用于处理和校准深度学习模型的概率输出。它能够提高模型的不确定性估计,并能够对未知样本进行更好的处理,提高模型的鲁棒性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值