【camera】相机camera切换的流程拆解

文章目录

  • 1 摘要
  • 2 拆解
    • 2.1 S0(App)
    • 2.2 S1(Hal)
    • 2.3 S2(App)
    • 2.4 S3(Hal)
    • 2.5 S4(App)
    • 2.6 S5(Hal)
    • 2.7 S6(App)
    • 2.8 S7(Hal)
    • 2.9 S8(App + Multimedia)

1 摘要

以下抓取的trace图使用的机器均为红米note9
这里提到的切换主要是前摄<->后摄的切换
总的来说可以分成以下的内容: s是step的缩写。按照逻辑好区分.我们大部分人都会拆解成如下的几个相关阶段。括号是对应阶段所在分块层。

阶段 说明
S0(App) 从点击事件到调用 flush 的间隔
S1(Hal) flush + disconnect 的总耗时,即关闭前一个摄像头的整个流程
S2(App) disconnect 完成后,到下 open camera 指令的间隔
S3(Hal) open camera 到 onOpened 回调的耗时
S4(App) onOpened回调上来后,间隔多久才开始createSession
S5(Hal) createSession 完成的时间,对应 endConfigure 的耗时
S6(App) createSession 完成后,到下 setRepeatingRequests 的间隔;
S7(Hal) setRepeatingRequests 指令下来后,底层要多久才准备好第一帧上抛
S8(App + Multimedia) 第一帧送给 App 后,多久后才真正第一次显示出数据帧

2 拆解

2.1 S0(App)

App管辖
S0:从点击事件到调用 flush 的间隔
搜索ptr:up,找到如下的内容:这是按下切换释放的操作.
按下和释放分别对应:
AppLaunch_dispatchPtr:Down
AppLaunch_dispatchPtr:Up
我们拆解S0的时候关注up的操作.从这个start开始记录.
【camera】相机camera切换的流程拆解_第1张图片搜索CameraHal::flush【camera】相机camera切换的流程拆解_第2张图片
S0的时间就是AppLaunch_dispatchPtr:Up的开始到CameraHal::flush的开始

2.2 S1(Hal)

Hal 管辖
closeStart->CloseDone的过程.
【camera】相机camera切换的流程拆解_第3张图片

2.3 S2(App)

App管辖
disconnect 完成后,到下 open camera 指令的间隔
关键字:connectDevice
【camera】相机camera切换的流程拆解_第4张图片

2.4 S3(Hal)

Hal管辖
open camera 到 onOpened 回调的耗时
关键字connectDevices
【camera】相机camera切换的流程拆解_第5张图片

2.5 S4(App)

App管辖
onOpened回调上来后,间隔多久才开始createSession
【camera】相机camera切换的流程拆解_第6张图片

2.6 S5(Hal)

createSession 完成的时间,对应 endConfigure 的耗时
内容如下:
【camera】相机camera切换的流程拆解_第7张图片

2.7 S6(App)

createSession 完成后,到下 setRepeatingRequests 的间隔
【camera】相机camera切换的流程拆解_第8张图片

2.8 S7(Hal)

setRepeatingRequests 指令下来后,底层要准备好第一帧上抛
搜索关键字:first full buffer
【camera】相机camera切换的流程拆解_第9张图片

2.9 S8(App + Multimedia)

每个手机的绘画机制不一样,有待研究.

你可能感兴趣的:(android,android)