Android Camera专项
文章平均质量分 68
雪舞飞影
喜欢钻研Android源码的程序猿
展开
-
Camera 4Cell(Remosaic)简介
曝光数(EV)是由感光度和光圈大小共同决定的。EV,即Exposure Value,是反映摄影中曝光量的一个参数。在ISO为100、光圈系数为F1、曝光时间为1秒的条件下,曝光量被定义为0。如果曝光量减少一档(快门时间减少一半或者光圈缩小一档),EV值就会增加1;反之,如果曝光量增一档(快门时间增加一倍或者光圈增加一档),EV值就会减少1。当光圈大小保持不变时,ISO值的改变会直接影响到照片的亮度。ISO值越大,感光度越高,照片就会越亮,相应的EV值就越小。原创 2024-01-02 20:26:03 · 1301 阅读 · 0 评论 -
MTK平台闪光灯相关信息
如下修改为闪光灯校准:vendor/mediatek/proprietary/custom/mt6761/hal/flashlight/flash_tuning_custom_cct.cpp。可通过如上Code中的bStrobeBVTrigger字段来查看当前环境值和打闪阈值。这里我们以普通的mt6761为例,可以查看部分代码的设置。(B)kernel Log查看(3次打闪)(A)main Log查看(3次打闪)打闪几次可通过如下Log判断。另可通过如下源码查看调用过程。原创 2023-10-11 17:04:01 · 1222 阅读 · 0 评论 -
人脸解锁设备时出现相机报错
那引起发送request失败的原因是什么?从上面的Log可以看到,当超过7 frames之后,P1并不是真正的在出帧了,而是P1在做垫帧,我们在来看一下P2是否有接收到数据。现在问题的现象是:刚亮屏大概在2s以内对着人脸一般是能解锁的,但是超过2s之后在对着人脸,是无法解锁成功的。可以看出,相机的Hal P2流程也是有正常走的,而我们看一下P2是否有接收到数据。可以看出,相机的Hal P1流程是有正常走的,而我们看一下P1是否有接收到数据。从Log来看,相机模组是有正常上电的,表示相机是有正常启动的。原创 2023-09-21 09:39:58 · 990 阅读 · 0 评论 -
MTK平台如何通过adb动态读写sensor寄存器的值
本篇文章实作环境是:调试效果或debug sensor register时需要动态读写sensor寄存器应该怎样修改代码?目前参考的代码是Kernel-4.19,具体每个kernel版本可能都差不多,这里我们只看Main Sensor。原创 2022-12-06 16:36:40 · 1472 阅读 · 0 评论 -
MTK平台设置不同的预览Size
这边文章记录的是1280x800=1.6屏幕分辨率预览窗口大小,sensor预览实际出图为4656x3496。原创 2022-11-24 17:38:10 · 1644 阅读 · 0 评论 -
MTK平台Camera人脸识别算法灵敏度参数
当我们在使用MTK平台的相机时,如果默认使用MTK自带的人脸算法,可能会出现人脸识别不准确或者误识别等情况,这个问题MTK也提供了部分参数可供修改,我们接下来看一下应该如何修改。以上介绍的参数是允许调整的,其它参数一般不建议去调整。原创 2022-11-22 14:47:46 · 1630 阅读 · 0 评论 -
Camera/Lens流程(三)——Sensor Driver Check
如上打印的是从sensor driver中query出来的配置信息,sensor index:0代表是main camera,Scenario id:0代表preview mode,grab window size为2096*1552。其中mipi_pixel_rate代表sensor实际的mipi_pixel_rate,请check是否与sensor driver中配置的一致,同时确认sensor吐data的实际Vertical_blanking是否满足平台要求。原创 2023-03-14 15:54:49 · 1773 阅读 · 0 评论 -
Camera/Lens流程(二)——异常分析
Camera Sensor / Lens 点亮流程分析原创 2022-11-09 16:59:02 · 1868 阅读 · 0 评论 -
Camera/Lens流程(一)——点亮
Camera Sensor / Lens 点亮流程原创 2022-11-09 16:56:08 · 2612 阅读 · 0 评论 -
MTK平台Metadata的加载(四)—Q版本后
该目录下的文件结构如下所示,除了config_static_metadata_project.h 这支文件,其他文件都是 STATIC_METADATA2_BEGIN(DEVICE,TYPE,COMMON)类型,以 DEVICE 开头的都是 Android P 的Metadata加载方式,只有Android Q的加载方式没有加载到数据时才会使用。impBuildStaticInfo_v1_overwrite()提供强制修改 metadata 的接口,加载的类型是[MOD_OVERWRITE]。原创 2022-09-29 13:59:00 · 2004 阅读 · 0 评论 -
MTK平台Metadata的加载(三)——其他Static和Request加载
(1)加载其他Static Metadata在 MetadataProvider.cpp 中的 constructStaticMetadata()进行 static metadata 加载。(A)MetadataProvider::onCreate()//vendor/mediatek/proprietary/hardware/mtkcam/utils/metastore/metadataprovider/MetadataProvider.cppstatus_tMetadataProvider:原创 2022-09-28 20:40:22 · 1319 阅读 · 0 评论 -
MTK平台Metadata的加载(二)——Sensor和3A相关Static加载
Camera static metadata 在 camerahalserver 进程启动时就会进行加载。(1)CameraService的启动camerahalserver: 透过 init service 启动。(A)Android.mk文件ifneq ($(MYKCAM_USE_LEGACY_HAL_API),yes)#-----------------------------------------------------------ifeq ($(MTK_CAM_LAZY_HAL),原创 2022-09-28 20:00:16 · 3230 阅读 · 0 评论 -
MTK平台Metadata的加载(一)——Metadata介绍
(1)Metadata的分类Camera API2/HAL3 的核心为 per-frame control,为了达成这个目标产生了 metadata 的机制,metadata一共分成三类 constrol、dynamic 以及 static。Control(request):当APK query出static metadata 后,可以从中作自己想要的控制。(每一帧都可以设定,会绑定对应的 image callback)。Dynamic(result):当 Hal层收到 control metad原创 2022-09-28 17:27:48 · 1977 阅读 · 8 评论 -
MTK平台拍照录像如何实现Mirror效果
MTK平台实现Mirror效果原创 2022-08-02 19:28:56 · 1083 阅读 · 1 评论 -
MTK Camera自定义Vendor Tag(二):示例
我们就直接在Common下定义此Tag了。原创 2023-06-20 20:51:39 · 966 阅读 · 0 评论 -
MTK Camera自定义Vendor Tag(一):理论
MTK Camera自定义Vendor Tag原创 2022-07-30 11:46:34 · 1593 阅读 · 4 评论 -
MTK平台Camera Dump Buffer处理
MTK平台如何Dump Buffer原创 2022-07-27 14:34:56 · 1883 阅读 · 0 评论 -
MTK平台如何确定Tuning的Scenario
MTK平台的Camera如何确定效果文件的Scenario原创 2022-06-21 20:23:31 · 1584 阅读 · 0 评论 -
MTK平台Camera图片的Exif信息
Mtk平台的Camera Exif信息是如何产生的?原创 2022-06-11 15:51:22 · 1602 阅读 · 3 评论 -
Mtk平台出现NE的分析简记
(1)出现原因 / Log分析测试在进行压力测试的过程中,快速的对Mtk Camera进行多次拍照,Camera App偶现无法连接到相机的问题。从Main Log中可以看到最后一次拍照时间是03-14 14:27:56.130678:main_log_2__2022_0314_142837:23726: 03-14 14:27:54.167785 4016 5385 I CamAp_PhotoDevice2Controller: [takePicture] mSession= com.media原创 2022-05-19 17:56:10 · 762 阅读 · 2 评论 -
Android打开两颗物理摄像头
(1)背景其实我们平时打开的摄像头都是逻辑摄像头(比如CameraId = 0,CameraId = 1),可以理解为这些Camera为逻辑摄像头。那什么是逻辑摄像头? 那就是软件层面的摄像头。 无论你的物理摄像头(手机上真实的摄像头)是什么样你不需要考虑, 反正你拿到的只是这个逻辑摄像头。这个逻辑摄像头是对物理摄像头的封装。 意思就是这个逻辑摄像头中会包含一个或者多个物理摄像头。摄像头客户端可以通过调用getPhysicalCameraIds() 就可以得到这颗逻辑摄像头下的物理摄像头(当然,原创 2022-05-10 15:53:45 · 2528 阅读 · 0 评论 -
MTK平台如何决定SensorMode
(1)决定Scenario的源码Sensor Scenario是根据App下的Config参数中的image size决定的Scenario。代码如下://vendor/mediatek/proprietary/hardware/mtkcam3/pipeline/policy/config/SensorSettingPolicy.cppenum eMode{ eNORMAL_PREVIEW = 0, eNORMAL_VIDEO, eNORMAL_CAPTURE,原创 2022-05-03 11:31:15 · 1808 阅读 · 0 评论 -
三方Camera应用无法打开Video Mode预览
(1)出错Log以及代码分析最近测试反馈一款三方Camera应用发现无法打开Video Mode预览画面,预览画面是黑屏,从Log看到如下报错:04-25 10:35:25.228 667 1136 E Camera2-Parameters: set: Requested preview size 1280 x 720 is not supported从字面意思可以看出,应该是无法下达preview size从而导致无法预览,我们来看一下报错这里的Code。(A)首先查看代码中获取不同Siz原创 2022-04-28 09:56:54 · 811 阅读 · 0 评论 -
Mtk平台Update部分Metadata值
(1)源码//vendor/mediatek/proprietary/hardware/mtkcam/drv/src/sensor/common/v1/HalSensorList.buildStaticInfo.cppMBOOLHalSensorList::buildStaticInfo(Info const& rInfo, IMetadata& rMetadata) const{ SensorStaticInfo *pSensorStaticInfo = &am原创 2022-03-01 14:50:29 · 603 阅读 · 0 评论 -
MTK平台关于Metadata当中Size的配置
(1)需要配置的种类和FormatMetadata一般常见类型配置//xxxx/config_static_metadata_scaler.hCONFIG_METADATA_BEGIN(MTK_SCALER_AVAILABLE_STREAM_CONFIGURATIONS)CONFIG_METADATA_BEGIN(MTK_SCALER_AVAILABLE_MIN_FRAME_DURATIONS)CONFIG_METADATA_BEGIN(MTK_SCALER_AVAILABLE_STALL_DUR原创 2022-02-22 13:58:53 · 2159 阅读 · 5 评论 -
Mtk平台Camera新增差值(二)
之前介绍了一篇Mtk平台如何在Metadata当中来配置差值Mtk平台Camera新增差值(1),实际功能是可以实现的,但是却无法通过CTS测试的,因为CTS测试会抓取sensor drv的最大输出能力和metadata的最大值来进行比较。下面将介绍另外一种从Framework来添加的方式。(1)Framework逻辑添加(A)CameraDeviceClient.cpp//frameworks /av/services/camera/libcameraservice/api2/CameraDevi原创 2022-03-02 13:59:37 · 869 阅读 · 8 评论 -
Mtk平台Camera新增差值(一)
(1)计算差值如果原有的差值列表中没有需要的差值,可通过计算算出符合需求的插值。具体计算方法如下:假设像素的长宽分别为X,Y,则插值为XY。由于MTK规定各参数必须是16的倍数,所以有如下公式:(A)16:9的插值://n 为调整插值大小的参数,通过增大或者减小n的值来算出不同的插值XYX = 16*16*nY = 16*9*nXY = (16*16*n ) * (16*9*n)//12M的4608 * 2592n = 4608/ 16 / 16 = 18n = 2592/ 16原创 2022-01-07 15:06:40 · 1158 阅读 · 2 评论 -
Mtk平台Camera Sensor添加mipi_pixel_rate属性
(1)添加原因在使用Camera的时候Log中总出现如下相关Error:12-25 15:11:09.606250 749 17060 E MtkCam/HalSensor: [sendCommand] SENSOR_CMD_GET_SENSOR_PIXELMODE: mipi pixel rate should not be 0 (sendCommand){#628:vendor/mediatek/proprietary/hardware/mtkcam/drv/src/sensor/mt6761/原创 2021-12-29 15:57:57 · 2284 阅读 · 0 评论 -
Camera API和HAL版本对应关系
(1)API和Hal版本对应关系由于HAL版本有HAL1和HAL3,Java API有 API1和API2,两两组合调用就要4种方式(API1 -> HAL1、API1 -> HAL3、API2 -> HAL1、API2 -> HAL3)。HAL & APIAPI 1API 2HAL 11>2>3>4>5>69>13>1>2>3>4>5>6HAL 31>2&g原创 2021-12-10 16:25:37 · 981 阅读 · 0 评论 -
Camera Hal3在Framework架构(七):总结流程篇
(1)文件位置//frameworks/base/core/java/android/hardware/camera2/CameraManager.javaCameraDevice.javaCameraCaptureSession.java//frameworks/base/core/java/android/hardware/camera2/implCameraDeviceImpl.javaCameraCaptureSessionCore.javaCameraCaptureSession原创 2021-08-13 22:06:10 · 1056 阅读 · 2 评论 -
Camera Hal3在Framework架构(六):Camera Provider篇
(1)概述纵观整个Android系统,对于Camera Provider而言,对上是通过HIDL接口负责与Camera Service的跨进程通信,对下通过标准的HAL3接口下发针对Camera的实际操作,这俨然是一个中央枢纽般的调配中心的角色。Camera Provider通过提供标准的HIDL接口给Camera Service进行调用,保持与Service的正常通信,其中谷歌将HIDL接口的定义直接暴露给平台厂商进行自定义实现,其中为了极大地减轻并降低开发者的工作量和开发难度,谷歌很好地封装了其跨进原创 2021-12-09 16:52:58 · 2793 阅读 · 0 评论 -
Camera Hal3在Framework架构(五):CameraService篇
(1)CameraService架构Camera Service是随着系统启动而运行,主要目的是向外暴露AIDL接口给Framework进行调用,同时通过调用Camera Provider的HIDL接口,建立与Provider的通信,并且在内部维护从Framework以及Provider获取到的资源,且按照一定的框架结构保持整个Service在稳定高效的状态下运行。当系统启动的时候会首先运行main_cameraserver程序,紧接着调用了CameraService的instantiate方法,该方法原创 2021-12-09 16:52:25 · 1735 阅读 · 0 评论 -
Camera Hal3在Framework架构(四):AIDL篇
(1)概述Camera Service被设计成一个独立进程,作为一个服务端,处理来自Camera Framework 客户端的跨进程请求,并在内部进行一定的操作,随后作为客户端将请求再一次发送至作为服务端的Camera Provider,整个流程涉及到了两个跨进程操作,前者通过AIDL机制实现,后者通过HIDL机制实现。(2)Framework层的AIDL在Android系统中,两个进程通常无法相互访问对方的内存,为了解决该问题,谷歌提出了Messager/广播以及后来的Binder,来解决这个问题原创 2021-12-09 16:47:59 · 1613 阅读 · 0 评论 -
Camera Hal3在Framework架构(三):API1与API2区别篇
内容Camera1.0Camera2.0权限android.permission.CAMERAandroid.permission.CAMERA布局SurfaceViewTextureView实现接口SurfaceHolder.Callback 1.surfaceCreated 2.surfaceChanged 3.surfaceDestroyedSurfaceTexture...原创 2019-06-13 11:29:13 · 10524 阅读 · 0 评论 -
Camera Hal3在Framework架构(二):API2篇
(1)概述谷歌提出Camera Api2接口的时候,将其具体实现放入了Camera Framework中来完成,Framework内部负责解析来自App的请求,并且通过AIDL跨进程接口下发到Camera Service中进行处理,并且等待结果的回传。(2)Camera API2我们来回顾下Api1接口的基本逻辑,该接口主要通过一个Camera.java类来定义了所有的控制行为,通过定义诸如open、startPreview、takePicture、AutoFocus等标准的接口来实现打开设备、预览原创 2021-12-09 16:47:17 · 1446 阅读 · 0 评论 -
Camera Hal3在Framework架构(一):架构篇
(1)Hal3架构分析(A)应用框架应用代码位于应用框架级别,它使用 Camera 2 API与相机硬件进行交互。在内部,这些代码会调用相应的 Binder 接口,以访问与相机互动的原生代码。(B)AIDL(Binder IPC 接口)与 CameraService 关联的 binder 接口可在 frameworks/av/camera/aidl/android/hardware 中找到。生成的代码会调用较低级别的原生代码以获取对实体相机的访问权限,并返回用于在框架级别创建 CameraDevi原创 2021-12-09 16:45:57 · 1665 阅读 · 0 评论 -
Mtk Camera Hal到驱动的流程(三)
(1)Camera成像原理(A)成像原理物体通过镜头(lens)生成的光学图像投射到图像传感器上(CMOS/CCD集成电路),把光信号转换为电信号;然后经过A/D(模数转换)转换后变为数字图像信号(图像处理器ISP处理);在送到数字信号处理器中处理(DSP)转换成标准的GRB、YUV等格式图像信号;(B)相机包含四大件镜头(lens)、图像传感器(sensor)、图像处理器(ISP)、数字信号处理器(DSP)镜头(lens)是相机的灵魂,镜头(lens)对成像的效果有很重要的作用,是利原创 2021-11-22 18:53:36 · 3646 阅读 · 0 评论 -
Mtk Camera Hal到驱动的流程(二)
(1)Camera驱动文件结构camera 整个驱动框架分为三个部分: hal层 逻辑调用,kernel层 的通用驱动 sensorlist.c 和 具体IC 的驱动, 比如 gc2385_mipi_raw.c 。kernel 起来后不会直接去访问 硬件sensor ,而是会注册相关的驱动,之后 Android系统 起来后会启动相关的服务如: camera_service ,在 camera 服务中会直接去访问 hal层 , kernel驱动 ,进而操作 camera 。这里只分析 kernel层中 c原创 2021-11-22 18:06:07 · 2632 阅读 · 0 评论 -
Mtk Camera Hal到驱动的流程(一)
(1)架构介绍(A)Camera的框架分为Kernel部分和Hal部分Kernel部分:image sensor driver——负责具体型号的sensor的id检测,上电,以及在preview、capture、初始化、3A等等功能设定时的寄存器配置;ISP driver——通过DMA将sensor数据流上传;Hal部分:imageio——主要负责数据buffer上传的pipe;drv——包含imgsensor和isp的hal层控制;feature io——包含各种3A等性能配置;原创 2021-11-22 17:42:45 · 4344 阅读 · 1 评论 -
Mtk Camera Sensor Bring Up(笔记)
这里记录添加一个新的sensor需要注意的文件,以mt6779为例。(1)ProjectConfig.mk文件配置//device/mediatek/mt6779/ProjectConfig.mk//sensorCUSTOM_HAL_IMGSENSOR = gc8034_mipi_raw hi846_mipi_raw gc5035_mipi_raw sc500cs_mipi_rawCUSTOM_HAL_MAIN_IMGSENSOR =gc8034_mipi_raw hi846_mipi_raw原创 2021-11-11 11:03:44 · 2594 阅读 · 0 评论