当前位置: 首页 > news >正文

安卓自带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与理想/可能相比,功能不足。

其他已知问题

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

相关文章:

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

最近&#xff0c;遇到一个这样的问题&#xff0c;临时了解下这个驱动实现架构和特点&#xff0c;翻译如下 V4L2相机HALv3 camera.v4l2库使用视频Linux 2&#xff08;V4L2&#xff09;接口实现了camera HAL v3。这使得它在理论上可以与各种设备配合使用&#xff0c;尽管V4L2的…...

ActiViz实战:ActiViz中的自己实现鼠标双击事件

文章目录 1、添加鼠标事件2、网上实现双击事件的方式3、增加双击的时间限制4、补充说明1、添加鼠标事件 已知在C#中观察者/命令模式会报错,正常添加鼠标事件如下: private void VtkInteractorStyleTest() {vtkInteractorStyle style = vtkInteractorStyle.New();style.LeftB…...

Linux-交换空间(Swap)管理

引入概念 在计算机中&#xff0c;硬盘的容量一般比内存大&#xff0c;内存&#xff08;4GB 8GB 16GB 32GB 64GB…&#xff09;&#xff0c;硬盘&#xff08;512GB 1T 2T…&#xff09;。 冯诺依曼的现代计算机结构体系里面的存储器就是内存 内存是一种易失性存储器&#xff0c…...

扫描某个网段下存活的IP:fping

前言&#xff1a; 之前用arp统计过某网段下的ip&#xff0c;但是有可能统计不全。网络管理平台又不允许登录。想要知道当前的ip占用情况&#xff0c;可以使用fping fping命令类似于ping&#xff0c;但比ping更强大。与ping需要等待某一主机连接超时或发回反馈信息不同&#x…...

【深度学习】PyTorch框架(3):优化与初始化

1.引言 在本文中&#xff0c;我们将探讨神经网络的优化与初始化技术。随着神经网络深度的增加&#xff0c;我们会遇到多种挑战。最关键的是确保网络中梯度流动的稳定性&#xff0c;否则可能会遭遇梯度消失或梯度爆炸的问题。因此&#xff0c;我们将深入探讨以下两个核心概念&a…...

Go-知识测试-子测试

Go-知识测试-子测试 1. 介绍2. 例子3. 子测试命名规则4. 选择性执行5. 子测试并发6. testing.T.Run7. testing.T.Parallel8. 子测试适用于单元测试9. 子测试适用于性能测试10. 总结10.1 启动子测试 Run10.2 启动并发测试 Parallel 建议先看&#xff1a;https://blog.csdn.net/a…...

.net core IConfiguration 读 appsettings.json 数据,举例

在.NET Core中&#xff0c;IConfiguration 接口是用来读取配置数据的&#xff0c;包括从 appsettings.json 文件中读取。下面是一个如何在使用.NET Core时通过 IConfiguration 读取 appsettings.json 数据的示例。 首先&#xff0c;假设你的 appsettings.json 文件内容如下&am…...

全球Windows机器蓝屏,作为量化人,我的检讨来了

昨天下午&#xff0c;微软给大家放了个假。Windows又双叒死机了。不过&#xff0c;这一次不是几台机器&#xff0c;而是全球大范围宕机。这一刻&#xff0c;大家都是“正蓝旗”。 蓝瓶的&#xff0c;效果好&#xff01; 现在根本原因已经找到&#xff0c;绝大多数人的机器都已修…...

部署和运维

目录 1.Git1.1. Git指令中merge和rebase的区别1. Commit 记录2. 合并方式3. 冲突处理4. 使用场景选择建议 1.2. cherry-pick的使用如何使用 git cherry-pick例子处理冲突撤销 cherry-pick其他选项 结论 2. 部署1. Nginx的使用场景 编译打包1. webpack2. webpack打包优化1. 代码…...

微信小程序基本语法

官网 https://developers.weixin.qq.com/miniprogram/dev/framework/ 视频教程&#xff1a;尚硅谷微信小程序开发教程&#xff0c;2024最新微信小程序项目实战&#xff01; 仿慕尚花坊项目源码&#xff1a;https://gitee.com/abcdfdewrw/flower-workshop 目录 一&#xff0c;初…...

测试用例的设计方法

