camera_info结构参考

camera_info结构参考

#include < camera_common.h >

数据字段

整数面对
整数方向
uint32_t设备版本
常量camera_metadata_t *静态相机特性
整数资源成本
字符**冲突设备
尺寸_t冲突设备长度

详细说明

文件camera_common.h161行的定义。

现场文档

char** 冲突设备

表示为 NULL 终止字符串的相机设备 ID 数组,指示在使用该相机设备时无法同时打开的其他设备。

该字段旨在用于指示该相机设备是多个其他相机设备的组合,或者具有禁止同时使用的硬件依赖性。如果不存在依赖关系,则该字段中可能会返回 NULL 来指示这一点。

当此相机设备打开时,相机服务永远不会同时打开此列表中的任何设备。

相机服务不会清除此字段中指向的字符串,并且在插入该设备时必须保留这些字符串。

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

CAMERA_MODULE_API_VERSION_2_3 或更低版本:

无效。可以假定为 NULL。不要阅读该字段。

CAMERA_MODULE_API_VERSION_2_4 或更高版本:

始终有效。

文件camera_common.h404行的定义。

size_t 冲突设备长度

冲突设备字段中给出的数组长度。

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

CAMERA_MODULE_API_VERSION_2_3 或更低版本:

无效。可假定为 0。请勿读取该字段。

CAMERA_MODULE_API_VERSION_2_4 或更高版本:

始终有效。

文件camera_common.h419行的定义。

uint32_t 设备版本

camera_device_t.common.version 的值。

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

CAMERA_MODULE_API_VERSION_1_0:

无效。可以假设为 CAMERA_DEVICE_API_VERSION_1_0。不要阅读该字段。

CAMERA_MODULE_API_VERSION_2_0 或更高版本:

始终有效

文件camera_common.h219行的定义。

整体面

相机面向的方向。请参阅 system/core/include/system/camera.h 了解面向相机的定义。

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

CAMERA_MODULE_API_VERSION_2_3 或更低版本:

它应该是 CAMERA_FACING_BACK 或 CAMERA_FACING_FRONT。

CAMERA_MODULE_API_VERSION_2_4 或更高版本:

它应该是 CAMERA_FACING_BACK、CAMERA_FACING_FRONT 或 CAMERA_FACING_EXTERNAL。

文件camera_common.h177行的定义。

整体方向

相机图像的方向。该值是相机图像需要顺时针旋转的角度,以便它以其自然方向正确显示在显示屏上。它应该是 0、90、180 或 270。

例如,假设设备具有自然高的屏幕。后置摄像头传感器横向安装。你正在看着屏幕。如果摄像头传感器的顶部与屏幕的右边缘自然方向对齐,则该值应为 90。如果前置摄像头传感器的顶部与屏幕的右侧对齐,则该值应为 90。是270。

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

CAMERA_MODULE_API_VERSION_2_3 或更低版本:

在所有camera_module版本中有效。

CAMERA_MODULE_API_VERSION_2_4 或更高版本:

如果相机朝向为 CAMERA_FACING_BACK 或 CAMERA_FACING_FRONT,则有效;如果相机朝向为 CAMERA_FACING_EXTERNAL,则无效。

文件camera_common.h202行的定义。

int 资源成本

使用此相机的总资源“成本”,表示为 [0, 100] 范围内的整数值,其中 100 表示共享资源的总使用量,这是相机子系统的限制瓶颈。这可能是一个非常粗略的估计,并用作相机服务的提示,以确定何时禁止多个应用程序同时打开相机服务所宣传的不同相机。

摄像头服务必须能够同时打开和使用 HAL 公开的摄像头设备的任意组合,其中这些摄像头的资源成本总和 <= 100。为了确定成本,必须假设每个摄像头设备都已配置并运行通过相机元数据为该设备公开的配置设置中可用的最大资源消耗帧速率和流大小设置。

相机服务可能仍会尝试同时打开总资源成本 > 100 的相机设备组合。这可能会成功,也可能会失败。如果成功,则由于具有多个打开设备的资源限制而不受支持的配置组合在配置调用期间应该会失败。如果总资源成本 <= 100,则任何流配置设置或其他设备功能的打开和配置都不应失败,而当设备是唯一打开的相机设备时,这些功能通常会成功。

该字段将用于确定当其他应用程序正在使用其他相机设备时是否允许后台应用程序使用该相机设备。注意:相机服务永远不会允许多个应用程序同时打开同一相机设备。

