Android O Camera深度研究

目录

Adnroid O之前的Android camera软件框架

Adnroid O camera软件框架

Passthrough Mode 

Binderized mode

Wrapper shim for libhardware HALs

Wrapper shim for libhardware HALs

Customized Treble Camera HAL/framework

Camera HAL transition and removal plan

Camera HAL transition and removal plan

Other camera framework changes

Android O metata生成方式

FrameWork HAL1 HAL3

Vendor tag及Flash相关

What is Camera ITS?

Camera framework plans  for future releases​​​​​​​


Adnroid O之前的Android camera软件框架

Adnroid O camera软件框架

Passthrough Mode 

Binderized mode

Wrapper shim for libhardware HALs

1.  Google will provide a wrapper shim layer to adapt libhardware camera HAL implementations to the new HIDL interface.

2.  Google will provide wrapper shim for both HAL1.0 and HAL3.2~HAL3.4

        2.1 HIDL ICameraDevice@1.0 maps to libhardware HAL1.0

        2.2 HIDL ICameraDevice@3.2 maps to libhardware HAL3.2 ~ 3.4

        2.3 HIDL ICameraProvider@2.4 maps to libhardware module 1.0 and 2.4

3.  Partners can use the wrapper shim if you do not have customized HAL API in your code

4.  For partners who do have customized HAL APIs, they must implement customized HIDL HAL to add these APIs back. Some parts of wrapper shim source code might still be relevant. Feel free to reuse  them.

Wrapper shim for libhardware HALs

Customized Treble Camera HAL/framework

Camera HAL transition and removal plan

1.  Android O

        1.1 Newly launched devices can still implement HAL1.0, but have to be running binderized mode

        1.2 Upgraded device can be HAL1.0 and run passthrough mode

2.  Android P and Q

        2.1 Newly launched device must implement HAL3 in binderized mode

        2.2 Upgraded devices can still be HAL1.0(and run in whichever mode in launch)

3.  Android R

        3.1 HAL1.0 support will be removed entirely

Camera HAL transition and removal plan

Other camera framework changes

1.  Libhardware modules/device API version no longer supported

        1.1  Module 2.0 ~ 2.3

                It should be fairly easy to upgrade from 2.0 ~ 2.4

                The only required API addition in 2.4 is torch API, which saves significant power in flashlight use  case.

        1.2  Device 3.0 ~ 3.1

                No one should be using these version as far as we know.

        1.3 ZSL feature in API1 <-> HAL3 shim Was implemented via deprecated “bidirectional” stream tyep, which will be removed in HIDL HAL.  

                Switch to PRIVATE_REPROCESSING interface in Android O if you want to keep this feature working

Android O metata生成方式

Overview:

        The camera.metadata interface is used by the Android camera service, camera provider and camera device to retrieve static camera information and issue camera capture controls.

File path:

        android/hardware/interface/camera/metadata/3.2/types.hal

生成文件

        android/hardware/camera/metadata/3.2/types.h

Docs:

        The docs.html for each version for the detailed description of each metadata Android/system/media/camera/docs/docs.html

FrameWork HAL1 HAL3

FrameWork对HAL1/HAL3的接口控制下移到interface层进行配置定义。

文件路径:

        Android/hardware/interface/camera/device/1.0 or 3.2

        其中目录下的type.hal定义接口会使用到的类型定义

生成文件路径:

        Android/hardware/camera/device/3.2/type.cpp,CameraDeviceAll.cpp,CameraDeviceCallbacAll.cpp,CameraDeviceSessionAll.cpp     

        Android/hardware/camera/devcie/3.2/ICameraDevice.h, BnCameraDevice.h,BpCameraDevice.h …

PS:编译器加载libhwbinder.so生成各文件,之后Framework通过hwbinder与生成的中间文件进行交互。

Vendor tag及Flash相关

Vendor tag及Flash接口定义文件:

        Android/hardware/interface/camera/provider/2.4 (API Version)

Overview:

        The camera.provider HAL is used by the Android Camera service to discover,query, and open individual camera devices.

        It also allows for direct control of the flash unit of camera device tha have one, for turning on/off  torch mode.

File

        ICameraProvider.hal    ICameraProviderCallback.hal

API

        setCallback    getVendorTags    cameraDeviceStatusChange       torchModeStatusChange …

@2.4

        First HIDL version of the camera provider HAL.

What is Camera ITS?

1.  CameraITS(ITS) is part of Android Compatibility Test suite (CTS)

        Includes all tests the require verifying image content

        Required for all Android partners