等价类 等价类概念&#xff1a;在所有测试的数据中&#xff0c;具有某种共同特征的数据子集 边界值 边界值分析是对程序输入或输出的边界值进行测试的一种黑盒测试方法 边界值是作为等价类的补充&#xff0c;其主要区别是&#xff1a; 边界值测试设计不是从某一个等价类中…...

Android10.0 锁屏分析-KeyguardPatternView图案锁分析

首先一起看看下面这张图&#xff1a; 通过前面锁屏加载流程可以知道在KeyguardSecurityContainer中使用getSecurityView()根据不同的securityMode inflate出来&#xff0c;并添加到界面上的。 我们知道&#xff0c;Pattern锁所使用的layout是 R.layout.keyguard_pattern_view&a…...

Python 装饰器:函数的函数,代码的艺术

引言 在Python中&#xff0c;装饰器是一种强大的功能&#xff0c;允许程序员在不修改原函数源码的情况下增强或修改函数行为。装饰器本质上是一个接收函数作为参数的高阶函数&#xff0c;并返回一个新的函数或修改原函数的行为。这种机制极大地提高了代码的复用性、可读性和模…...

安全防御2

实验要求&#xff1a; 实验过程&#xff1a; 7&#xff0c;办公区设备可以通过电信链路和移动链路上网(多对多的NAT&#xff0c;并且需要保留一个公网IP不能用来转换)&#xff1a; 新建电信区&#xff1a; 新建移动区&#xff1a; 将对应接口划归到各自区域&#xff1a; 新建…...

C语言 ——— 打印水仙花数

目录 何为水仙花数 题目要求 代码实现 何为水仙花数 “水仙花数”是指一个n位数&#xff0c;其各位数字的n次方之和等于该数本身 如&#xff1a;153 1^3 5^3 3^3&#xff0c;则153就是一个“水仙花数” 题目要求 求出0~100000的所有“水仙花数”并输出 代码实现 #i…...

「Conda」在Linux系统中安装Conda环境管理器

在Linux系统中安装Conda环境管理器是一个相对简单的过程。 1. 准备工作 确保你的Linux系统已经更新到最新版本,并安装了基本的开发工具和库。打开终端,执行以下命令: sudo apt-get update sudo apt-get upgrade sudo apt-get install build-essential2. 安装Miniconda或An…...

9.11和9.9哪个大?GPT-4o也翻车了

今天刷到了这个问题&#xff0c;心血来潮去问下chatgpt-4o&#xff0c;没想到疯狂翻车... 第一次问&#xff1a; GPT一开始给出了难绷的解答&#xff0c;让我想起了某短视频软件评论区里对某歌手节目排名的质疑哈哈哈哈哈 但是在接下来的进一步询问和回答中它反应过来了。 第…...

[开源]语雀+Vercel:打造免费个人博客网站

大家好,我是白露。 今天我想和大家分享我的今年的第一个开源项目 —— 基于语雀+Nextjs+Vercel实现免费的博客系统。 简单来说,你在语雀写博客,然后直接一键同步到个人网站上,网站自动部署! 而且,整个过程几乎不需要额外的成本,也不用充值语雀超级会员,hh。这个项目…...

使用ElementUI和element-china-area-data库实现省市区三级联动组件封装

在前端开发中&#xff0c;省市区三级联动是一个常见的需求。今天我们将使用Vue.js和ElementUI组件库&#xff0c;结合element-china-area-data库&#xff0c;来实现一个省市区三级联动的组件。这个组件不仅可以提高用户体验&#xff0c;还能大大简化我们的代码。接下来&#xf…...

0718,TCP协议,三次握手,四次挥手

目录 上课喵&#xff1a; TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;的状态迁移图 TCP连接的状态迁移图 状态迁移说明&#xff1a; 注意&#xff1a; big_htonl.c 字节序转换 addr.c IP地址的转换 作业喵&#xff1a; …...

【高精度气象】一场暴雨影响多少赛事赞助?赛事保险正在依赖分钟级预报止损

对于赛事主办方而言&#xff0c;2026年的残酷现实是&#xff1a;一场突如其来的暴雨&#xff0c;不仅可能让数万观众扫兴而归&#xff0c;更可能让数百万赞助费付诸东流&#xff0c;让主办方面临天价索赔。但当分钟级预报与动态保险定价深度融合&#xff0c;一个全新的“天气止…...

