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.
AwesomePlayer
acts as a sink to theOMX Video Decoder
. Hence, it will continuously poll for a new frame that could be available for rendering and processing.When
OMX Video Decoder
completes the decoder, theFillBufferDone
callback of the codec will unblock aread
invoked by theAwesomePlayer
.Once the frame is available, it is subjected to the
A/V
synchronization logic by theAwesomePlayer
module and pushed intoSurfaceTexture
via therender
call. All the aforementioned steps are performed as part ofAwesomePlayer::onVideoEvent
method.The
render
willqueue
the buffer. ThisSurfaceTexture
is one of thelayers
available for the composition to theSurfaceFlinger
.When a new
layer
is available, through a series of steps,SurfaceFlinger
will invoke theHwComposer
to perform the composition of all the relatedlayers
.AOSP
only provides a template or anAPI
for theHwComposer
, the actual implementation of which is left to the vendor.