File: hardware\libhardware\include\hardware\camera3.h
/**********************************************************************
*
* Camera device definition
*
*/
typedef struct camera3_device {
/**
* common.version must equal CAMERA_DEVICE_API_VERSION_3_0 to identify this
* device as implementing version 3.0 of the camera device HAL.
*
* Performance requirements:
*
* Camera open (common.module->common.methods->open) should return in 200ms, and must return
* in 500ms.
* Camera close (common.close) should return in 200ms, and must return in 500ms.
*
*/
hw_device_t common;
camera3_device_ops_t *ops;
void *priv;
} camera3_device_t;
这个结构体是 camera HAL 核心结构体之一,是对 venor camera HAL 实现的抽象,APP 通过 Framework对底层Camera设备(物理设备和逻辑虚拟设备)的操作都是通过对 camera3_device_t 实例对象来进行的。
- common
Android hardware device 结构体,所有Android OS上的外设在HAL层的通用抽象结构体。 - *ops
Android hardware 给专门给Camera适配实现的一套Camera相关业务的操作方法集。非常重要。后面单独开一篇文章分析。 - *priv
不同SOC平台可能有一些独有的设计,这些设计是Android现有设计无法很好用通用框架实现,这里给出一个 void *指针指向vendor SOC 自己独有的实现内容。
PS:priv空指针在这里的用途与Linux中被广泛使用的private_data指针类似,例如 struct file.private_data。