Qwen2.5-72B-Instruct-GPTQ-Int4参数详解:RMSNorm/SwiGLU/GQA架构解析

Qwen2.5-72B-Instruct-GPTQ-Int4参数详解&#xff1a;RMSNorm/SwiGLU/GQA架构解析 1. 引言&#xff1a;为什么我们需要了解模型架构&#xff1f; 你可能已经成功部署了Qwen2.5-72B-Instruct-GPTQ-Int4模型&#xff0c;并且通过chainlit前端愉快地开始了对话。但当你看到模型日…...

Phi-3-mini-128k-instruct效果展示:128K上下文内跨章节概念关联图谱生成

Phi-3-mini-128k-instruct效果展示&#xff1a;128K上下文内跨章节概念关联图谱生成 你是否遇到过这样的场景&#xff1a;阅读一份长达数百页的技术文档或研究报告&#xff0c;读到后面时&#xff0c;已经忘记了前面某个关键概念的定义&#xff0c;或者无法将不同章节中看似独…...

ANIMATEDIFF PRO优化升级:MP4输出、LUT调色,让动画更专业

ANIMATEDIFF PRO优化升级&#xff1a;MP4输出、LUT调色&#xff0c;让动画更专业 1. 从“能动的GIF”到“可交付的成片”&#xff0c;你只差这一步 如果你已经用ANIMATEDIFF PRO生成过几段动画&#xff0c;可能会发现一个现实问题&#xff1a;生成的GIF文件&#xff0c;在手机…...

高效创新的在线演示文稿解决方案:PPTist如何重塑演示创作体验

高效创新的在线演示文稿解决方案&#xff1a;PPTist如何重塑演示创作体验 【免费下载链接】PPTist 基于 Vue3.x TypeScript 的在线演示文稿&#xff08;幻灯片&#xff09;应用&#xff0c;还原了大部分 Office PowerPoint 常用功能&#xff0c;实现在线PPT的编辑、演示。支持…...

Stable Yogi Leather-Dress-Collection新手指南:LoRA文件名关键词提取正则表达式解析

Stable Yogi Leather-Dress-Collection新手指南&#xff1a;LoRA文件名关键词提取正则表达式解析 1. 工具概览 Stable Yogi Leather-Dress-Collection是一款基于Stable Diffusion v1.5和Anything V5动漫底座模型开发的2.5D皮衣穿搭生成工具。它通过动态加载不同皮衣款式的LoR…...

【Dify多智能体协同架构设计终极指南】:20年架构师亲授高可用、低延迟工作流落地的5大核心原则

第一章&#xff1a;Dify多智能体协同架构设计全景图Dify 的多智能体协同架构并非简单堆叠多个 LLM 调用&#xff0c;而是以「可编排、可观察、可扩展」为设计原点&#xff0c;构建出分层解耦的智能体协作范式。其核心由工作流引擎&#xff08;Workflow Engine&#xff09;、智能…...

iOS设备上GoodNotes卡死自救指南:无需备份也能恢复笔记(附Filza详细操作)

iOS设备上GoodNotes卡死自救指南&#xff1a;无需备份也能恢复笔记 作为一名深度依赖GoodNotes进行日常记录的用户&#xff0c;我完全理解当应用突然卡死在初始化界面时的那种焦虑。上周我的iPad Pro突然遭遇这个问题&#xff0c;屏幕上永远停留在"准备自己的资料库&#…...

MIT突破:多智能体系统破解PFAS替代材料发现难题

这项由麻省理工学院土木环境工程系、机械工程系以及Schwarzman计算学院联合开展的研究&#xff0c;发表于2026年《计算机科学与人工智能》领域的arXiv预印本平台&#xff08;论文编号&#xff1a;arXiv:2602.07491v1&#xff09;&#xff0c;有兴趣深入了解的读者可以通过该编号…...

终极指南:如何利用API与代码挖掘技术发现软件复用模式的秘密武器

终极指南&#xff1a;如何利用API与代码挖掘技术发现软件复用模式的秘密武器 【免费下载链接】awesome-machine-learning-on-source-code Cool links & research papers related to Machine Learning applied to source code (MLonCode) 项目地址: https://gitcode.com/g…...