2.  Running ITS currently a very manual and time-consuming process

3.  List of parts provided to partners

        White photo box,tripod,charts,LED lamp

4.  Multiple manual scenes

        scenes[0, 1, 2, 3, 4, 5]

5.  Function tests, not performance metrics

        Timestamps, exp/gain, crop/rotation, 3A, etc.

Camera framework plans  for future releases

 1.  Continue delivring new features and optimization for Camera2 and HAL3 in upcoming Android releases.

2.  Onging test coverage and infrastructure improvements.

3.  API1(deprecated) will continue to exist, working with HAL3 shim.

4.  Middleware/SuperHAL layer remains on our future roadmap to better isolate OEM and SoC logics.

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

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

相关文章

Android精通值Fragment的使用 —— 不含底层逻辑(五)

1. Fragment 使用Fragment的目标&#xff1a;根据列表动态显示内容&#xff0c;更简洁显示界面、查找界面 eg. 使用新闻列表动态显示新闻 1.1 Fragment的特性 具备生命周期 —— 可以动态地移除一些Fragment必须委托在Activity中使用可以在Activity中进行复用 1.2 Fragmen…

新鲜速递:图解新颖LLM的CoPE位置编码

大模型技术论文不断&#xff0c;每个月总会新增上千篇。本专栏精选论文重点解读&#xff0c;主题还是围绕着行业实践和工程量产。若在某个环节出现卡点&#xff0c;可以回到大模型必备腔调重新阅读。而最新科技&#xff08;Mamba,xLSTM,KAN&#xff09;则提供了大模型领域最新技…

基于docker的oracle12.2.0.1部署及oracle使用与docker镜像容器制作迁移方法

基于docker的oracle12.2.0.1部署及oracle使用与docker镜像容器制作迁移方法 本文介绍了基于docker的oracle12.2.0.1部署&#xff0c;包含了oracle基本配置、监听器和实例启动方法、PDB和CDB操作方法、表空间建立和用户数据库建立、常见启动问题解决等&#xff0c;并介绍了镜像制…

二、go微服务项目“商城项目实战开发”第二步grpc和gin的直连调用

文章目录 商城项目实战开发-GRPC和GIN的直连调用01、本次课程微服务的技术栈02、用户服务接口定义和实现登录1、密码问题01、MD5的方式02、加盐的方式03、动态盐04、使用加盐框架passwordEncoder2、用户服务接口的暴露3、Grpc的实现步骤1.定义暴露接口2.编写user的调用文件3.编…

YOLOv8_obb预测流程-原理解析[旋转目标检测理论篇]

YOLOv8_obb的预测流程,主要分预处理模块、推理模块和后处理模块。这里面有很多内容是和目标检测预测流程是重合的,主要区别在于Angle分支、NMS后处理以及regularize_rboxes部分。本文也主要介绍一下这三个模块,其他模块可以结合YOLOv8预测流程-原理解析[目标检测理论篇]一起…

免费SSL证书的安全性与获取指南

SSL证书是一种数字凭证&#xff0c;用于加密用户与网站之间的信息交换&#xff0c;以确保传输的数据不被第三方窃取。它像是一个数字版的密封印章&#xff0c;为数据的传输过程提供了一层保护膜。 免费的SSL证书通常由CA机构提供&#xff0c;它们同样可以提供基础数据的加密服…

16.Redis之Redis事务

1.MySQL 事务 原子性: 把多个操作,打包成一个整体了 一致性: 事务执行之前,和之后,数据都不能离谱~ 持久性: 事务中做出的修改都会存硬盘 隔离性: 事务并发执行,涉及到的一些问题~~ 2.Redis事务 2.1 认识Redis事务 • 弱化的原⼦性: redis 没有 "回滚机制". …

.NET最新漏洞 | 某SLMS系统存在SQL注入

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

翻译《The Old New Thing》- How do I force the ECHO command to echo?

How do I force the ECHO command to echo? - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20080403-00/?p22883 Raymond Chen 2008年04月03日 如何强制执行ECHO命令以进行回显&#xff1f; 简要 ECHO命令用于在命令行打印文本&#xff0…

统一预订,YonSuite商旅费控助力成长型企业“消灭报销”

在成长型企业快速发展的道路上&#xff0c;商旅管理作为连接企业内外的重要纽带&#xff0c;其效率与成本直接影响着企业的整体运营。面对日益增长的商旅需求&#xff0c;如何简化预订流程、降低管理成本、提高运营效率成为了成长型企业亟待解决的问题。用友YonSuite商旅费控以…

