Android Camera HAL V3 Vendor Tag及V1,V3参数转换

本文详细介绍了Android Camera HAL从V1到V3的变化,特别是V3中Vendor Tag的使用,以及如何处理V1和V3之间的参数转换。作者分享了在HAL V3中添加自定义参数saturation的实现过程,包括定义vendor tag、处理vendor tag的接口以及在HAL中获取和设置saturation值的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        转眼一看,上一次发博文都快是三年之前了,惭愧 ! 主要是三年前找的这份工作,虽然是世界500强的技术大牛公司,但是工作可一点都不高大上,非常的忙,一天不但要处理各种camera的bug,还要开发camera的各种feature和sensor驱动,还要和内部、外部的人各种扯皮,你懂的。忙的三年了才有闲心来发表这片博文。

       牢骚已完,言归正传。

       在Android 5.0上,Google正式的将Camera HAL 3.0作为一个标准配置进行了发行,当然Camera HAL V1也是作为兼容标准是可以用的。但是很多有实力的芯片厂商都第一时间切换到了HAL V3。 HAL V3与V1最大的本质区别,我认为就是把帧的参数和帧的图像数据绑定到了一起,比如V1的时候一张preview上来的YUV帧,APP是不知道这个YUV帧采用的Gain和曝光时间究竟是多少。但是在V3里面,每一帧都有一个数据结构来描述,其中包括了帧的参数和帧的数据,当APP发送一个request的时候是需要指定使用什么样的参数,到request返回的时候,返回数据中就有图像数据和相关的参数配置。

        在V1里面,如果想增加一些厂商特定的参数,比如增加Saturation的设置,最简单的方法就是直接使用CameraParameters.set来实现,即在APP中,

        Camera.Parameters mParameters = mCamera.getParameters();

        mParameters.set("saturation", 10);

        mCamera.setParameters(parameters);

        由于HAL V1的参数传递是通过字符串来完成的,也就是最后传到HAL的字符串里面会有“saturation=10”  这样的字符串,在HAL直接解析这些字符串就OK了。

但是到了HAL V3,从framework到hal的参数传递都是通过metadata的方式来传递,简单的说就是每一个设置现在都变成了一个参数对,比如假设要设置AE mode为auto,以前V1可能是“AE mode=auto”这样的字符串,在V3就是比如AE mode的功能序号是10,参数auto为

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值