概述
OpenHarmony相机驱动框架模型对上实现相机HDI(Hardware Device Interface)接口,对下实现相机Pipeline模型,管理相机各个硬件设备。
该驱动框架模型内部分为三层,依次为HDI实现层、框架层和设备适配层,各层基本概念如下:
- HDI实现层:实现OHOS(OpenHarmony Operation System)相机标准南向接口。
- 框架层:对接HDI实现层的控制、流的转发,实现数据通路的搭建,管理相机各个硬件设备等功能。
- 设备适配层:屏蔽底层芯片和OS(Operation System)差异,支持多平台适配。
图 1 Camera驱动模块架构图
目录
- Camera模块目录表如下:
/drivers/peripheral/camera
├── hal # camera模块的hal层代码
│ ├── adapter # camera hal平台适配层的实现
│ ├── buffer_manager # camera hal统一的Buffer管理
│ ├── device_manager # 提供camera hal层设备管理能力,包括设备枚举、设备能力查询等
│ ├── hdi_impl # camera hal HDI的具体实现
│ ├── include # camera hal层内部的头文件
│ ├── init # camera hal层HDI接口使用样例实现
│ ├── pipeline_core # camera hal层pipeline核心代码
│ ├── test # camera hal层测试代码实现
│ └── utils # camera hal层工具类代码,目前提供的是watchdog
├── hal_c # 提供C实现的HAL接口
│ ├── hdi_cif # C实现的HDI接口适配代码
│ └── include # C形式的HDI接口
└── interfaces # camera hal对上层服务提供的驱动能力接口
├── hdi_ipc # IPC模式的HDI实现
├── hdi_passthrough # 直通模式的HDI实现
└── include # camera hal对外提供的HDI定义
接口说明
-
icamera_device.h
功能描述 接口名称 获取流控制器 CamRetCode GetStreamOperator(
const OHOS::sptr<IStreamOperatorCallback> &callback,
OHOS::sptr<IStreamOperator> &streamOperator)更新设备控制参数 CamRetCode UpdateSettings(const std::shared_ptr<CameraSetting> &settings) 设置Result回调模式和回调函数 CamRetCode SetResultMode(const ResultCallbackMode &mode) 获取使能的ResultMeta CamRetCode GetEnabledResults(std::vector<MetaType> &results) 使能具体的ResultMeta CamRetCode EnableResult(const std::vector<MetaType> &results) 禁止具体的ResultMeta CamRetCode DisableResult(const std::vector<MetaType> &results) 关闭Camera设备 void Close() -
icamera_device_callback.h
功能描述 接口名称 设备发生错误时调用,由调用者实现,用于返回错误信息给调用者 void OnError(ErrorType type, int32_t errorCode) 上报camera设备相关的metadata的回调 void OnResult(uint64_t timestamp, const std::shared_ptr<CameraMetadata> &result) -
icamera_host.h
功能描述 接口名称 设置ICameraHost回调接口 CamRetCode SetCallback(const OHOS::sptr<ICameraHostCallback> &callback) 获取当前可用的Camera设备ID列表 CamRetCode GetCameraIds(std::vector