I am facing some issues with Stagefright command line utility where I am unable to understand if the OMX
subsystem (OMX
, OMXMaster
) in Stagefright
and OMX
core are running in the current application's process or different process. Which part of the code in Stagefright
explains the communication between OMXCodec
and OMX
subsystem. There is no much information in google. I kindly request the readers to give explanation on these concepts.
When AwesomePlayer
object is created, mClient.connect
is called which basically invokes the OMXClient
's connect method.
In the implementation OMXClient::connect
, one can observe that media.player
service is retrieved through with mOMX
is initialized as can be observed from here.
MediaPlayerService
is registered through the instantiation invoked by MediaServer
as here.
In other words, OMX
native implementation is running in MediaServer
process where as the proxy is running in the caller's context which could be the shell in case of Stagefright
command line utility.
When a new component is allocated, the component could be a SoftOMXComponent
or a HW
accelerated component. The SoftOMXComponent
is created in the caller's context, whereas the HW
accelerated component is created in MediaServer
. This is managed through 2 variables mLocalOMX
and mRemoteOMX
as here.