MTK Camera2 的OPEN API流程认知

MTK的设计架构

再了解Camera的open api调用之前我们,需要了解Camera的架构,这样才能提高阅读代码的效率。

代码跟读:

在这个图中大致介绍了OpenCamera的具体调用,下面我们逐步分析Camera的open调用流程。

逐步分析

一、

我们抛开hal层向上的东西,首先我们先在Cameradevice3Impl中调用open方法,这个方法中可以实例化出一个mSession(其实这个mSession在CameraHalServer初始化的时候就已经实例保存在CameraDevice3Impl中了),

在这个open接口中,我们会做这些工作:

实例化出Cameradevice(pdevicemanager和instancename)

创建处理命令的线程

完成poweron

完成opendevice

二、

有了实例化出的mSession后,我们就可以到对应的device上去操作了。

因此我们到对应的device上去做open操作。

首先就是pedevicemanager上面有一个startOpenDevice方法,

在这个startOpenDevice方法中,他会做这些工作

 waitforpreviouspowerdone()

先上锁

获取一个VirtualDevice:(检测能否打开绑定打开的Device

第一次打开Camera时要关闭闪光灯

这其中,“获取一个VirtualDevice” 这个方法又需要做这些工作

检测能否打开

绑定打开的Device

获取VirtualDevice是通过函数getvirtualdeviceLocked实现的,

根据所用的instancename找到匹配的VirtualDevice。

检测能否打开的函数名称为validateOpenlocked

检查各种问题来达到判断出这个Virtualdevice的目的。

绑定打开的device

将打开的VirtualDevice信息保存到mOpenDeviceMap中

 三、

既然有了处理命令的线程,就需要让它run起来。

之后再让运行的线程tryrunCommandlocked

tryruncommandlocked中又有onopenlocked

创建IAppStreamManager实例----创建不少的线程

创建IPipelineModeManager实例----获得一个IDebuggeeManager实例

获得IPipelineModel实例----在PipelineMap中找出可用,否则创建

执行PipelineModel的open()方法

调用这个PipelineModel中的open方法

调用mHalDeviceAdapter的open()----得到sensor,创建新的Instance并加到OpenList中

调用mHalDeviceAdapter的poweron()----做了很多工作,比如获取Devicelist、waitforsensor等等

将这个model放入mvOpenFutures中

当所有的向下调用的过程全部完成之后就会一层一层的向上返回。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/143196.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

聚焦车用AI算力,奕行智能EVAS完成超亿元Pre-A+轮融资并即将推出端侧算力芯片产品

近日,奕行智能科技(广州)有限公司(以下简称:“奕行智能”)完成超亿元人民币Pre-A轮融资。本轮融资由广州南沙科金控股集团有限公司下属广州南沙区南金基金管理有限公司作为领投方,东南亚最大的金…

绘图软件 OmniGraffle mac中文版特点说明

OmniGraffle mac是一款图形绘制和图表设计软件,主要面向 macOS 和 iOS 平台。它适用于用户创建流程图、组织结构图、原型设计、网站线框图、地图等各种类型的图形。该软件的界面直观,用户友好,让用户能够轻松地创建和编辑复杂的图形。 OmniGr…

臀部筋膜炎怎么治疗最有效

臀部筋膜炎的主要症状包括以下几点: 一、筋膜炎发生时会导致臀部疼痛以及局部红肿的情况。 二、可能会引起臀部活动受限。 三、可能会导致患者不能取坐位,因为坐位时可能由于局部压迫而引起筋膜炎疼痛症状加重,而引起患者不能取坐位的情况…

(论文阅读31/100)Stacked hourglass networks for human pose estimation

31.文献阅读笔记 简介 题目 Stacked hourglass networks for human pose estimation 作者 Alejandro Newell, Kaiyu Yang, and Jia Deng, ECCV, 2016. 原文链接 https://arxiv.org/pdf/1603.06937.pdf 关键词 Human Pose Estimation 研究问题 CNN运用于Human Pose E…

【反编译系列】二、反编译 .pyc 文件(uncompyle6)

文章目录 【反编译系列】二、反编译 .pyc 文件(uncompyle6)1. 介绍2. 反编译Reference 【反编译系列】二、反编译 .pyc 文件(uncompyle6) 1. 介绍 .pyc 文件是 Python 将 .py 源代码编译后生成的字节码文件,主要有以下几个特点和…

火山引擎DataTester上线「集成工作台」功能,助力企业打造专属AB平台

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 AB测试不仅是做增长的“利器”,也是企业优化效率、增加决策精确度的有效工具。随着国内企业服务市场需求的多元,企业对AB测试平台的“个性化…

如何实现可视化大屏——基于VChart

引言 在大屏产品中,可视化扮演着信息展示和传达、用户体验和互动、数据分析和决策支持、品牌展示和差异化、故事叙述和信息呈现等至关重要的角色。作为可视化图表的重要载体之一,大屏与智能BI产品不管是在产品设计,还是可视化设计的侧重点都…

YOLOv8-seg 分割代码详解(二)Train

前言 本文主要以源码注释为主,可以了解到从模型的输出到损失计算这个过程每个步骤的具体实现方法。 流程梳理 一、选取有效 anchor   以 640x640 的输入为例,模型最终有8400个 anchor,每个 anchor 都有其对应的检测输出(4n&am…

管理类联考——数学——汇总篇——知识点突破——代数——函数、方程——记忆——一元二次方程

——一元二次方程——【核心为“根”:求根,根的多少/判别式,根与系数,根的正负,根的范围/区间】 一元二次方程:只含一个未知数,且未知数的最高次数是2的方程,“元”是指方程中所含未…

出入库管理系统vue2前端开发服务器地址配置

【精选】vue.config.js 的完整配置(超详细)_vue.config.js配置_web学生网页设计的博客-CSDN博客 本项目需要修改两处: 1、vue开发服务器地址:config\index.js use strict // Template version: 1.3.1 // see http://vuejs-templa…

2012年08月16日 Go生态洞察:优雅的代码组织之道

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

开源会议通知H5页面邀请函制作源码系统+自动翻页 带完整的搭建教程

现如今,线上活动越来越频繁,而会议邀请函也成为了活动组织者不可或缺的工具。然而,传统的邮件、短信等方式发送邀请函已经无法满足现代人的需求。因此,开发一款现代化的、功能丰富的会议邀请函系统势在必行。下面源码小编将来给大…

全网最全synchronized锁升级过程

一、前言 在面试题中经常会有这么一道面试题,谈一下synchronized锁升级过程? 之前背了一些,很多文章也说了,到底怎么什么条件才会触发升级,一直不太明白。 实践是检验真理的唯一标准,今天就和大家一起实…

kafka+ubuntu20.04+docker配置

记录一次配置过程 安装docker 参加下面链接的第一部分 Ubuntu20.04使用docker安装kafka服务-CSDN博客 安装zookeeper docker run -d --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime wurstmeister/zookeeper安装kafka服务 docker run -d --name kafka …

react路由安装配置react-router-dom/‘Switch‘ is not defined报错解决

1.安装 npm install --save react-router-dom安装完成 新建两个页面并导出 app.js import Nav from ./components/Nav import Home from ./components/Home import { Link, Route, Switch } from react-router-domfunction App() {return (<div><div><p>&…

【2021集创赛】Arm杯一等奖作品—基于 Cortex-M3 内核 SOC 的动目标检测与跟踪系统

本作品介绍参与极术社区的有奖征集|秀出你的集创赛作品风采,免费电子产品等你拿~ 团队介绍 参赛单位&#xff1a;北京理工大学 队伍名称&#xff1a;飞虎队 指导老师&#xff1a;李彬 参赛杯赛&#xff1a;Arm杯 参赛人员&#xff1a;余裕鑫 胡涵谦 刘鹏昀 获奖情况&#xff1…

使用责任链模式实现登录风险控制

责任链模式 责任链模式是是设计模式中的一种行为型模式。该模式下&#xff0c;多个对象通过next属性进行关系关联&#xff0c;从而形成一个对象执行链表。当发起执行请求时&#xff0c;会从首个节点对象开始向后依次执行&#xff0c;如果一个对象不能处理该请求或者完成了请求…

侧击雷如何检测预防

侧击雷是一种雷击的形式&#xff0c;指的是雷电从建筑物的侧面打来的直接雷击。侧击雷对高层建筑物的防雷保护提出了更高的要求&#xff0c;因为一般的避雷带或避雷针不能完全保护住建筑物的侧面。侧击雷可能会对建筑物的结构、设备和人员造成严重的损害&#xff0c;甚至引发火…

酷开科技丨酷开系统,带你进入惊喜不断的影视世界!

随着科技的迅速发展&#xff0c;智能电视已经成为家庭娱乐的重要组成部分。而要说到智能电视&#xff0c;就不得不提到酷开系统&#xff0c;作为一款智能电视操作系统&#xff0c;酷开系统以其独特的功能和出色的使用体验&#xff0c;让观众们看到了到惊喜不断的影视世界。 如…