当前位置: 首页 > news >正文

Android Camera FW 里的requestId和frameId

安卓相机frameworks里面经常出现requestId和frameId,最近简单看了一下代码,发现相关流程还是很复杂的,总结来看requestId 就是上层(java)发送的repeating(capture)请求的id,是从0开始递增的。

这是CameraDeviceImpl.java里面下发请求的代码,调用到cameraserver里的submitRequestList

到CameraDeviceClient.cpp里面,mRequestIdCounter是随着应用层下发request递增的

省略部分代码。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

虽然这里的requestId会通过ANDROID_REQUEST_ID这个TAG设置到Hal层,但是其实HAL并不太需要真个id,此时还看不出这个requestId有啥作用,接下来看result返回的时候怎么使用的。

capture result 返回最终会到这里的insertResultLocked,mResultExtras.requestId会设置给result metadata传到应用层

再回到CameraDeviceImpl,就是通过requestId到 mCaptureCallbackMap里面去找对应的回调接口回调给上层

所以综上看 requestId就是一个标记上层下发request的作用,回调metadta的时候方便找到对应的回调接口,所以requestId的作用仅仅是联系APP和FW的,对于HAL来说没有作用。

frameId是每帧都加一的。

到CameramanOutputUtils.cpp里面看到requestId就是在InFlightMap里面存着,而InFlightMap就是记录request信息的,通过frameNumber找到对应的request

这里的frameNumber就是Camera3Device.cpp里面threadLoop不断递增的frameId,每下发一次request就不断地递增的。

http://www.lryc.cn/news/184368.html

相关文章:

  • 代理IP与Socks5代理在技术世界的多元应用
  • 计算机专业毕业设计项目推荐12-志愿者管理系统(Spring+Js+Mysql)
  • 苹果文件传到mac电脑用什么软件?
  • 深入理解Docker:简化部署与管理的利器
  • 软考对找工作有用吗?
  • Android系统启动之init进程启动+Zygote进程启动分析
  • 微信这样的加人方式,既安全又解放双手
  • CVE-2023-5129:libwebp开源库10分漏洞
  • 从零开始的C++(六)
  • leetcode 518. 零钱兑换 II、377. 组合总和 Ⅳ
  • 【网络安全 --- kali2022安装】kali2022 超详细的安装教程(提供镜像)
  • 网络安全(黑客)——自学笔记
  • 【C++】List -- 详解
  • 浅谈.net 垃圾回收机制(1)
  • 超大视频如何优雅切片
  • 计算机竞赛 题目:基于深度学习卷积神经网络的花卉识别 - 深度学习 机器视觉
  • Spring总结的question
  • LVS和keepalived
  • 2023年腾讯云优惠券(代金券)无门槛领取方法汇总
  • linux scsi命令读取文件
  • c#设计模式-行为型模式 之 策略模式
  • 【拿完年终奖后】想要转行网络安全,一定不要错过这个时间段。
  • day10_复习_数组_方法
  • Linux:TCP三握四挥简析
  • 2023年全球市场数字干膜测量仪总体规模、主要生产商、主要地区、产品和应用细分研究报告
  • Python爬虫脚本的基本组成
  • IIS部署Flask
  • 告警繁杂迷人眼,多源分析见月明
  • 【Python】概述
  • MySQL运维之日志管理