和你一起终身学习,这里是程序员Android
经典好文推荐,通过阅读本文,您将收获以下知识点:
一、启动阶段拆解概览
1. 启动阶段拆解表格
![a3f167e2de23645b7c9cf499be1fb485.jpeg](https://i-blog.csdnimg.cn/img_convert/a3f167e2de23645b7c9cf499be1fb485.jpeg)
Camera 启动阶段拆机表格
S0 :System
deliverInputEvent ===> activityStart 开始
S1 :Camera APP + Camera FWK
activityStart 开始 ===>CameraHal::openSession 开始
S2 :Camera HAL
CameraHal::openSession
S3 :Camera APP + Camera FWK
CameraHal::openSession 结束 ===>CameraHal::configureStreams 开始
S4 :Camera HAL
CameraHal::configureStreams
S5 :Camera APP + Camera FWK
CameraHal::configureStreams 结束===>submitRequestList 开始|
S6 :Camera HAL
submitRequestList 开始===>first full buffer
S7 :Camera APP
first full buffer ===>APP surfaceview
S8 :SurfaceFlinger
APP surfaceview===>SF HWC 屏显第一帧
二、 阶段拆解
S0 点击事件处理到Camera app 启动
![7047c7fcb66380e9eb1507d9729c7301.jpeg](https://i-blog.csdnimg.cn/img_convert/7047c7fcb66380e9eb1507d9729c7301.jpeg)
点击事件处理
S1 Camera app 启动到 下发openCamera
![a9fe2f8e39938a24be2346598132ba1b.jpeg](https://i-blog.csdnimg.cn/img_convert/a9fe2f8e39938a24be2346598132ba1b.jpeg)
Camera activitystart
S2 Camera HAL 开始 opencamera
![e3d7dc16995fbbc0871b63a00fb5b2f4.jpeg](https://i-blog.csdnimg.cn/img_convert/e3d7dc16995fbbc0871b63a00fb5b2f4.jpeg)
camera 下发open camera
S3 open Camera 结束,到配流开始
![e2273a92701fca625a77476b72f9b086.jpeg](https://i-blog.csdnimg.cn/img_convert/e2273a92701fca625a77476b72f9b086.jpeg)
获取Camera 数,配流
S4 Camera HAL 配流并初始化usecase
![706fb04f1565cf7e8d840fdd28c1d412.jpeg](https://i-blog.csdnimg.cn/img_convert/706fb04f1565cf7e8d840fdd28c1d412.jpeg)
Camera 配流并初始化usecase
S5 配流结束到提交预览请求
![c11bcc978da70db14b60ef5cc8339be0.jpeg](https://i-blog.csdnimg.cn/img_convert/c11bcc978da70db14b60ef5cc8339be0.jpeg)
提交预览请求
S6 提交预览请求到返回第一帧
![963d8e5d7ccd0b47f5ca10d857d98cdf.jpeg](https://i-blog.csdnimg.cn/img_convert/963d8e5d7ccd0b47f5ca10d857d98cdf.jpeg)
第一帧callback
S7 APP 处理第一帧并送给SurfaceFlinger
![61ba2b74f21dd00d58abd73184168020.jpeg](https://i-blog.csdnimg.cn/img_convert/61ba2b74f21dd00d58abd73184168020.jpeg)
APP 处理第一帧送给SurfaceFlinger
S8 vsync-SF 信息到来,SF 处理并送显示
![be169c225a8ee5d46ed29cef32fb296c.jpeg](https://i-blog.csdnimg.cn/img_convert/be169c225a8ee5d46ed29cef32fb296c.jpeg)
vsync-SF 信息到来,SF 处理并送显示
三、Trace 中的其他信息
1. 帧率
![0215a029770283d8ae30dce7dc491dac.jpeg](https://i-blog.csdnimg.cn/img_convert/0215a029770283d8ae30dce7dc491dac.jpeg)
Camera HAL 出图帧率 以及 屏幕显示帧率
2. CPU 负载 ,CPU频率
![2e4e01e22f4d166895f24e6358dcbd1c.jpeg](https://i-blog.csdnimg.cn/img_convert/2e4e01e22f4d166895f24e6358dcbd1c.jpeg)
CPU 负载
![5887c18f16e06aafc8598cb40cfda98a.jpeg](https://i-blog.csdnimg.cn/img_convert/5887c18f16e06aafc8598cb40cfda98a.jpeg)
CPU 频率 1.9GHZ 2.4G HZ
VIEngine-Main 预览帧处理
![9ec9f1efe946e1fd9e20a2d5606a02b8.jpeg](https://i-blog.csdnimg.cn/img_convert/9ec9f1efe946e1fd9e20a2d5606a02b8.jpeg)
VivoCamera 预览引擎
![aaf671484ffea30ff0fc1df5eb085a8b.jpeg](https://i-blog.csdnimg.cn/img_convert/aaf671484ffea30ff0fc1df5eb085a8b.jpeg)
预览帧处理
预览请求帧 与预览callback 帧处理
![d58ca621492367048ba4f965a2c8bb4e.jpeg](https://i-blog.csdnimg.cn/img_convert/d58ca621492367048ba4f965a2c8bb4e.jpeg)
Camera 第0帧 预览请求流程
![6c2a2f77e75eb260866f6fe41d6347b3.jpeg](https://i-blog.csdnimg.cn/img_convert/6c2a2f77e75eb260866f6fe41d6347b3.jpeg)
Camera 第 0帧 Callback流程
![cb42c913e02a36c975e314293023ad97.jpeg](https://i-blog.csdnimg.cn/img_convert/cb42c913e02a36c975e314293023ad97.jpeg)
preivew 帧callback
perflock 提频相关
![59637923e9a916ce168363e9db5966c4.jpeg](https://i-blog.csdnimg.cn/img_convert/59637923e9a916ce168363e9db5966c4.jpeg)
perflock 提频相关
四、log分析
配流信息:
行 163983: 08-22 16:14:46.219 1047 1537 7386 I CameraService: CameraService::connect call (PID 30560 "com.android.camera", camera ID 0) and Camera API version 2
行 164229: 08-22 16:14:46.420 1047 1537 7386 I Camera3-Device: Camera 0: Creating new stream 0: 1440 x 1080, format 34, dataspace 0 rotation 0 consumer usage 0, isShared 0, physicalCameraId , isMultiResolution 0 dynamicRangeProfile 0x1, streamUseCase 0, timestampBase 0, mirrorMode 0, colorSpace -1, useReadoutTimestamp 0
行 164237: 08-22 16:14:46.432 1047 1537 7386 I Camera3-Device: Camera 0: Creating new stream 1: 1440 x 1080, format 35, dataspace 146931712 rotation 0 consumer usage 0, isShared 0, physicalCameraId , isMultiResolution 0 dynamicRangeProfile 0x1, streamUseCase 0, timestampBase 0, mirrorMode 0, colorSpace -1, useReadoutTimestamp 0
行 164246: 08-22 16:14:46.444 1047 1537 7386 I Camera3-Device: Camera 0: Creating new stream 2: 4080 x 3060, format 35, dataspace 146931712 rotation 0 consumer usage 0, isShared 0, physicalCameraId , isMultiResolution 0 dynamicRangeProfile 0x1, streamUseCase 0, timestampBase 0, mirrorMode 0, colorSpace -1, useReadoutTimestamp 0
参考文献:
【腾讯文档】Android Framework 知识库
https://docs.qq.com/doc/DSXBmSG9VbEROUXF5
至此,本篇已结束。转载网络的文章,小编觉得很优秀,欢迎点击阅读原文,支持原创作者,如有侵权,恳请联系小编删除,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!
点个在看,为大佬点赞!