Search code examples
stagefrightopenmax

Stagefright: OMX Subsystem in Stagefright and OMX Core are running in which process context


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.


Solution

  • 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.