Camera学习-概念篇-MTK_Camera_软件架构

  本文主要介绍MTK Camera软件架构,主要包含三个部分的介绍:

  • 1) Android Camera 架构:Android系统原生架构简要介绍。
  • 2) MTK Camera架构: 简要介绍Mediatek平台在Android系统基础上Camera 的架构。
  • 3) Camera数据流: 介绍在平台端Camera的数据流。

    Android Camera架构

    Android Camera架构

Camera根据Android 架构从上至下可分为

  • 1) Applications: 最上层的应用,编译后生成Camera APK;
  • 2) Application Framework: 主要为Applications提供API;
  • 3) JNI: 使Application Framework和Libraries可交互;
  • 4) Libraries: 包括Camera Framework和Camera Service(camera service和camera client);
  • 5) HAL: 硬件抽象层, 用来链接driver和 Camera Service;
  • 6) Kernel: image sensor driver的实作。

其中2)~4)的部分基本为Android原生的架构和code,Mediatek会有一些拓展,而HAL和Kernel层为Mediatek主要实作的部分,Camera APK是Mediatek基于Android 原生Camera APK修改的应用。

MTK Camare架构

下图为MT6589/82/72/92/88平台基于Android架构上, ,Camera从application到kernel层详细的架构。
MTK Camare架构

  • 1)蓝色部分主要由Java实现(偏向应用层)、黄色为JNI实现(C++,衔接Java层和Native层), 绿色由C++实现(通常称为Native层),而枣红色为C实现(Kernel 层)。
  • 2) HAL libraries为Mediatek在HAL层的实现,主要分Camera HAL和Camera Core两大部分。Camera HAL衔接Camera Service并响应它的需求,实现各个feature的scenario; 而Camera Core提供平台一些通用的数据流控制接口。

Camera数据流

Camera Data Path
说明:

  • 1) TG(Timing Generate):从sensor获取数据,并送给ISP处理。
  • 2) Platform Data Processor: 包括平台在后端对图像数据进行resize、rotate、flip、format convert等处理,它可以同时有两个buffer输出。
    当normal preview时,port1输出给display,port2输出给face detection或者app preview callback
    当normal capture时,port1输出大图给jpeg encoder,port2输出小图给回显和thumbnail encode。
    当video record时,port1输出给display,port2输出给video encoder。