当前位置:网站首页>AOSP CameraLatencyHistogram的原理与使用
AOSP CameraLatencyHistogram的原理与使用
2022-08-03 22:39:00 【InfoQ】

CameraLatencyHistogram是什么
源码解析
头文件定义

- mBinSizeMs 记录的是当前记录表的标准时间,比如预设一次request的标准时长为40ms
- mBinCount 记录的是直方图的等级划分数量,通常默认是10个等级
- mBins 记录的是直方图各个等级的数量
- mTotalCount 记录的是直方图的统计数量总数
类初始化

增加一个数据/清空所有数据

dump/log以及内部处理函数formatHistogramText

- 先dump数据的行头,标识dump时的记录数据量;
- 然后将直方图数据构造成字符串;
- 将直方图数据写入到对应的fd文件中。

- 先打印耗时的时间段,如33ms/66ms/99ms,最大值打印为inf (max ms)
- 然后打印每一个段数据占总数据量的百分比
100.0*mBins[i]/mTotalCount
- 最后打印一个%号。
使用该工具的位置
mDequeueBufferLatency:dequeue buffer的时延,5ms
///frameworks/av/services/camera/libcameraservice/device3/Camera3OutputStream.h
//dequebuffer默认耗时5ms,进行记录
static const int32_t kDequeueLatencyBinSize = 5; // in ms C
ameraLatencyHistogram mDequeueBufferLatency;
status_t Camera3OutputStream::getBuffersLocked(std::vector<OutstandingBuffer>* outBuffers) {
...
nsecs_t dequeueStart = systemTime(SYSTEM_TIME_MONOTONIC);
res = consumer->dequeueBuffers(&buffers);
nsecs_t dequeueEnd = systemTime(SYSTEM_TIME_MONOTONIC);
mDequeueBufferLatency.add(dequeueStart, dequeueEnd);
...
}mBufferLimitLatency:buffer signal时延,33ms
///frameworks/av/services/camera/libcameraservice/device3/Camera3Stream.h
// Latency histogram of the wait time for handout buffer count to drop below
// max_buffers.
static const int32_t kBufferLimitLatencyBinSize = 33; //in ms
CameraLatencyHistogram mBufferLimitLatency;
status_t Camera3Stream::getBuffer(camera_stream_buffer *buffer, nsecs_t waitBufferTimeout, const std::vector<size_t>& surface_ids) {
...
nsecs_t waitStart = systemTime(SYSTEM_TIME_MONOTONIC);
if (waitBufferTimeout < kWaitForBufferDuration) {
waitBufferTimeout = kWaitForBufferDuration;
}
res = mOutputBufferReturnedSignal.waitRelative(mLock, waitBufferTimeout);
nsecs_t waitEnd = systemTime(SYSTEM_TIME_MONOTONIC);
mBufferLimitLatency.add(waitStart, waitEnd);
...
}mRequestLatency:request执行的时延,40ms
///frameworks/av/services/camera/libcameraservice/device3/Camera3Device.h
//记录request的时延,默认一帧request时长40ms
static const int32_t kRequestLatencyBinSize = 40; // in ms
CameraLatencyHistogram mRequestLatency;
bool Camera3Device::RequestThread::threadLoop() {
...
bool submitRequestSuccess = false;
nsecs_t tRequestStart = systemTime(SYSTEM_TIME_MONOTONIC);
submitRequestSuccess = sendRequestsBatch();
nsecs_t tRequestEnd = systemTime(SYSTEM_TIME_MONOTONIC);
mRequestLatency.add(tRequestStart, tRequestEnd);
...
}具体使用

边栏推荐
- 嵌入式系统:概述
- [MySQL Advanced] Creation and Management of Databases and Tables
- 关于IDO预售系统开发技术讲解丨浅谈IDO预售合约系统开发原理分析
- Storage engine written by golang, based on b+ tree, mmap
- Kubernetes入门到精通-Operator 模式
- 目标检测技术研究现状及发展趋势
- 网络基础学习系列四(网络层,数据链路层和一些其他重要协议或技术)
- UVa 437 - The Tower of Babylon(白书)
- MiniAPI of .NET6 (14): Cross-domain CORS (Part 1)
- Go开发工具GoLand V2022.2 来了——Go 工作区重大升级
猜你喜欢

Bytebase database schema change management tool

Bytebase数据库 Schema 变更管理工具

Lift, Splat, Shoot: Encoding Images from Arbitrary Camera Rigs by Implicitly Unprojecting to 3D 论文笔记

Zilliz 2023 秋季校园招聘正式启动!

Summary bug 】 【 Elipse garbled solution project code in Chinese!

PowerMockup 4.3.4::::Crack

Canvas App中点击图标生成PDF并保存到Dataverse中

数据一致性:双删为什么要延时?

On the Qixi Festival of 2022, I will offer 7 exquisite confession codes, and at the same time teach you to quickly change the source code for your own use

pikachu Over permission 越权
随机推荐
utlis 线程池
Data_web(八)mysql增量同步到mongodb
Boss: There are too many systems in the company, can you realize account interoperability?
关于IDO预售系统开发技术讲解丨浅谈IDO预售合约系统开发原理分析
Testng监听器
With the rise of concepts such as metaverse and web3.0, many digital forms such as digital people and digital scenes have begun to appear.
[b01lers2020]Life on Mars
Golang Chapter 2: Program Structure
HCIP BGP lab report
目标检测技术研究现状及发展趋势
488. Zuma Game
Work Subtotal QT Packing
HDU 5655 CA Loves Stick
What is the difference between the generator version and the viewer version?
for loop exercises
Diazo Biotin-PEG3-DBCO | Diazo Compound Modified Biotin-Tripolyethylene Glycol-Dibenzocyclooctyne
4年工作经验,多线程间的5种通信方式都说不出来,你敢信?
UVa 437 - The Tower of Babylon (White Book)
L2-029 特立独行的幸福
pikachu Over permission