camera_module结构参考

camera_module结构参考

#include < camera_common.h >

数据字段

硬件模块_t常见的
整数(*获取摄像头数量)(无效)
整数(* get_camera_info )(intcamera_id, structcamera_info *info)
整数(* set_callbacks )(常量camera_module_callbacks_t *回调)
空白(* get_vendor_tag_ops )(vendor_tag_ops_t *ops)
整数(* open_legacy )(const struct hw_module_t *模块,const char *id,uint32_t halVersion,struct hw_device_t **设备)
整数(* set_torch_mode )(const char *camera_id,布尔启用)
整数(*在里面)()
空白 *保留[5]

详细说明

文件camera_common.h646行的定义。

现场文档

摄像头模组的常用方法。这必须camera_module的第一个成员,因为该结构的用户将在已知hw_module_t引用camera_module的上下文中将hw_module_t强制转换为camera_module指针。

camera_module的 common.methods->open 的返回值为:

0:成功打开相机设备。

-ENODEV:由于内部错误,相机设备无法打开。

-EINVAL:输入参数无效,即id无效,和/或模块无效。

-EBUSY:相机设备已为此相机 ID 打开(通过使用此方法或 open_legacy),无论其打开的设备 HAL 版本如何。

-EUSERS:可以同时打开的相机设备的最大数量已经通过此方法或 open_legacy 方法打开。

common.methods->open 的所有其他返回值将被视为 -ENODEV。

文件camera_common.h674行的定义。

int(* get_camera_info)(intcamera_id, structcamera_info *info)

获取相机信息:

返回给定相机设备的静态相机信息。对于相机设备,此信息可能不会改变。

返回值:

0:操作成功

-ENODEV:由于内部错误,无法提供信息。

-EINVAL:输入参数无效,即id无效,和/或模块无效。

