Camera Service
MDEP Teams Camera Software Architecture
The Camera sub-system enumerates and manages the underlying camera modules along with post processing of the captured RAW frames through Image Signal Processor (ISP) to produce high quality images and videos for local storage and/or real-time streaming.
Camera Service is a main component that applications interact with via the Camera API with camera subsystem. Camera Service receives application requests via binder calls and services them by further interacting with Camera Provider HAL.
MDEP platform is aimed at supporting multiple SoC vendors and form-factors. In order to have a portable and scalable camera extension design across vendors and form-factors, MDEP camera hardware module is introduced to intercept the framework requests for extensions without impacting MDEP Camera Provider code at all. MDEP camera hardware module implements the Hardware Module interface defined by MDEP (which is currently used by SoC vendors to implement the Camera HAL functionality). This module may in turn modify the framework request and eventually delegate them further to vendor’s camera hardware modules to get the basic camera streams. The camera extensions are expected to and then can have post processing before sending the desired output to the framework.
Camera HAL current vs new design (with MDEP extensions)
MDEP camera provider
Camera provider provides basic access to camera devices in a system. It allows querying of the camera presence, provides updates about changes in their status, such as connected and disconnected. It also facilitates camera information query for all cameras present in the system. Camera service gets this information at bootup from camera provider and caches it to fulfil its client requests in the future. Camera provider also supports dynamic enumeration of cameras through the cameraDeviceStatusChange()
callback. Multiple camera provider HALs may be present in a single system.
MDEP camera hardware module
MDEP camera hardware module is introduced to re-route the capability enumeration and framework requests through this module for plugging MDEP camera extensions which are transparent to the camera provider and vendor HAL implementations (which are loaded using vendor camera hardware module).
Camera extensions
MDEP camera extension module is planned to host the core MDEP camera decisions like how cameras can be enumerated in a generic way by hiding the underlying hardware variations and capability additions as well as hosting MDEP specific image/video post processing (e.g., scene analysis, auto framing etc.). The performance framework and telemetry support will also be wrapped inside this module.