[RK3399][Android7.1] Camera中的不同api版本介绍

本文详细介绍了基于RK3399平台、运行Android 7.1的设备中,Camera API的不同版本,包括Camera API、Module API、Device API和HAL API。内容涉及各API版本的功能差异、接口调用过程,以及版本间的相互影响。重点讨论了Camera API的v1和v2版本,并解释了模块API如何影响设备API的选择以及它们与HAL版本的关系。
摘要由CSDN通过智能技术生成

Platform: rk3399
OS: Android 7.1
Kernel: v4.4.83

概述:

  随着系统的升级,Camera的版本也跟着一起升级,升级的本质无非就是接口的更新或增加,以下的相机框图可以看到各个层的版本差异以及调用过程。

这里写图片描述


不同层次有不同类型的api版本,依次是Camera API, Module API, Device API, HAL API。

Camera API:

Camera API位于Java层,现在有v2和v1两个版本,两者差异较大,摘网友一段差异说明:

功能上api2提供了更加细致的控制功能,api1子系统被设计为具备高级控制功能的黑盒,能够发出请求,但无法控制图像的缓冲区和元数据,无法再帧层面控制传感器的特性,无法通过访问和修改元数据信息(如3A信息)对捕获的帧应用任何增强功能,重新设计api2旨在大幅提高应用程序控制摄像头子系统的能力,性能也有一定的提升。

Module API:

  CameraService会去根据module api版本决定某些接口是否要调用,这些接口是相应版本对应增加的,例如服务创建时(onFirstRef()) 当api>2.2之后才调用setUpVendorTags().

if (mModule->getModuleApiVersion() >= CAMERA_MODULE_API_VERSION_2_2) {
    setUpVendorTags();
}

版本以及对应接口定义和注释可在 hardware/libhardware/include/hardware/camera_common.h 中看到:
定义:

/**
 * All module versions <= HARDWARE_MODULE_API_VERSION(1, 0xFF) must be treated
 * as CAMERA_MODULE_API_VERSION_1_0
 */
#define CAMERA_MODULE_API_VERSION_1_0 HARDWARE_MODULE_API_VERSION(1, 0)
#define CAMERA_MODULE_API_VERSION_2_0 HARDWARE_MODULE_API_VERSION(2, 0)
#define CAMERA_MODULE_API_VERSION_2_1 HARDWARE_MODULE_API_VERSION(2, 1)
#define CAMERA_MODULE_API_VERSION_2_2 HARDWARE_MODULE_API_VERSION(2, 2)
#define CAMERA_MODULE_API_VERSION_2_3 HARDWARE_MODULE_API_VERSION(2, 3)
#define CAMERA_MODULE_API_VERSION_2_4 HARDWARE_MODULE_API_VERSION(2, 4)

#
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值