1

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?

mopodafordeya
  • 635
  • 1
  • 9
  • 26

2 Answers2

1

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.

Robin
  • 10,052
  • 6
  • 31
  • 52
  • Yes, In the vendor/sony/lagan/proprietary/lib folder. There are a few libraries that can implement Mobile Bravia Engines, such as: libOmxEvrcDec.so, libl420colorconvert.so and libmm_color_converter.so, etc. According to Sony's article, it says the BE is done in software during the decoding phase, is it possible to test which library does that? Thanks – mopodafordeya Oct 08 '13 at 13:00
1

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.

Ganesh
  • 5,880
  • 2
  • 36
  • 54
  • in the vendors folder, there is a hwcomposer.msm8960.so. Could you please how this library is called by Awesomeplayer? also, could you please explain what's msm8960 stands for? Much appreciated! – mopodafordeya Oct 08 '13 at 18:08
  • 1
    @FangBoy I have edited my post with a brief flow. If you require more details, please feel free to post another specific query. `MSM8960` stands for a Qualcomm's Snapdragon chip. More info at: https://developer.qualcomm.com/mobile-development/development-devices/snapdragon-s4-msm8960-mdps . The `HwComposer` has been tuned to the specific `SoC` and hence you are observing the specific package. – Ganesh Oct 09 '13 at 00:09
  • The article provided by the first link says: a software layer is applied to the decoding step for images and video, where the Mobile BRAVIA® Engine processing is done in real-time. Does that mean BE2 is loaded in other dynamic libraries? since hwcomposer is for SoCs, for example, libOmxEvrcDec.so and libmm_color_converter.so. btw, how does these libraries gets called by the AOSP source code? Thanks! – mopodafordeya Oct 09 '13 at 13:54