mtk相机冷启动拆解
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 → ActivityStart
S1:ActivityStart → open camera | start
S2:Open camera
S3:Open camera | end → Configure streams | start
S4:Configure streams
S5:Configure streams | end → SetRepeatingRequests
S6:SetRepeatingRequests → 1st frame out from hal
S7: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
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和多媒体耗时,有待研究
mtk相机冷启动拆解的更多相关文章
- 关于android MTK相机L版本,切换屏幕比例后,分辨率随之改变,但重新进入相机后原有分辨率不再生效问题
BUG详细:比如4:3的时候是200W,切成全屏变400W,重新切回4:3为300W,退出相机后,重新进入又变成200W. 原因分析:这个版本的设计如此,当你点选屏幕比例的时候,程序设计是把这个比例值 ...
- MTK Android 默认值修改笔记
1.设置菜单: 1.1位置信息(Location)默认关闭: 请将 alps\frameworks\base\packages\SettingsProvider\res\values\default. ...
- 论山寨手机与Android联姻 【6】MTK手机的基带芯片
MTK的硬件技术的核心,在于它的基带芯片.为了降低成本,同时缩减手机主板的面积,基带芯片中除了CPU以外,还集成了很多外设控制器.Feature Phone的功能,基本上取决于基带芯片所支持的外设功能 ...
- 论山寨手机与Android联姻 【5】MTK颠覆手机产业链
MTK一站式解决方案(Turn-Key)模式出现以前,手机设计开发流程大约可以分成以下6步. 第1步,Design House从芯片厂商那里拿到参考设计. 芯片厂商根据自己的市场部门对手机市场的预测, ...
- MTK Camera相关的Makefile Option详解
列举了所有Camera相关的MakefileOption,并对其功能含义和OptionValues做了详细的解释.[KEYWORD]Others[SOLUTION]YUVCAM_INTERPOLATI ...
- MTK Camera驱动移植
对于MTK Camera驱动移植一般分为四部分: 1.硬件IO口配置: 2.Camera驱动移植: 3.上电时序. 4.改动i2c控制器: 硬件电路: 1.GPIO配置 打开 mediatek\dct ...
- Android9.0 MTK 平板横屏方案修改(强制app横屏 + 开机logo/动画+关机充电横屏 + RecoveryUI 横屏)
文章较长建议先收藏再看 拆解步骤 1.app 强制横屏显示,无视 android:screenOrientation="portrait" 属性 2.屏幕触摸坐标修改为横屏 3.开 ...
- 【VS开发】【图像处理】相机中白平衡的算法模拟实现
相机主要技术点为3A算法. 而3A算法主要指的是自动对焦(AF).自动曝光(AE)及自动白平衡(AWB).自动白平衡:根据光源条件调整图片颜色的保真程度. 网上时常有类似招聘如下的招聘信息: ---- ...
- 【硬核摄影2.0】用线性CCD器件制作扫描相机
本文参考资料:[1] (Strongly Recommend!) Fundamentals and Experiments of Line Scan Camera: http://www.elm-ch ...
随机推荐
- 记angular和asp.net使用grpc进行通信
AspNetCore配置grpc服务端 新建一个Demo项目: GrpcStartup, 目录结构如下图: GrpcStartup.GrpcServices需要安装下面的依赖 <PackageR ...
- Educational Codeforces Round 43
Educational Codeforces Round 43 A. Minimum Binary Number 显然可以把所有\(1\)合并成一个 注意没有\(1\)的情况 view code / ...
- HDU6532 Chessboard (最大费用流)
题意:棋盘上有n个棋子 每个棋子都有收益 现在给定1e5条线 有横着的 竖着的 规定只能在线的一侧选最多ki个棋子 问最大收益 题解:写自闭的一道题 很容易想到是网络流 但是建图有点难 第一道最大费用 ...
- 01.原生态jdbc程序中问题总结
1.数据库启动包配置到工程目录中(mysql5.1) mysql-connector-java-5.1.7-bin.jar 2.jdbc原生态操作数据库(程序) 操作mysql数据库 1 packag ...
- 在kubernetes集群里集成Apollo配置中心(6)之实战使用apollo分环境管理dubbo服务
生产实践 1.迭代新需求/修复BUG(编码--->提git) 2.测试环境发版,测试(应用通过编译打包发布至test命名空间) 3.测试通过,上线(应用镜像直接发布至prod命名空间) 系统架构 ...
- 4.安装fluentd用于收集集群内部应用日志
作者 微信:tangy8080 电子邮箱:914661180@qq.com 更新时间:2019-06-13 11:02:14 星期四 欢迎您订阅和分享我的订阅号,订阅号内会不定期分享一些我自己学习过程 ...
- python sort() sorted()的区别
sorted不保存 sort保存:
- confirm() :带有指定消息和 OK 及取消按钮的对话框
定义和用法 confirm() 方法用于显示一个带有指定消息和 OK 及取消按钮的对话框. 语法 confirm(message) 参数描述 message 要在 window 上弹出的对话框中显示的 ...
- Spring(三) Spring IOC
Spring 核心之 IOC 容器 再谈 IOC 与 DI IOC(Inversion of Control)控制反转:所谓控制反转,就是把原先我们代码里面需要实现的对象创 建.依赖的代码,反转给容器 ...
- DB-Engines Ranking : Redis, MongoDB, MySQL
DB-Engines Ranking http://db-engines.com/en/ranking The DB-Engines Ranking ranks database management ...