自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 【Camera KMD ISP SubSystem笔记】Request 流转与Bubble机制

/把出现bubble request开始到last appiled之间的request都标为CRM_SLOT_STATUS_REQ_ADDED,__cam_req_mgr_apply_on_bubble(link, err_info);

2024-04-27 16:54:40 877 2

原创 【Camera KMD ISP SubSystem笔记】CAM SYNC与DRQ③

如何填写fence dependency(chi node),主要为chinodewarpper调用chinode。如何填写chi fence dependency图,同样主要为chinodewarpper调用chinode。如何填写fence dependency(camxnode),以IPE NODE为例。Chi Fence(non-buffer) Create举例(EISV2)Chi Fence(non-buffer) Signal举例(EISV2)如何填写dependency。

2024-04-25 20:54:02 440

原创 【Camera KMD ISP SubSystem笔记】CAM SYNC与DRQ②

每个Node需要填写自己处理一个request需要的dependency(chifence, fence, metadata/property),只有所有的dependency都满足后,DRQ才会调度线程池去安排node处理request。所有的Dependency会先加入到m_deferredNodes 链表中,当所有的Dependency满足时会添加到m_readyNodes链表中。Dependency:(node填充完Dependency后会送到DRQ,这个是转换为属于DRQ的Dependency)

2024-04-25 13:15:15 1031

原创 【Camera KMD ISP SubSystem笔记】CAM SYNC与DRQ①

2. 当上层下request 经过TFE后,TFE为输出port创建一个fence id(通过CSL、syncManager、cam_sync driver创建一个sync object row,返回fence id)3. TFE 拿到 fence id后,同时将fence id和buffer送给ISP驱动,ISP填充buffer后,通知row已经完成,这时 cam_sync driver上层一个event给syncManager,4. OPE 同样为输出port创建一个fence id、同3。

2024-04-25 02:05:11 374

原创 【Camera KMD ISP SubSystem笔记】CRM V4L2驱动模型

2. cpas为子设备 /dev/v4l2-subdev0,先创建 v4l2_subdev,v4l2_subdev的list指向v4l2_device的subdevs(链表节点)v4l2_subdev的v4l2_dev指向v4l2_device,v4l2_subdev的entity链接到media_device的entities上(链表节点)v4l2_device的mdev指向media_device,v4l2_device的entity链接到media_device的entities上(链表节点)

2024-04-23 23:47:44 340 2

原创 【Qcom Camera】DumpDebugInfo分析

/request 1238 Report Bubble,recovery done //ISP apply request 1241失败在它之后,并且没有为request 1241生成buffer,所以UMD不能获取request 1241的 IFE fence callbacks。--> Check 相应request的DRQ dump看它未满足的prop,确定这些prop由哪个node publish --> 继续追踪相应request 会publish prop的DRQ dump -->...

2024-04-22 22:41:30 829

原创 【Camera Sensor Driver笔记】七、点亮指南之Flash

registerAddr 0x2 flashhigh setting寄存器地址。echo 1 >` led\:flash_0/brightness //开启flash,高亮几秒后熄灭。echo 1 >` led\:torch_0/brightness //开启手电筒,闪光灯常亮。echo 0 >` led\:flash_0/brightness //关闭flash。echo 0 >` led\:torch_0/brightness //关闭手电筒。

2024-04-22 22:35:23 372

原创 【Camera Sensor Driver笔记】六、点亮指南之PDAF

> ① 图像数据 -> PD Pixel correction 进行坏点矫正(将PD点还原为正常的像素点) -> ISP -> ② PD Buffer相位计算 -> ISP。PDStride 1984 pd stats 行buffer大小(一个pixel占两个字节,sensor中pd的width * 2)PDPixelCount 32 一个block里pd点数量,包括左右pd。PDYCoordinate 0 y坐标。

2024-04-22 12:53:57 528

原创 【Camera Sensor Driver笔记】五、点亮指南之Actuator配置

dampingStep 0x3FF dac最大值,未使用。dampingStep 0x3FF dac最大值,未使用。<registerConfig> DAC register 配置信息。registerAddr 0xED IC寄存器地址。registerData 0xAB IC寄存器值。registerAddr 0x03 寄存器地址。registerData 0 dac值,未使用。

2024-04-22 00:10:56 391

原创 【Camera Sensor Driver笔记】四、点亮指南之EEPROM配置

lensSagCalMac DEFAULT/DEG0_OTP/DEG180_OTP 近焦姿势差补偿。lensSagCalInf DEFAULT/DEG0_OTP/DEG180_OTP 远焦姿势差补偿。illuminantType D65/TL84/A/D50/H 色温。configValue 0 电压/电平/时钟状态。configValue 0 电压/电平/时钟状态。

2024-04-22 00:08:00 960

原创 【Camera Sensor Driver笔记】三、点亮指南之Sensor DTS

== camera sensor 接口配置xxsensor.cpp -> xxxsensor.soCalculateExposure 函数 pCalculateExposure函数 (平台)输入参数: pCalculateExposureData realgain :total gain,ae算法传过来的值或者手动曝光的值 linecount:经过平台已经转换过的曝光时间 middlerealg

2024-04-19 12:24:18 506

原创 【Camera Sensor Driver笔记】二、点亮指南之Sensor Module XML

registerAddr 0x0600 sensor寄存器地址。registerAddr 0x0112 sensor寄存器地址。registerAddr 0x0136 sensor寄存器地址。registerAddr 0x0100 sensor寄存器地址。registerAddr 0x0104 sensor寄存器地址。registerAddr 0x0104 sensor寄存器地址。

2024-04-18 23:07:04 708

原创 【Camera Sensor Driver笔记】一、Sensor基本概念

lineLengthPixelClock(hts):对应sensor实际寄存器值, width + HBlank。frameLengthLines(vts):对应sensor实际寄存器值,height + VBlank。2. OutputPixelClock:给mipi传输使用的,影响sensor传输的速率。LineReadoutTime:sensor是行曝光,即一行数据读完的时间。1. VTPixelClock:会影响sensor内部的帧率、曝光。== Sensor 帧率。== Sensor 曝光。

2024-04-17 23:17:57 343

原创 【Camera Framework笔记】五、流程梳理 - 抢占逻辑

2. 根据当前想打开的camera信息创建一个clientdescriptor,调用cameraclientmanager的wouldEvict方法拿到需要Evicted的列表。冲突的定义:(curkey 当前打开的client A camera 0,key 想打开的client B camera 0)当前打开的client A camera 0 == 想打开的client B camera 0 ||当前打开的client A 冲突列表中包含想打开的client B camera 0 ||

2024-04-17 00:58:59 314

原创 【Camera Framework笔记】四、流程梳理 - getCharacteristics&openCamera

score 打开当前Camera的客户端进程oom_adj score,这个值越大越容易被LMK干掉,前台进程这个值为0。score 打开当前Camera的客户端进程oom_adj score,这个值越大越容易被LMK干掉,前台进程这个值为0。state 打开当前Camera的客户端进程的状态,值越小优先级越高。state 打开当前Camera的客户端进程的状态,值越小优先级越高。权限检查、输入参数检查->camera抢占逻辑->client初始化->device初始化。

2024-04-15 13:12:41 343

原创 【Camera Framework笔记】三、Camera Native Framework架构②

FrameProcessorBase拿到Result Metadata后会回调给CameraDeviceClient,CameraDeviceClient再通过onResultReceived接口回调给上层。camera3device根据配置信息决定创建 camera3inputstream camera3outputstream camera3sharedstream。CameraDeviceClient收到上层的调用后,会对应调用到Camera3Device,进而调用到HAL层的接口。

2024-04-14 18:09:18 326

原创 【Camera Framework笔记】二、Camera Native Framework架构①

上层调用到 cameraservice后,cameraservice 调用cameraprovidermanager, cameraprovidermanager 通过 providerinfo对象 调用到 providerinfo类,providerinfo 中通过遍历 device调用到 deviceinfo -> deviceinfo3 -> aidlDeviceinfo3/hidlDeviceinfo3 类中。basicClient又可以调用到 cameraservice。

2024-04-14 18:07:00 365

原创 【Camera 性能笔记】六、Perfetto分析及SQL

uninterruptible sleep NON IO 不可中断的休眠,非IO 在等内核锁,通常是低内存导致等待。mem.locked VmLck VmLck代表进程已经锁住的物理内存的大小.锁住的物理内存不能交换到硬盘。mem.rss VmRSS RSS值,这里的值是RssAnon、RssFile和RssShmem的和。oom_score_adj oom_score_adj 当前该进程的OOM Score ADJ值。

2024-04-13 00:23:21 331

原创 【Camera Framework笔记】一、Cameraserver简介及启动、实例化流程

并将以上两个参数add到 servicemanager,这时cameraservice就已经成功注册到servicemanager中了,查看命令:service list | grep -i “media.camera”此时new出来的 cameraservice 会赋值给sp(调用完cameraservice构造函数后,继续调用CameraService::onfirstRef)tcp通信中,比如 a与b通信,如果b关闭了通信,系统会发出一个sigpipe信号给a,告诉a连接已经断开。

2024-04-10 23:41:45 289

原创 【Camera 性能笔记】五、启动、切换、拍照性能分析

initializeimpl、cameradeviceclient::initializeimpl、camera2clientbase::initializeimpl、camera3device的initializeimpl、camerahal::opensession。cameraserver:createstream-> cameraserver:endConfigure的结束点。调用camera3device的createstream、new camera3outputstream。

2024-04-09 13:22:58 415

原创 【Camera 性能笔记】四、帧率之预览、录像trace分析

EmulateSensor中有threadlloop和processresult,鼠标全选整个周期,用selected range / (result的occurrences / 2) ,除以2是因为result中同时包含meta和buffer,我们只需要buffer。从app角度做第一手分析,看是hal送的帧率问题,还是app处理buffer导致的问题。如果deepth是8个,fw下8个pcr,hal处理8个pcr,fw下第9个时会卡住。1.HAL处理慢:cameraserver的pcr时间会很长。

2024-04-07 13:10:09 262

原创 【Camera 性能笔记】三、帧率之预览buffer分析

2.cameraServer会执行bufferqueue的queuebuffer,把buffer还给bufferqueue,再通过binder调用到cameraAPP的queuebuffer。2.cameraServer会执行bufferqueue的queuebuffer,把buffer还给bufferqueue,再通过binder调用到cameraAPP的queuebuffer。surfaceTexture类型 app参与buffer处理。每帧的buffer 都是shutter先返回。

2024-04-03 01:34:55 426

原创 【Camera 性能笔记】二、软件栈

2.still capture结束会有一个 queuebuffer上来,binder transaction调用到app进程imageReader。4.继续 queuebuffer,onframeavailable,binder transaction调用到sufaceFligure。(queuebuffer:送 buffer,dequeuebuffer:取 buffer)3.binder transaction 调用到app进程的binder reply。为1时表示 预览或拍照buffer。

2024-04-01 13:07:08 137

原创 【Camera 性能笔记】一、perfetto关键操作

flow events : 通常用于binder transaction 到 binder reply之间,可以通过[ 和 ] 进行切换。privot table弹出框中点击edit -> select a cloumn 选择name stack -> add、query。perfetto网站 -> support flag -> privot table -> enable。搜索关键词之后,可以点击f 进行快速显示。如何打开privot table。shift m 永久选中区域。

2024-04-01 00:09:35 125

原创 【OHOS】Camera - NAPI 异步编程

目前鸿蒙媒体框架相机部分,常见的异步方式共两种。表现形式:func(): Promise<Object>表现形式:func(callback: AsyncCallback<boolean>): void两者的差异:通过参数中是否传递callback函数进行区分。本文主讲cameraPicker中遇到的Promise异步方式。

2024-03-18 13:19:23 375

原创 【OHOS】相机框架学习大纲

官网参考资料:OpenHarmony: OpenHarmony是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目,目标是面向全场景、全连接、全智能时代,搭建一个智能终端设备操作系统的框架和平台,促进万物互联产业的繁荣发展。CSDN openharmony社区资料:https://bbs.csdn.net/forums/openharmony?typeId=21526CSDN参考资料:【OpenHarmony】首次开发指南_hdc loader-CSDN博客官网参考资料: m

2024-03-18 13:10:02 956

原创 【Qcom Camera】Camx架构Chi External Node 三部曲之简单集成

2.1 更改文件名称,并在camxchinodememcpy2.cpp中,需要将node的 sectionname更改为com.qti.node.memcpy2.到这里,基本集成流程也差不多了,当然,算法集成不可能一帆风顺,也不会这么简单。这里只介绍大概的流程,仅供了解,有错误的地方欢迎指出。每个node的sectionname需要与mk文件中要生成的so文件名相对应。二、现在已经有了算法库,该如何应用到具体的相机场景中去呢?这里我们不去关注算法本身,只关注集成流程----简单集成。

2023-06-13 22:06:39 760

原创 【Qcom Camera】Camx架构Chi External Node 三部曲之如何加载

qcom camx

2023-04-13 21:23:07 1080 1

原创 【PCK】Camera性能与内存 Q&A

Camera性能与内存 Q&A

2022-09-20 22:23:00 641

原创 【MTK Camera】sensor bringup guide [随笔]

mtk camera

2022-09-20 22:08:00 1631

原创 【Qcom Camera】基于OTP物料代码区分前摄硬件信息的代码实现

camera eeprom

2022-09-18 14:37:53 831

原创 【Qcom Camera】Outlook v4.2032.2新建邮件拍照,预览画面和拍照卡顿

三方app卡顿

2022-09-18 14:28:56 936

原创 【Qcom Camera】HEIC fail相关的CTS 问题

camera cts

2022-09-18 14:24:20 247

原创 【Qcom Camera】解决CTS testFlashControl fail

Camera cts

2022-09-18 14:22:00 612

原创 【Qcom Camera】照片模式连拍定屏分析

连拍定屏

2022-09-18 14:17:23 232

原创 【Qcom Camera】发送彩信时拍照切换图库在切换相机时出现短暂黑屏

warm start

2022-09-18 14:10:17 465

原创 【Qcom Camera】骁龙相机如何添加picturesize

骁龙相机如何添加picturesize

2022-09-18 14:03:27 252

原创 【Qcom Camera】后主摄启动慢问题分析

camera 启动慢

2022-09-18 13:56:52 798

原创 【Qcom Camera】微距eeprom调试

微距eeprom调试

2022-09-18 13:45:30 931

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除