Camera 冷启动阶段分解
一、Camx trace 调试开关设置
二、Camx 调试开关设置懒人脚本
三、Camera 冷启动阶段分解分析
一、Camx trace 调试开关设置
1.设置 camxoverridesettings trace开关
adb rootadb remountadb shell "echo traceGroupsEnable=0x10080 >> /vendor/etc/camera/camxoverridesettings.txt"adb shell "echo traceErrorEnable=TRUE >> /vendor/etc/camera/camxoverridesettings.txt"adb shell "echo traceOutputEnable=0x10080 >> /vendor/etc/camera/camxoverridesettings.txt"adb reboot
##2. 重启后设置开启camx trace 开关
因为 camxoverridesettings 只有重启之后可以生效,所以重启完成后需要开启trace 开关,既可以开始抓取Camera的 Systrace。
adb shell "echo 1 > d/tracing/events/camera/enable"
二、Camx 调试开关设置懒人脚本
下面脚本主要用来设置Camx debug trace 开关的,内容如下:
#bin/bash# setting camxoverridesettings prop
funSetCamxoverridesettings(){adb shell "echo traceGroupsEnable=0x10080 >> /vendor/etc/camera/camxoverridesettings.txt"adb shell "echo traceErrorEnable=TRUE >> /vendor/etc/camera/camxoverridesettings.txt"adb shell "echo traceOutputEnable=0x10080 >> /vendor/etc/camera/camxoverridesettings.txt"
}# setting CameraTrace prop
funEnableCameraTrace(){adb shell "echo 1 > d/tracing/events/camera/enable"
}# cat setting result
funCatCameraProp(){echo "--------------------------------------------"echo "please check Camera trace prop is set sucess"echo "--------------------------------------------"echo "camxoverridesettings prop :*****************"adb shell cat /vendor/etc/camera/camxoverridesettings.txtecho "tracing prop :******************************"adb shell cat d/tracing/events/camera/enable
}# it's only used in debug version
funRemountDevice(){adb rootadb remountif [ $? -eq 0 ]; thenecho "remount success"funSetCamxoverridesettingsadb shell cat /vendor/etc/camera/camxoverridesettings.txtfor((i=0;$i<=10;i++))dosleep 1echo "waring !!! the phone will reboot after $i s"doneadb rebootfor((i=0;$i<=50;i++))dosleep 1echo "waiting phone is reboot after $i s "doneadb rootadb remountfunEnableCameraTracefunCatCameraPropelseecho "remount failed,please remount the devices"fi
}# main
funRemountDevice
echo "input any num exit "
read num
查看Camera 相关进程
测试后查看下Camera 相关进程,有助于后续Systrace 有选择的分析查看。
C:\Users\ProgramAndroid>adb shell ps | findstr camera
cameraserver 810 1 4396356 124740 0 0 S android.hardware.camera.provider@2.4-service_64
cameraserver 807 1 37792 3240 0 0 S vendor.oneplus.hardware.camera@1.0-service
cameraserver 1418 1 69628 11096 0 0 S cameraserver
system 6519 683 5221532 33168 0 0 S com.oneplus.camera.service
u0_a130 9163 683 6052676 46388 0 0 S com.oneplus.camera.pictureprocessing
system 10641 683 5594508 84672 0 0 S com.wingtech.cameraCalibration
u0_a138 12467 683 7046152 135544 0 0 S com.oneplus.camera
#三、Camera 冷启动阶段分解分析
1. 从 TouchUp 到 ActivityStart 耗时
从Touch UP 到 ActivityStart 阶段,系统创建App进程耗时:
- 1.PostFork 耗时需要排查 Zygote.java 代码
Zygote.java frameworks\base\core\java\com\android\internal\os
- ZygoteInit 耗时需要排查ZygoteInit.java 代码
ZygoteInit.java frameworks\base\core\java\com\android\internal\os
- 3.ActivityThreadMain耗时需要排查ActivityThread.java代码
ActivityThread.java frameworks\base\core\java\android\app
- bindApplication 耗时需要排查ActivityThread.java代码,同上
2. 从 ActivityStart 到 App 层 OpenCamera 耗时
1. App 开始执行 MainActivity 一系列 onCreate,onStart,onResume,openCamera等操作
2.Framework层 cameraserver 开始响应App getCameraCharacteristics 、connectDevice 等操作。
- activityStart 耗时需要排查 LaunchActivityItem.java 代码
LaunchActivityItem.java frameworks\base\core\java\android\app\servertransaction
- activityStart 耗时需要排查 LaunchActivityItem.java 代码
- ResumeActivityItem耗时需要排查 ResumeActivityItem.java 代码
ResumeActivityItem.java frameworks\base\core\java\android\app\servertransaction
- ResumeActivityItem耗时需要排查 ResumeActivityItem.java 代码
- Choreographer#doFrame 耗时需要排查 Choreographer.java 代码
Choreographer.java frameworks\base\core\java\android\view
- Choreographer#doFrame 耗时需要排查 Choreographer.java 代码
##3.HAL 层 OpenCamera耗时
HAL 层开始响应 APP OpenCamera的操作,并返回 open状态 给APP。
- camera_module->open 耗时需要排查hal 层 CameraModule.cpp open 方法中的耗时
CameraModule.cpp hardware\interface\camera\common\1.0\default
4.APP 层 OpenCameraDone 到ConfigureStreams
##5.HAL 层 ConfigureStreams 耗时
##6. APP 层 ConfigureStreams Done 到 SetRepeatingRequests
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MxaJ010x-1611021583363)(https://upload-images.jianshu.io/upload_images/2118860-a7485ec48232cca3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
##7.SetRepeatingRequests 到 第一帧HAL3ProcessCaptureResult
##8.HAL3ProcessCaptureResult 到第一帧Preview
##9.Camera APP冷启动总耗时
Camera 冷启动阶段分解相关推荐
- 从0到1,关于产品冷启动阶段。
冷启动是什么? 冷启动是一个产品(或者新功能)刚诞生的一个阶段,此阶段的产品面临着以下问题: 1.缺少用户及相关资源. 2.产品模式未成熟,能否满足用户,迎合市场趋势仍是未知数. 因此,在此阶段的主要 ...
- 如何应对数据匮乏,试试冷启动阶段开发的风险评分
前言: 在模型开发过程中,或多或少都会遇到在生产过程中非常常见的问题就是模型样本开发不足.特别是在一些数据策略的冷启动阶段,而关于这些我们之前的文章都有以下内容: ①讲解经典专家评分卡怎么实操 ②两种 ...
- 冷启动阶段的多规则策略如何筛选?
平时在策略冷启动也好,或者是冷启动后面的优化的时候也好,都会面临以下问题的,当客户命中多条规则的情况下,我们如何筛选合适的规则呢?(这种情况在很多规则中也非常常见,因为任何客户都存在命中多条规则的情况 ...
- 两阶段嵌套泰尔指数分解工具
这里写今天推出的是两阶段嵌套泰尔指数工具. 研究地区经济差异的指数非常多,如变异系数.基尼系数,泰尔指数等等,其中泰尔指数因为可以分解为组内和组间差异,便于分别研究组内和组间差异变动的方向和幅度,因而 ...
- android动态设置冷启动图片拉伸变形,Android冷启动时间优化
冷启动时间是指当用户点击你的app那一刻到系统调用Activity.onCreate()之间的时间段.在这个时间段内,WindowManager会先加载app主题样式中的windowBackgroun ...
- java 管道设计_使用管道流实现Java 8阶段构建器
Step builder多阶段步骤构造器模式是一种对象创建软件设计模式.与传统构建器模式进行比较时,步骤构建器模式提供了一些简洁的好处.Step Builder模式的主要优势之一是为客户提供有关如何使 ...
- 小微数字风控必学-冷启动开发风险评分(含实操)
新产品上线,往往只能使用规则进行审批与授信.能不能拦住风险是一回事,老板报以不信任的目光更使得风控从业人员倍受挫折.我们提供一个迁移学习风险评分开发方案,尝试在冷启动阶段就完成风险评分的开发. 假定某 ...
- Conflux 进阶课 | 初始阶段通证发行数量
Conflux 进阶课 在这里,Conflux 团队成员将敞开心扉,权威解析 Conflux 网络最新进展.生态构建进程等信息,没有八卦.没有小道消息,绝对干货.绝对知无不言,想要 360° 无死角了 ...
- 微服务化的不同阶段 Kubernetes 的不同玩法
欢迎访问网易云社区,了解更多网易技术产品运营经验. 作为容器集群管理技术竞争的大赢家,Kubernetes已经和微服务紧密联系,采用Kubernetes的企业往往都开始了微服务架构的探索.然而不同企业 ...
最新文章
- 2、编写单元测试用例,对用户注册功能的DAO层进行测试。(注意:测试用例应考虑成功和失败的情况)...
- 【数据结构】图的应用(普利姆算法、克鲁斯卡尔算法、迪杰斯特拉算法、弗洛伊德算法、拓扑排序)
- 网关Ocelot功能演示安排的明明白白~~~
- DI容器是代码污染者
- VirtualAlloc和VirtualCopy的蕴含知识点
- iOS开发之通知中心(NSNotificationCenter)
- python中使用PIL模块中的ImageEnhance进行图片数据增强
- vgs是什么意思有什么用_Linux中vgs命令起什么作用呢?
- win10删除文件提示源文件路经太长无法删除解决办法
- 梁宁《产品思维》之1发刊词
- Datav:从零开始的数据可视化大屏搭建系统
- 网络基础 IP协议 子网划分 子网汇总 超网 无类间路由超详细介绍
- 每个程序员必须掌握的常用英语词汇(建议收藏)
- std::true_type和std::false_type详解
- Python将图片合成视频方法二:moviepy
- centos7安装nvida显卡驱动
- 编译btccom版本的dogecoin钱包
- 2023新疆农业大学计算机考研信息汇总
- 2020年中山大学数据科学与计算机学院夏令营面试
- 猫猫学iOS 之CoreLocation指南针小应用
热门文章
- 下载Nexus老版本war包
- SQL Server 扩展秘钥管理(EKM)
- 存在的多个逻辑与()和逻辑或(||)的执行顺序
- 交互设计软件Framer X for mac软件测评
- FPGA(一)Vivado与ModelSim
- MATLAB新手简明使用教程(七)——使用matlab建立多项式以及求导,商求导乘积求导等——新手来看,保证看懂。
- ENDNOTE使用方法
- Javafinal关键字final关键字的几种用法
- 简单的银行管理系统(功能齐备)
- python实现次梯度(subgradient)和近端梯度下降法 (proximal gradient descent)方法求解L1正则化