【camera】Mtk相机冷启动的拆解笔记
文章目录
- 1 概述
- 2 S0+S1
- 3 S2
- 4 S3
- 5 S4
- 6 S5
- 7 S6
- 8 S7
1 概述
冷启动大致可以分成以下几块内容:
S0 | (system) |
主要是 Activity 的创建耗时(从 Touch up,即 ptr:up 开始)
|
ptr:up |
S1 | App |
从 Activity 创建成功,到下 open camera 的时间(对应 CameraService::connect ); Note:我习惯把 S0 和 S1 算成一大阶段;
|
|
S2 | HAL |
open camera 到 onOpened (即 connect 调用完成)回调上去的时间;
|
|
S3 | App |
onOpened 回调后,到 App 去 creatSession 的时间;
|
|
S4 | HAL |
creatSession 的耗时(对应整个endConfigure);
|
|
S5 | App |
creatSession 完成到 setRepeatingRequest 的时间;
|
|
S6 | HAL |
setRepeatingRequest 后到底层抛出第一帧(cameraserver 会有一个 first full buffer 的记录)的时间;
|
|
S7 | App+MultiMedia |
底层出第一帧后,到 App 真正第一次开始 draw 数据,数据送到 surfaceFlinger 显示出来(第二次 onMessageReceived 完成)的时间。
|
adb shell setprop service.adb.root 1
开发者模式关闭再打开
sched/freq/idle #这三个tag是cpu 信息,无论如何必须带上
gfx/view/input #测试列表滑动.桌面滑动.这种流畅性问题
gfx/view/imput/hwui #绘图问题
gfx/view/input/res/am/wm #测试app启动
gfx/view/input/dalvik/disk #GC或者IO导致卡顿
gfx/view/input/res/am/wm/power #亮屏,电量相关
python systrace.py gfx camera view input sched freq video disk dalvik res am wm -b 20480 -t 5 -o trace.html
S0:Touch Up → ActivityStartS1:ActivityStart → open camera | startS2:Open cameraS3:Open camera | end → Configure streams | startS4:Configure streamsS5:Configure streams | end → SetRepeatingRequestsS6:SetRepeatingRequests → 1st frame out from halS7:1st frame out from hal → Display show 1st frame
2 S0+S1
system+app耗时
搜索关键字ptr:up
可以看到如下的内容:这是按下相机按钮并且抬起的操作
从 这里开始计时到connectDevice结束是S0+S1的时间.
S1的主要时间是activityStart到connectDevice
S0: AppLaunch_dispatchPtr:Up --> activityStart
S1: activityStart --> connectDevice
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jbcqITt4-1614505806413)(https://i.loli.net/2021/02/13/vJPn9CIAjFhYcKe.png)]
3 S2
hal耗时
搜索connectDevice
可以看到 connectDevice的持续时间.这就是S2的耗时
4 S3
app耗时
从下图可以看到是从connectDevice的结尾到 endConfigure的开始
5 S4
hal 耗时
endConfigure的持续时间
6 S5
app耗时
从endConfigure的结尾到setRepeatingRequest返回完成
7 S6
hal耗时
直接搜索first full buffer .有的apk会返回多个.一般都是以最后一个收尾为主.
这个一般都是和captureRequest返回在一起的.
耗时是从setRepeatingRequest 计算到first full buffer返回
8 S7
app和多媒体耗时
【camera】Mtk相机冷启动的拆解笔记相关推荐
- Camera和Image sensor技术基础笔记(5) -- HDR相关技术
动态范围(Dynamic Range) 动态范围最早是信号系统的概念,一种信号系统的动态范围定义为:最大的信号不失真的电平和噪声电平的差,在实际场景中,多用分贝(dB)为单位来衡量一个信号系统的动态范 ...
- Camera Calibration 相机标定
Camera Calibration 相机标定 一.相机标定方法 在opencv中提供了一组函数用于实现相机的标定,标定返回的值包括:相机内参矩阵(fx fy xc yc).相机外参矩阵(R t)以及 ...
- 关于qcom camera cpp driver 的buf分析笔记(msm8996)
关于qcom camera cpp driver 的buf分析笔记(msm8996) tags : linux camera 文章目录 关于qcom camera cpp driver 的buf分析笔 ...
- mtk+android+之mt6577驱动笔记,MTK6577+Android之音频(audio)移植
MTK6577+Android之音频(audio)移植 备注:audio PA音频功放(power amplifier) 先借用<Y1MT6577 design notice V0.1>关 ...
- RGB-D Camera深度相机主流方案对比
RGB-D Camera深度相机主流方案对比 视觉方案 RGB双目 结构光 TOF 测距方式 被动式 主动式 主动式 工作原理 双目匹配,三角测量 激光散斑编码 发射与反射信号时间差 ...
- 28、Intel RealSense Depth Camera D415相机使用教程
基本思想:手中有一块微软的深度相机,结合手册和逻辑写个代码测试一下 注意:深度相机实际与实例分隔模型相结合是效果最佳的,基本思路就是分隔出目标,然后将深度图和RGB图进行对其,然后对实例的图像去关键点 ...
- android 画中画camera,PIP Camera(画中画相机)
PIP Camera是一款关于相机的应用多款特效效果任你挑,pip camera官方版拥有丰富的滤镜,是朋友圈装逼图片必备的特效相机. PIP Camera(画中画相机)软件介绍: 朋友圈晒图必备,自 ...
- [笔记分享] [Camera] MTK Camera基础知识二
Platform: MediaTek 色再现流程: 弥散圆: 在焦点前后,光线开始聚集和扩散,点的影像变成模糊的一个扩大的圆,就是弥散圆. 人眼能够最小扁人的圆成为容许弥散圆. 焦深: 焦点前后各有一 ...
- [笔记分享] [Camera] 各种相机种类及区别
之前工作笔记,分享给大家! 成像原理:
最新文章
- InnoDB和MyISAM区别
- python变量详解_Python 变量详解[学习 Python 必备基础知识][看此一篇就够了]
- 成功的自动化测试实施的5大支柱(译)
- python编译exe文件太大了_python编译windows下可执行的exe文件
- mysql分析表命令_MySql分析整理命令
- 豪鹫闲谈--什么因素影响了我们的工资
- python列表常用方法_第24p,必须掌握,列表的常用方法
- Java web表单异步提交,javaweb系统,我的电脑浏览器可以正常异步提交操作参数给后台,但是同事电脑今天却不知道怎么了,提交给后台的参数为空...
- 微信小程序+TP5——token令牌生成
- Angular实现悬浮球组件
- 重磅!TensorFlow 2.0 来了!
- MySQL级联复制(A-B-C) —log-slave-updates = 1
- 使用IB时设置textView属性崩溃
- nacos注册中心demo
- “strcmp”不能将参数从“LPWSTR”转换为“const char *”
- iOS:栈、堆、字符串常量区、全局区
- 基于Springboot的在线音乐网站开发与实现
- 【论文精读】A view-free image stitching network based on global homography-基于全局单应的无视图图像拼接网络
- Is not configured
- my soft_macsoft
热门文章
- RK3568-SARADC
- VMware vsphere和VMware vsphere Hypervisor有什么不同
- im4java 水印_app后端设计(13)--IM4JAVA+GraphicsMagick实现中文水印
- 【adcdn优化案例】某工具类app广告优化收益增长275%经验分享
- 阿里云,百度云等云服务器中搭建gitblit-1.8.0时,报java.net.BindException: Cannot assign requested address: bind
- 嵌入式系统硬件设计与实践(学习方法)
- 一个IT人才的精彩故事
- spring报MySQLSyntaxErrorException: Unknown error 1146
- DebugView在win7下没有输出内核信息解决办法
- 盘点最常见的5个编程语言排行榜、排名逻辑最新榜单。