版本信息(基于camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_4 或更高版本:

当相机断开连接时,其相机ID将失效。使用此无效相机 ID 调用此方法将获得 -EINVAL 和 NULL 相机静态元数据 ( camera_info.static_camera_characteristics )。

文件camera_common.h727行的定义。

int(* get_number_of_cameras)(void)

获取摄像机数量:

返回可通过相机模块访问的相机设备的数量。相机设备编号为 0 到 N-1,其中 N 是此调用返回的值。 open() 的相机设备名称只是转换为字符串的数字。即,“0”表示摄像机 ID 0,“1”表示摄像机 ID 1。

版本信息(基于camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 或更低版本:

这里的值必须是静态的,并且在第一次调用此方法后不能更改。

CAMERA_MODULE_API_VERSION_2_4 或更高版本:

此处的值必须是静态的,并且必须仅计算具有 CAMERA_FACING_BACK 或 CAMERA_FACING_FRONT 相机朝向值 ( camera_info.faceing ) 的内置相机。 HAL 不得将外部摄像头 ( camera_info.faceing == CAMERA_FACING_EXTERNAL) 包含在此调用的返回值中。框架将使用camera_device_status_change回调来管理外部摄像头的数量。

文件camera_common.h701行的定义。

无效(* get_vendor_tag_ops)(vendor_tag_ops_t *ops)

获取供应商标签操作:

获取查询供应商扩展元数据标签信息的方法。 HAL 应填写所有供应商标签操作方法,或者如果未定义供应商标签,则保持操作不变。

这里使用的vendor_tag_ops结构体定义在:system/media/camera/include/system/vendor_tags.h

版本信息(基于camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1:HAL 模块未提供。框架可能不会调用此函数。

CAMERA_MODULE_API_VERSION_2_2:可由框架调用有效。

文件camera_common.h778行的定义。

int(* 初始化)()

在里面:

在成功加载相机 HAL 库之后,相机服务会在调用任何其他方法之前调用此方法。如果不需要初始化,HAL 模块可能会将其保留为 NULL。

HAL 实现可以使用它来执行初始化和其他一次性操作。

版本信息(基于camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2/2_3:HAL 模块未提供。框架不会调用此函数。

CAMERA_MODULE_API_VERSION_2_4:如果不为 NULL,则框架始终在加载 HAL 模块后、调用任何其他 HAL 模块方法之前调用一次。

返回值:

0:操作成功。

-ENODEV:由于内部错误,初始化无法完成。必须假定 HAL 处于非功能状态。

文件camera_common.h909行的定义。

int(* open_legacy)(const struct hw_module_t *模块,const char *id,uint32_t halVersion,struct hw_device_t **设备)

开放遗产:

如果此相机 HAL 模块支持多个设备 HAL API 版本,则打开特定的旧版相机 HAL 设备。例如,如果相机模块支持同一相机 ID 的 CAMERA_DEVICE_API_VERSION_1_0 和 CAMERA_DEVICE_API_VERSION_3_2 设备 API,则框架可以调用此函数将相机设备作为 CAMERA_DEVICE_API_VERSION_1_0 设备打开。

这是一种可选方法。相机 HAL 模块不需要为每个设备支持多个设备 HAL 版本,并且此类模块可能会针对对此​​方法的所有调用返回 -ENOSYS。对于所有不受支持的旧 HAL 设备 API 版本,它可能会返回 -EOPNOTSUPP。当发生上述情况时,框架将改用普通的 open() 方法(common.methods->open)。

版本信息(基于camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2:HAL 模块未提供。框架不会调用此函数。

CAMERA_MODULE_API_VERSION_2_3:可由框架调用有效。

返回值:

0:成功打开相机设备。

-ENOSYS 不支持此方法。

-EOPNOTSUPP:此方法不支持请求的 HAL 版本。

-EINVAL:输入参数无效,即id无效,和/或模块无效。

-EBUSY:相机设备已为此相机 ID 打开(通过使用此方法或 common.methods->open 方法),无论其打开的设备 HAL 版本如何。

-EUSERS:已通过此方法或 common.methods->open 方法打开可同时打开的最大数量的相机设备。

文件camera_common.h824行的定义。

无效* 保留[5]

文件camera_common.h912行的定义。

int(* set_callbacks)(常量camera_module_callbacks_t *回调)

设置回调:

提供指向 HAL 模块的回调函数指针,以通知框架异步相机模块事件。框架将在初始相机 HAL 模块加载后、首次调用get_number_of_cameras()方法后以及对该模块的任何其他调用之前调用此函数一次。

版本信息(基于camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_0、CAMERA_MODULE_API_VERSION_2_0:

HAL 模块不提供。框架可能不会调用此函数。

CAMERA_MODULE_API_VERSION_2_1:

由框架调用有效。

返回值:

0:操作成功

-ENODEV:由于内部错误,操作无法完成。

-EINVAL:输入参数无效,即回调为空

文件camera_common.h758行的定义。

int(* set_torch_mode)(const char *camera_id, bool 启用)

设置火炬模式:

打开或关闭与给定相机 ID 关联的闪光灯装置的手电筒模式。如果操作成功,HAL 必须通过使用新状态调用camera_module_callbacks.torch_mode_status_change()来通知框架火炬状态。

相机设备具有较高的访问闪光灯单元的优先级。当出现任何资源冲突时,例如调用 open() 打开相机设备,HAL 模块必须通过camera_module_callbacks.torch_mode_status_change()通知框架手电筒模式已关闭,并且手电筒模式状态已变为 TORCH_MODE_STATUS_NOT_AVAILABLE。当打开手电筒模式的资源再次可用时,HAL模块必须通过camera_module_callbacks.torch_mode_status_change()通知框架手电筒模式状态已变为TORCH_MODE_STATUS_AVAILABLE_OFF,以便调用set_torch_mode()

当框架调用set_torch_mode()打开 Flash 单元的手电筒模式时,如果 HAL 无法同时保持多个手电筒模式,HAL 应关闭先前调用set_torch_mode()打开的手电筒模式并通知框架该闪光灯装置的手电筒模式状态已变为 TORCH_MODE_STATUS_AVAILABLE_OFF。

版本信息(基于camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2/2_3:HAL 模块未提供。框架不会调用此函数。

CAMERA_MODULE_API_VERSION_2_4:可由框架调用有效。

返回值:

0:操作成功。

-ENOSYS:相机设备不支持此操作。当且仅当 android.flash.info.available 为 false 时才返回它。

-EBUSY:摄像头设备已在使用中。

-EUSERS:打开手电筒模式所需的资源不可用,通常是因为其他相机设备占用了资源,导致无法使用闪光灯。

-EINVAL:camera_id 无效。

文件camera_common.h878行的定义。


该结构的文档是从以下文件生成的: