安卓自带camera hal3 实例README.md翻译

最近,遇到一个这样的问题,临时了解下这个驱动实现架构和特点,翻译如下

V4L2相机HALv3

camera.v4l2库使用视频Linux 2(V4L2)接口实现了camera HAL v3。这使得它在理论上可以与各种设备配合使用,尽管V4L2的局限会引入一些[警告](#V4L2缺陷),导致此HAL不完全符合规范。

当前状态

人们可以自由使用这个库,如果这个能满足他们的目的工作,但它不是由安卓相机团队维护的。还有一个V4L2 camera HAL实现,由安卓相机团队维护的,是从Android P开始。查看更多信息
这里.

使用HAL构建设备

为确保HAL是为设备构建的,请在您的<device>.mk内包含下面这些:

USE_CAMERA_V4L2_HAL := true
PRODUCT_PACKAGES += camera.v4l2
PRODUCT_PROPERTY_OVERRIDES += ro.hardware.camera=v4l2

第一行确保V4L2 HAL模块对构建系统可见。这可以防止在没有必要支持的设备上进行检查构建
失败。product package 告诉构建系统包含V4L2HALv3库到系统映像。最后一行告诉硬件管理器
加载V4L2 HAL,而不是默认的相机HAL。

HAL使用要求

希望使用此HAL的设备和摄像头必须满足以下要求:

*相机必须支持BGR32、YUV420和JPEG格式。
*设备使用的gralloc和其他图形模块必须使“HAL_PIXEL_FORMAT_RGBA_8888” ,如同 “HAL_PIX EL_FORMAT_Emplement_DEFINED”

理解HAL代码

V4L2相机HAL有三个大部件:通用HALv3相机和HAL代码,具体使用V4L2的实现,以及Metadata系统。
为了了解上下文,您可能还希望阅读 libhardware/include/camera3.h,关于框架如何与HAL交互。

###相机和HAL接口
相机和HAL接口 由摄像头和V4L2相机HAL类实现。

V4L2CameraHAL类主要处理系统的初始化。
在创建时,它搜索/dev/video* 中具有特定能力的节点。然后,这些都会以可用的形式呈现给框架供使用。进一步的操作将酌情传递给各个摄像头。

Camera类实现了处理相机的一般逻辑-打开和关闭、配置流、准备和跟踪请求等。当它处理相机周围的物流时,实际图像捕获和设置逻辑是通过向下调用来实现的[V4L2摄像头](#V4L2摄像头)。Camera(使用辅助类)强制执行由V4L2Camera初始化的[Matadata](#Metadata)中给出的限制,例如对每个流的运行中请求数量的限制。

值得注意的是,这意味着您应该能够替换V4L2实现,只要正确填写Metadata相机类“就会工作”。

V4L2具体实现

V4L2Camera类是所有捕获功能的实现。
它包括Camera类验证设置的一些方法,但类的大部分是请求队列。Camera类提交CaptureRequests,当它们进入并被验证时。V4L2Camera通过三个阶段异步流水线:

*接受:V4L2Camera接受请求,并将其置于等待状态,直到被被排队者取走。
*排队者:V4L2Camera读取请求设置,并将其应用于设备,对设置进行快照到设备,并将V4L2驱动器处理一帧buffer。
*去除排队者:从驱动程序中回收已完成的帧,并发送返回Camera类进行最终处理(验证、填写结果对象,并将数据发送回框架)。

这项工作的大部分得到了V4L2Wrapper辅助类的帮助,它围绕V4L2 ioctl提供更简单的输入和输出
基于HAL已知的使用情况;自动填写常用值,并从结果中提取对HAL有用的信息。
此封装还用于将V4L2控件暴露给其相应的Metadata组件。

Metadata

Metadata子系统试图组织和简化处理相机metadata(system/media/camera/docs/docs.html)。在顶层是Metadata类和Partial MetadataInterface。Metadata类提供与各个组件的高级交互-填充静态metadata数据,校验、获取和设置设置,等等。Metadata类将所有这些传递给组件PartialMetadataInterface,每个接口都会过滤其特定的metadata,并执行所请求的任务。

一些通用元数据类被用来简化常见逻辑,用于此过滤和应用。在高层次上,有三个类型:
*属性:一个静态值。
*控件:可动态调整的值,以及可选的关联的静态属性,指示允许的值是什么。
*状态:动态只读值。

Metadata系统使用其他接口和子类来区分不同metadata数据所需的各种不同功能tag。

Metadata工厂

此V4L2 Camera HAL实现利用了元数据工厂方法。
此方法初始化所有100多个必需的元数据组件,基本符合HAL规范。大多数人什么都不做或者报告固定值,但也有一些与V4L2驱动器相连。

这个HAL最初是为Raspberry Pi相机模块设计的v2.1,因此固定默认值通常基于该相机分配。

V4L2缺陷

*一次支持一个流。值得注意的是,这意味着您必须重新配置预览和捕获之间的流(如果格式不同)。
这使得这个HAL不能向后兼容Android相机(v1)API,因为它的许多方法都试图做到这一点;必须使用Camera2。

*V4L2中无法填写各种元数据属性,例如相机的物理特性。因此,这个HAL永远不会有能力
理论上,它可以为所有相机提供完全准确的信息支持。

*Android要求HAL支持YUV420、JPEG和一种图形格式
堆栈的选择(“实现定义”)。实际上支持的摄像头很少所有这些格式(到目前为止,Raspberry Pi相机是唯一已知的格式),因此,HAL内置的某种格式转换将是一个有用的功能
以扩大该HAL的覆盖范围/实用性。

*V4L2没有承诺应用设置的速度,也没有确定给定帧的有效设置的好方法。因此,
传入请求和输出结果的设置将按以下方式应用/读取尽最大努力,可能是不正确的。

*V4L2的许多功能都没有连接到HAL,因此HAL与理想/可能相比,功能不足。

其他已知问题

*各种功能尚未实现:高速抓拍,闪光灯模式,热插拔。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/47812.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows server漏洞解决

Windows server漏洞解决 一、SSL/TLS问题1、问题2、建议3、方法1)、winR运行&#xff1a;regedit&#xff0c;进入注册表。2&#xff09;、找到注册表3&#xff09;、在Ciphers新建五个项4&#xff09;、在每个新建文件加入值 二、Apache Tomcat问题1、问题2、下载 好家伙&…

国内从事双臂机器人的团队

一、背景 随着人形机器人的发展&#xff0c;双臂协同操作得到了越来越多研究人员的关注。我自己也是做双臂机器人方向的&#xff0c;虽然通过看论文或刷知乎了解到国内有许多团队在做双臂机器人方向&#xff0c;但还没有系统的整理过&#xff0c;因此趁这次机会&#xff0c;好…

Stripe web 支付语言设置

在两个地方都可以设置 VALUELOCALEELEMENTSCHECKOUTautoStripe detects the locale of the browser✔✔arArabic✔bgBulgarian (Bulgaria)✔✔csCzech (Czech Republic)✔✔daDanish (Denmark)✔✔deGerman (Germany)✔✔elGreek (Greece)✔✔enEnglish✔✔en-GBEnglish (Unit…

python的mixin设计模式

1.介绍 在 Python 中&#xff0c;mixin 是一种设计模式&#xff0c;它是一个包含了特定功能单元的类&#xff0c;这些功能可以被其他类组合利用&#xff0c;这些功能可以被其他类组合利用&#xff0c;以实现代码的复用和功能扩展。 mixin 类通常不被单独实例化&#xff0c;也不…

agv叉车slam定位精度测试标准化流程

相对定位精度 条件&#xff1a;1.5m/s最高速度&#xff1b;基于普通直行任务 数据采集&#xff08;3个不同位置的直行任务&#xff0c;每个任务直行约10m&#xff0c;每个10次&#xff09; 测量每次走过的实际距离&#xff0c;与每次根据定位结果算得的相对距离&#xff0c;两…

Python_封装和继承

封装 Python的封装是一种将数据&#xff08;属性&#xff09;和行为&#xff08;方法&#xff09;捆绑在一起的操作&#xff0c;以实现数据隐藏和抽象。 封装的目的是保护对象内部的数据不被外部直接访问和修改&#xff0c;同时提供接口与外界交互。 私有属性&#xff1a;在…

ES6 数组的扩展(十六)

1. Array.from() 特性&#xff1a;从类数组对象或可迭代对象中创建一个新的数组实例。 用法&#xff1a;将类数组对象或可迭代对象转换为数组。 const likeArray { 0: a, 1: b, length: 2 }; const arr Array.from(likeArray); console.log(arr); // 输出&#xff1a;[a, b…

C#数字医学影像系统(RIS/PACS)源码,Oracle数据库,C/S架构,运行稳定

数字医学影像系统&#xff08;RIS/PACS&#xff09;源码&#xff0c;三甲以下的医院都能满足。PACS 系统全套成品源码。 开发技术&#xff1a;C/S架构&#xff0c;C#开发语言&#xff0c;数据库服务器采用Oracle数据库。 医学影像存储与传输系统&#xff0c;融合了医学信息化…

算法-经典递归解决排列组合

文章目录 前言1. 获取字符串的所有字串2. 数组的子集(无重复)3. 数组的子集(有重复)4. 字符大小写全排列5. 全排列(无重复)6. 全排列(有重复) 前言 如何正确的处理递归 所有的递归都分为带路径的递归和不带路径的递归, 我们之前学二叉树的时候基本上都是带路径的递归, 所有的递…

HBuilder x 使用Git管理项目,配合easy-git插件管理项目代码配置git和推送/拉取使用教程

文章目录 目录 文章目录 使用流程 小结 概要安装流程技术细节小结 概要 克隆/拉取项目代码到本地电脑教程 HBuilder x 使用Git管理项目&#xff0c;配合easy-git插件 克隆项目代码到本地教程-CSDN博客 电脑环境已安装好Hbuilder x工具 如果没有安装可以参考以下先安装好Hbui…

MATLAB6:M文件和控制流

文章目录 一、实验目的二、实验内容三、仿真结果四、实践中遇到的问题及解决方法 一、实验目的 1. 熟悉运用MATLAB的控制指令。   2. 理解M脚本文件和函数文件的本质区别。   3. 能够运用所学知识&#xff0c;编制程序解决一般的计算问题。 二、实验内容 1.for循环结构及注…

银发经济发展需要什么支持

随着社会老龄化的加剧&#xff0c;“银发经济”应运而生&#xff0c;成为社会发展的新动向。银发经济指的是针对老年人群体的经济活动&#xff0c;包括健康护理、休闲旅游、教育文化等多方面内容。这一现象不仅体现了社会对老年群体的关注和尊重&#xff0c;同时也为经济发展提…

python selenium4 EdgeDriver动态页面爬取

截止至2024.7.16 chrome浏览器最新版本为126.0.6478.127 但对应的chromeDriver版本都低于此版本&#xff0c;因此&#xff0c;转用Edge浏览器 说明&#xff1a;仅记录自己使用过程中用到的一些代码和感受&#xff0c;看具体情况不定期更新。 selenium官方文档 1、安装selen…

qt 6.7 版本 ,QStackedLayout布局中添两个QWidget,每个QWidget都有一个按钮,点击后分别显示另一个布局

1.代码 在Qt 6.7中&#xff0c;如果你想要将QStackedLayout布局中包含两个QWidget&#xff0c;并且每个QWidget都有一个按钮&#xff0c;点击按钮后显示另一个布局&#xff0c;同时希望将头文件&#xff08;.h&#xff09;和源文件&#xff08;.cpp&#xff09;分开&#xff0…

Python基础:register buffer

模型保存下来的参数有两种&#xff1a;需要更新的 Parameter &#xff0c;与是不需要更新的 buffer 。 在模型中&#xff0c;利用backward反向传播&#xff0c;可以通讨requires_grad来得到 buffer 和 parameter 的梯度信息&#xff0c;但是利用 optimizer 进行更新的是 parame…

Apache httpd-vhosts.conf 配置详解(附Demo)

目录 前言1. 基本配置2. http和https3. 重定向和代理配置4. 实战前言 Nginx的相关配置推荐阅读:Nginx将https重定向为http进行访问的配置(附Demo) 1. 基本配置 httpd-vhosts.conf 是 Apache HTTP Server 配置虚拟主机(Virtual Hosts)的文件 虚拟主机允许在一台服务器上…

HarmonyOS NEXT零基础入门到实战-第一部分

构建节页面思路&#xff1a; 1、排版 (分析布局) 2、内容&#xff08;基础组件&#xff09; 3、美化&#xff08;属性方法&#xff09; 设计资源-svg图标 界面中展示图标 ->可以使用svg图标&#xff08;任意放大缩小不失真&#xff0c;可以改颜色&#xff09; 使用方式&a…

重磅活动推荐:2024 CLK 大会启动中,承办单位开放报名

中国 Linux 内核开发者大会&#xff08;简称“CLK 大会”&#xff09;是中国 Linux 内核领域最具影响力的峰会之一&#xff0c;由清华大学、英特尔、富士通南大、IBM、阿里云、华为、腾讯等企业支持主办。大会秉承“自由、协作、创新”理念&#xff0c;以推动和普及开源技术为使…

java中Hashcode的作用【详解版】

一 HashCode作用 1.1 HashCode作用 hashCode是object类的一个方法&#xff0c;用于哈希表结构&#xff0c;主要是用来获取哈希值&#xff0c;用于确定对象在哈希表中的位置&#xff0c;如果两个对象的hashcode相同&#xff0c;那么他们可能被放在哈希表同一个位置(这取决于哈…

【每天值得看】文章获得《每天值得看》人工智能板块推荐第三名!为自己点个赞!!!

[2024-07-19]&#xff5c;CSDN每天值得看&#xff5c;人工智能 ① 【机器学习】Grid Search: 一种系统性的超参数优化方法&#xff08;鑫宝Code:[博客] [成就]&#xff09; [质量分&#xff1a;97&#xff1b;难度等级&#xff1a;未知&#xff1b;新鲜技术&#xff1a;99] 摘…