【权威出版】2024年新媒体、网络与电子商务国际会议(NMNE 2024)

2024年新媒体、网络与电子商务国际会议 2024 International Conference on New Media, Networking, and E-commerce 【1】会议简介 2024年新媒体、网络与电子商务国际会议即将召开&#xff0c;这是一次集结全球新媒体、网络与电子商务领域精英的学术盛会。 本次会议将深…

DPDK基础组件一(mbuf、ring、pktmbuf_pool)

一、rte_mbuf 此部分转自:https://zhuanlan.zhihu.com/p/616314276 1.mbuf结构 mbuf是报文中的描素的结构体,是整个转发过程中最核心的数据结构之一。主要针对于mbuf的常用API与基本原理做一个简单的介绍。 mbuf:报文内存存储结构,存储在mempool中mempool:使用环形缓冲…

Web安全:软件开发的安全问题与解决方案

「作者简介」&#xff1a;2022年北京冬奥会网络安全中国代表队&#xff0c;CSDN Top100&#xff0c;就职奇安信多年&#xff0c;以实战工作为基础对安全知识体系进行总结与归纳&#xff0c;著作适用于快速入门的 《网络安全自学教程》&#xff0c;内容涵盖系统安全、信息收集等…

jni调用so或dll区别

在Java中通过JNI&#xff08;Java Native Interface&#xff09;调用本地代码时&#xff0c;所使用的动态库文件扩展名&#xff08;如 .dll 对于Windows或 .so 对于Unix-like系统&#xff09;取决于你的操作系统和目标平台。 DLL&#xff08;Dynamic Link Library&#xff09;…

python数据预处理

PYTHON 最流行库&#xff1a;Numpy、Matplotlib 和 Pandas。Numpy 是满足所有数学运算所需要的库&#xff0c;由于代码是基于数学公式运行的&#xff0c;因此就会使用到它。Maplotlib&#xff08;具体而言&#xff0c;Matplotlib.pyplot&#xff09;则是满足绘图所需要的库。Pa…

小米员工自爆:35岁被裁后,投百份简历无人问津,一气之下把薪资由2W调为3W,简历改成英文,结果出乎意料

“35岁”&#xff0c;就像职场里一道无形的门槛&#xff0c;压得人喘不过气。一旦迈过这道坎&#xff0c;焦虑、迷茫、恐慌&#xff0c;接踵而至。 最近&#xff0c;我的朋友老张&#xff0c;就真切地体会到了这种“中年危机”。刚过36岁生日&#xff0c;他就收到了来自小米的裁…

从0到1写一个vue2项目,按需引入element-ui的引入,npm下载路由,配置路由,路由嵌套

从0到1写一个vue2项目&#xff0c;此篇内容有element-ui的按需引入&#xff0c;npm下载路由&#xff0c;配置路由&#xff0c;路由嵌套 项目是b站上找的项目链接在此https://www.bilibili.com/video/BV1QU4y1E7qo/?p8&spm_id_frompageDriver&vd_source2c599bf1d75e3f9…

Hive之聚合类开窗函数 + 滑动求和

为什么要写这样子一个主题文章呢&#xff0c;开窗函数毫无疑问&#xff0c;超级重要&#xff0c;但是很多人可能不会遇到一些稍微小众的业务需求&#xff0c;比如说滑动求和。这里带着业务&#xff0c;一并让大家熟悉一些&#xff0c;高阶函数的应用。 0&#xff0c;开窗函数和…

【JAVA SE】抽象类和接口

✨✨欢迎大家来到Celia的博客✨✨ &#x1f389;&#x1f389;创作不易&#xff0c;请点赞关注&#xff0c;多多支持哦&#x1f389;&#x1f389; 所属专栏&#xff1a;JAVA 个人主页&#xff1a;Celias blog~ 目录 引言 一、抽象类 1.1 抽象类的定义 1.2 抽象方法 1.3 抽象…

大厂边缘组VS小厂核心组,要怎么选?

有问必答 最近有粉丝提问&#xff1a;大厂边缘组VS小厂核心组&#xff0c;怎么选&#xff1f; 这确实是个好问题&#xff0c;读者老爷们可以先问下自己&#xff1a;如果有一份月薪2W在大厂边缘组打螺丝的Offer且不加班&#xff0c;另外还有一份月薪2W5&#xff0c;在小厂核心…