VIVO相机启动流程拆解

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

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

一、启动阶段拆解概览

1. 启动阶段拆解表格


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 启动


点击事件处理

S1 Camera app 启动到 下发openCamera


Camera activitystart

S2 Camera HAL 开始 opencamera


camera 下发open camera

S3 open Camera 结束,到配流开始


获取Camera 数,配流

S4 Camera HAL 配流并初始化usecase


Camera 配流并初始化usecase

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


提交预览请求

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


第一帧callback

S7 APP 处理第一帧并送给SurfaceFlinger


APP 处理第一帧送给SurfaceFlinger

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


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

三、Trace 中的其他信息

1. 帧率


Camera HAL 出图帧率 以及 屏幕显示帧率

2. CPU 负载 ,CPU频率


CPU 负载

CPU 频率 1.9GHZ 2.4G HZ

VIEngine-Main 预览帧处理


VivoCamera 预览引擎

预览帧处理

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


Camera 第0帧 预览请求流程

Camera 第 0帧 Callback流程

preivew 帧callback

perflock 提频相关


perflock 提频相关

四、log分析

配流信息:

go 复制代码
行  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

参考文献:

【腾讯文档】Camera学习知识库

https://docs.qq.com/doc/DSWZ6dUlNemtUWndv

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

点个在看,为大佬点赞!

相关推荐
qq_5260991319 小时前
工业视觉核心硬件:图像采集卡性能体系与选型逻辑解析
数码相机
kyle~2 天前
机器人感知 --- 多相机传感时间误差分析
linux·c++·数码相机·机器人·ros2·传感器
ZPC82102 天前
moveit2_servo 怎么接收相机调节指令(视觉伺服)
人工智能·数码相机·算法·计算机视觉·机器人
苏映视官方账号2 天前
展会回顾丨INSNEX苏映视精彩亮相CIBF 深圳国际电池展
数码相机
8K超高清2 天前
2026传媒技术大会:博冠赋能融媒体制播
大数据·人工智能·科技·数码相机·计算机视觉·传媒·媒体
视图猿人2 天前
ubuntu24.04系统使用深度相机Astra pro时的配置方法
数码相机
2601_957418803 天前
Android相机有线连接全栈解决方案:PTP/MTP协议深度实现与应用实践
android·数码相机
ZPC82103 天前
双目相机 深度图和点云生成物体3D包围盒 生成抓取姿态
人工智能·数码相机·算法·yolo·计算机视觉
自动化智库4 天前
基于多台海康MV-CU系列相机拍照打开巨型帧等的设置方法
数码相机
刘大猫.4 天前
重塑经典:Snapseed4.0全面登陆安卓,内置“胶片相机”与专业手动模式
android·数码相机·ai·机器人·大模型·算力·snapseed4.0