Question

I found the AOSP source code from Google and also retrieved vendor's info from https://github.com/sonyxperiadev/device-sony-sgp321

Sony added its Bravia Engine library to AOSP to improve image and video quality. It can either be called in libstagefright's awesomelocalrenderer or called at the decoding phase, when OMX addPlugin is called.

I searched both places, the code there are the same compare with other native AOSP source code. I would like to know how does Sony use its BE library?

Was it helpful?

Solution

Bravia engine is mainly employed for video/image post-processing prior to rendering on the framework. There is an interesting link at http://developer.sonymobile.com/2012/06/21/mobile-bravia-engine-explained-video/.

In AOSP, I presume the user settings from the menu are read and subsequent filtering is enabled/applied in SurfaceFlinger or HwComposer parts of the framework. Another link of interest could be: http://blog.gsmarena.com/heres-what-sony-ericsson-mobile-bravia-engine-really-does-review/

EDIT: Interaction between Video Decoder - AwesomePlayer - HwComposer

The following is a summary of interactions between the different actors in the playback and composition pipeline.

  1. AwesomePlayer acts as a sink to the OMX Video Decoder. Hence, it will continuously poll for a new frame that could be available for rendering and processing.

  2. When OMX Video Decoder completes the decoder, the FillBufferDone callback of the codec will unblock a read invoked by the AwesomePlayer.

  3. Once the frame is available, it is subjected to the A/V synchronization logic by the AwesomePlayer module and pushed into SurfaceTexture via the render call. All the aforementioned steps are performed as part of AwesomePlayer::onVideoEvent method.

  4. The render will queue the buffer. This SurfaceTexture is one of the layers available for the composition to the SurfaceFlinger.

  5. When a new layer is available, through a series of steps, SurfaceFlinger will invoke the HwComposer to perform the composition of all the related layers.

  6. AOSP only provides a template or an API for the HwComposer, the actual implementation of which is left to the vendor.

OTHER TIPS

My guess is that all vendor specific binaries are just implementing the standard interface defined by Android/OMX.

And these engine is complied into shared objects which can be found at /system/vendor directory.

The Android system just have to look at the directory and load the necessary shared objects.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top