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。