示例用例:

前任。 1:摄像头设备 0 = 后置摄像头 摄像头设备 1 = 前置摄像头

  • 由于 ISP 带宽有限,使用这两种摄像头设备会导致帧速率大幅下降。

配置:

摄像头设备 0 - resource_cost = 51conflicting_devices = null 摄像头设备 1 - resource_cost = 51conflicting_devices = null

结果:

由于资源成本总和 > 100,如果较高优先级的应用程序打开任一设备,则相机服务将不允许较低优先级的应用程序打开任一设备。如果较低优先级的应用程序正在使用较高优先级随后尝试打开的设备,则较低优先级的应用程序将被迫断开该设备的连接。

如果最高优先级的应用程序选择,它仍可能尝试打开两个设备(因为这些设备未在冲突设备字段中列为冲突设备),但这些设备的使用可能会在打开或配置调用中失败。

前任。 2:摄像头设备 0 = 左后摄像头 摄像头设备 1 = 右后摄像头 摄像头设备 2 = 使用设备 0 和 1 使用的右后摄像头和左后摄像头传感器的组合立体摄像头 摄像头设备 3 = 前置摄像头

  • 由于硬件限制,最多可以同时打开两个摄像头。组合立体摄像头可能永远不会与两个后置摄像头设备(设备 0、1)中的任何一个同时使用,并且通常需要太多带宽才能与前置摄像头(设备 3)同时使用。

配置:

相机设备 0 - resources_cost = 50conflicting_devices = { 2 } 相机设备 1 - resources_cost = 50conflicting_devices = { 2 } 相机设备 2 - resources_cost = 100conflicting_devices = { 0, 1 } 相机设备 3 - resources_cost = 50conflicting_devices = null

结果:

根据冲突设备字段,相机服务保证永远不会允许以下开放设备集:{ 1, 2 }、{ 0, 2 }。

根据resource_cost字段,如果高优先级的前台应用程序正在使用相机设备0,则后台应用程序将被允许打开相机设备1或3(但如果前台应用程序打开另一个设备,则将被迫再次断开连接)。

最高优先级应用程序仍可能尝试同时打开设备 0、2 和 3,但 HAL 可能会在打开或配置此组合的调用时失败。

前任。 3: 摄像头设备 0 = 后置摄像头 摄像头设备 1 = 前置摄像头 摄像头设备 2 = 低功耗前置摄像头,使用与设备 1 相同的传感器,但仅公开可在低功耗模式下使用的图像流分辨率

  • 由于共享物理传感器,不可能同时使用两个前置摄像头(设备 1、2)。由于硬件限制,对于某些流配置来说,使用后置摄像头和“高功率”前置摄像头(设备 1)可能是不可能的,但“低功耗”前置摄像头选项可能始终会被使用,因为它具有特殊的专用硬件。

    配置:

    相机设备 0 - resources_cost = 100conflicting_devices = null 相机设备 1 - resources_cost = 100conflicting_devices = { 2 } 相机设备 2 - resource_cost = 0conflicting_devices = { 1 } 结果:

    根据冲突设备字段,相机服务保证永远不会允许以下开放设备集:{ 1, 2 }。

    根据resource_cost字段,只有最高优先级的应用程序可以尝试同时打开设备0和1。如果较高优先级的应用程序未使用设备 1 或 2,则低优先级的后台应用程序可能会打开设备 2(但如果较高优先级的应用程序随后打开设备 1 或 2,则将被迫断开设备连接)。

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

CAMERA_MODULE_API_VERSION_2_3 或更低版本:

无效。可以假设为 100。请勿读取此字段。

CAMERA_MODULE_API_VERSION_2_4 或更高版本:

始终有效。

文件camera_common.h376行的定义。

constcamera_metadata_t * static_camera_characteristics

相机的固定特征,包括 system/media/camera/docs/docs.html 中指定的所有静态相机元数据。这应该是排序的元数据缓冲区,并且调用者不能修改或释放。该指针应在相机模块的生命周期内保持有效,并且在 get_camera_info() 返回后,其中的值不得更改。

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

CAMERA_MODULE_API_VERSION_1_0:

无效。额外的特性不可用。不要阅读该字段。

CAMERA_MODULE_API_VERSION_2_0 或更高版本:

如果 device_version >= CAMERA_DEVICE_API_VERSION_2_0 则有效。否则请勿阅读。

文件camera_common.h241行的定义。


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