Stagefright的編解碼功能是利用OpenMAX框架,而且用的還是OpenCORE之OMX的實作,我們來看一下Stagefright和OMX是如何運作的。
(1) OMX_Init
OMXClient mClient;
AwesomePlayer::AwesomePlayer() { mClient.connect(); }
status_t OMXClient::connect() { mOMX = service->getOMX(); }
sp<IOMX> MediaPlayerService::getOMX() { mOMX = new OMX; }
OMX::OMX() : mMaster(new OMXMaster)
OMXMaster::OMXMaster() { addPlugin(new OMXPVCodecsPlugin); }
OMXPVCodecsPlugin::OMXPVCodecsPlugin() { OMX_MasterInit(); }
OMX_ERRORTYPE OMX_MasterInit() <-- under OpenCORE { return OMX_Init(); }
|
(2) OMX_SendCommand
OMXCodec::function_name() { mOMX->sendCommand(mNode, OMX_CommandStateSet, OMX_StateIdle); } status_t OMX::sendCommand(node, cmd, param) { return findInstance(node)->sendCommand(cmd, param); } status_t OMXNodeInstance::sendCommand(cmd, param) { OMX_SendCommand(mHandle, cmd, param, NULL); }
|
(3)其他作用在 OMX 元件的指令
其他作用在OMX元件的指令也和OMX_SendCommand的call path一樣,請見下表:
OMXCodec
|
OMX
|
OMXNodeInstance
|
|
useBuffer
|
useBuffer (OMX_UseBuffer)
|
|
getParameter
|
getParameter (OMX_GetParameter)
|
|
fillBuffer
|
fillBuffer (OMX_FillThisBuffer)
|
|
emptyBuffer
|
emptyBuffer (OMX_EmptyThisBuffer)
|
(4) Callback Functions
OMX_CALLBACKTYPE OMXNodeInstance::kCallbacks = { &OnEvent, <--------------- omx_message::EVENT &OnEmptyBufferDone, <----- omx_message::EMPTY_BUFFER_DONE &OnFillBufferDone <------- omx_message::FILL_BUFFER_DONE }
|
分享到:
相关推荐
Stagefright是Android平台上的核心多媒体框架,负责处理多媒体数据的解码、渲染和传输。本篇将深入探讨Stagefright的工作原理及其在Android系统中的作用。 一、Stagefright概述 Stagefright自Android 2.2(Froyo)...
Stagefright 框架在 Android 中以 shared library 的形式存在,名为 libstagefright.so,其中的 AwesomePlayer 模块可以用来播放视频和音频。AwesomePlayer 提供了许多 API,可以让上层的应用程序(Java/JNI)来调用...
Stagefright 框架具有简洁的架构和良好的跨平台移植性,是 Android 多媒体架构中的重要组件。 Stagefright 框架的架构 Stagefright 框架由多个模块组成,每个模块负责不同的多媒体处理任务。 AwesomePlayer 是 ...
stageFright_OpenMax系统.doc,对Android2.3的 stagefright框架和openMAx的深入分析
简述了android 的stagefright多媒体 框架 和 openmax 框架
首先,Stagefright框架是基于OMX(OpenMAX Integration Layer)构建的,OMX是一个用于多媒体编解码的标准化接口。OMXClient和OMXCodec是与OMX交互的组件,负责多媒体内容的编解码处理。OMXSurfaceFlinger负责在...
在深入探讨StageFright和OpenMAX的运作之前,我们先简要了解这两个概念。StageFright是Android操作系统中的多媒体框架,负责处理音频、视频的编解码任务。而OpenMAX(Open Media Acceleration API)则是一种跨平台的...
在Android系统中,多媒体处理是不可或缺的一部分,而Stagefright和OpenCore是两个重要的多媒体框架。它们各自在不同的时期和环境下承担着Android平台上的多媒体播放和处理任务。下面将详细对比这两个框架,以便理解...
在Android 2.3版本之前,OpenCORE是主要的多媒体框架,但其复杂的架构和维护成本促使Google引入了更为简洁的Stagefright框架。Stagefright自Android 2.0开始逐渐崭露头角,并在后续版本中逐步取代OpenCORE,成为...
其中,AwesomePlayer是Stagefright框架中负责视频和音频播放的关键模块,它提供了丰富的API接口,供上层应用程序(Java或JNI)调用进行多媒体操作。 当一个视频播放请求在Java层发起时,通常会执行以下步骤: 1. ...
标题中的"Stagefright-CVE-2015-3864"是一个重要的安全漏洞,它涉及到Android操作系统中的多媒体处理框架Stagefright。在2015年,这个漏洞被公开,它允许攻击者通过恶意MMS( Multimedia Messaging Service,多媒体...
因此,为了保证系统的安全性,Android开发者不断修复这些漏洞,并加强了对Stagefright框架的审查和安全更新。 总结来说,Stagefright是Android系统中处理多媒体内容的关键组件,它简化了媒体处理流程,提高了性能,...
stagefright + omx小结 stagefright + omx小结 stagefright + omx小结 stagefright + omx小结 stagefright + omx小结 stagefright + omx小结 stagefright + omx小结
在Android系统中,Stagefright框架负责多媒体内容的播放,包括HTTP Live Streaming(HLS)。本文将深入探讨Stagefright处理HLS的缓冲机制,同时也会涉及到Android Binder机制,它是Android系统中进程间通信(IPC)的...
StageFright是Android系统中用于多媒体处理的核心框架,负责音频、视频的编码和解码工作。它采用组件化的架构,通过一系列可插拔的模块来实现媒体数据的处理,这其中包括解码器、源输入、渲染器等关键组件。本文将...
在Android操作系统中,Stagefright和OpenMAX(OMX)是两个关键的多媒体处理框架,它们对于处理音频、视频等媒体内容起着至关重要的作用。下面将对这两个概念进行深入解析。 1. **Stagefright**: Stagefright是...
本文详细介绍了Android多媒体框架下Stagefright的功能扩展策略,重点阐述了采用桥接设计模式以及整合FFmpeg框架来开发适配Stagefright的解包装和解码插件的过程。这种扩展方法能够使Android多媒体框架支持更多种类的...