小蓝相机启动阶段trace学习笔记

devtools/2025/2/13 8:33:18/

daef1834fa07b7a11b2d6a4e364f446b.gif

和你一起终身学习,这里是程序员Android

经典好文推荐,通过阅读本文,您将收获以下知识点:

一、启动阶段拆解概览

1. 启动阶段拆解表格

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
点击事件处理

S1 Camera app 启动到 下发openCamera

a9fe2f8e39938a24be2346598132ba1b.jpeg
Camera activitystart

S2 Camera HAL 开始 opencamera

e3d7dc16995fbbc0871b63a00fb5b2f4.jpeg
camera 下发open camera

S3 open Camera 结束,到配流开始

e2273a92701fca625a77476b72f9b086.jpeg
获取Camera 数,配流

S4 Camera HAL 配流并初始化usecase

706fb04f1565cf7e8d840fdd28c1d412.jpeg
Camera 配流并初始化usecase

S5 配流结束到提交预览请求

c11bcc978da70db14b60ef5cc8339be0.jpeg
提交预览请求

S6 提交预览请求到返回第一帧

963d8e5d7ccd0b47f5ca10d857d98cdf.jpeg
第一帧callback

S7 APP 处理第一帧并送给SurfaceFlinger

61ba2b74f21dd00d58abd73184168020.jpeg
APP 处理第一帧送给SurfaceFlinger

S8 vsync-SF 信息到来,SF 处理并送显示

be169c225a8ee5d46ed29cef32fb296c.jpeg
vsync-SF 信息到来,SF 处理并送显示

三、Trace 中的其他信息

1. 帧率

0215a029770283d8ae30dce7dc491dac.jpeg
Camera HAL 出图帧率 以及 屏幕显示帧率

2. CPU 负载 ,CPU频率

2e4e01e22f4d166895f24e6358dcbd1c.jpeg
CPU 负载

5887c18f16e06aafc8598cb40cfda98a.jpeg
CPU 频率 1.9GHZ 2.4G HZ

VIEngine-Main 预览帧处理

9ec9f1efe946e1fd9e20a2d5606a02b8.jpeg
VivoCamera 预览引擎

aaf671484ffea30ff0fc1df5eb085a8b.jpeg
预览帧处理

预览请求帧 与预览callback 帧处理

d58ca621492367048ba4f965a2c8bb4e.jpeg
Camera 第0帧 预览请求流程

6c2a2f77e75eb260866f6fe41d6347b3.jpeg
Camera 第 0帧 Callback流程
cb42c913e02a36c975e314293023ad97.jpeg
preivew 帧callback

perflock 提频相关

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

至此,本篇已结束。转载网络的文章,小编觉得很优秀,欢迎点击阅读原文,支持原创作者,如有侵权,恳请联系小编删除,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

cc8ec34efc9e0a2b997e736fa1af2e62.jpeg

点个在看,为大佬点赞!


http://www.ppmy.cn/devtools/158423.html

相关文章

singleTaskAndroid的Activity启动模式知识点总结

一. 前提知识 1.1. 任务栈知识 二. Activity启动模式的学习 2.1 standard 2.2 singleTop 2.3.singleTask 2.4.singleInstance 引言: Activity作为四大组件之一,也可以说Activity是其中最重要的一个组件,其负责调节APP的视图&#xff…

缓存组件<keep-alive>

缓存组件<keep-alive> 1.组件作用 组件, 默认会缓存内部的所有组件实例&#xff0c;当组件需要缓存时首先考虑使用此组件。 2.使用场景 场景1&#xff1a;tab切换时&#xff0c;对应的组件保持原状态&#xff0c;使用keep-alive组件 使用&#xff1a;KeepAlive | Vu…

wordpressAI工具,已接入Deepseek 支持自动生成文章、生成图片、生成长尾关键词、前端AI窗口互动、批量采集等

基于关键词或现有内容生成SEO优化的文章&#xff0c;支持多种AI服务&#xff08;如OpenAI、百度文心一言、智谱AI等&#xff09;&#xff0c;并提供定时任务、内容采集、关键词生成等功能。 核心功能 文章生成 关键词生成&#xff1a;根据输入的关键词生成高质量文章。 内容…

设计模式-模版方法

一、定义 模版方法模式在一个方法中定义一个算法的骨架&#xff0c;而将一些步骤延迟到子类中。模版方法使得子类可以在不改变算法结构的情况下&#xff0c;重新定义算法中的某些步骤。 模版方法模式是很常见且很有用的一种模式&#xff0c;理解起来也容易。其优点就是保护了…

网络安全设备异构要求 网络安全设备硬件

导航目录&#xff1a; 一、网络的设备 1. 网络传输介质互联设备2. 物理层互联设备3. 数据链路层互联设备4. 网络层互联设备5. 应用层互联设备 二、网络的传输介质 1. 有线介质2. 无线介质 三、组建网络 一、网络的设备 1. 网络传输介质互联设备 网络传输介质互联设备包括…

比亚迪“璇玑架构”全面接入DeepSeek

比亚迪“璇玑架构” - 架构背景与发布&#xff1a;2024年1月16日&#xff0c;在比亚迪梦想日上&#xff0c;比亚迪发布了新能源汽车智能化发展全新战略——整车智能&#xff0c;其中便包括璇玑架构。 - 架构组成&#xff1a;璇玑架构由一脑&#xff08;中央大脑&#xff09;、…

支付宝安全发全套解决方案

产品价值 ● 通过支付宝的资金能力&#xff0c;让服务商机构通过信息流驱动资金流&#xff0c;在不碰触客户企业资金的同时&#xff0c;为客户企业完成转账。账目清晰&#xff0c;无合规和资质风险。 ● 为服务商提供全链路的资金流动明细信息&#xff0c;服务商可以将这些信息…

浏览器的缓存方式几种

浏览器的缓存方式主要分为以下几种&#xff1a; 1. 强制缓存&#xff08;强缓存 / Memory Cache & Disk Cache&#xff09; 通过 Expires 或 Cache-Control 头部控制。在缓存有效期内&#xff0c;浏览器直接使用缓存&#xff0c;不发起请求。 关键HTTP头&#xff1a; Ex…