第25讲 CameraServer LatencyHistogram简介 - Android Camera性能分析

本讲是Android Camera性能分析专题的第25讲,我们介绍CameraServer LatencyHistogram简介,包括如下内容:

  1. LatencyHistogram是什么
  2. CameraServer默认有哪些Latency的Histogram
  3. 如何获取CameraLatencyHistogram数据
  4. CameraLatencyHistogram类详解
资源 描述
在线课程 极客笔记在线课程
知识星球 星球名称:深入浅出Android Camera
星球ID: 17296815
Wechat 极客笔记圈

1.LatencyHistogram是什么

LatencyHistogram是一个工具类,对指定的样本集(samples)做直方图统计,该类适用于对Camera Latency数据做直方图统计。

下图是常见直方图示例:

直方图示例

Camera在Log中打印的 Latency直方图示例如下:

Camera在Log中打印的 Latency直方图

代码路径:/frameworks/av/services/camera/libcameraservice/utils/LatencyHistogram.cpp

2.CameraServer默认有哪些Latency的Histogram

Latency Histogram Description
Buffer Limit Latency 每路Stream dequeue的Buffer总量达到max_buffers后,等待新Buffer返回耗时直方图统计
Dequeue Buffer Latency 每路Stream dequeueBuffer耗时直方图统计
Request Latency 将CaptureRequest送给HAL的耗时(HAL的执行时间)直方图统计

3. 如何获取CameraLatencyHistogram数据

我们可以通过Log或Dump两种方式获取Camera Latency Histogram。

Log 方式

Latency Histogram Log打印的时机
Buffer Limit Latency 该Stream被delete时,发生在Camera3Device::deleteStream
Dequeue Buffer Latency Camera3OutputStream对象销毁时,也就是该Output Stream被delete后
Request Latency 关闭当前Camera时

dump方式

  • 参考视频讲解

4. CameraLatencyHistogram类详解

CameraLatencyHistogram类介绍:

函数 描述
CameraLatencyHistogram(int32_t binSizeMs, int32_t binCount=10) 构造方法,可以设置直方图统计的间距(binSizeMs),统计区间个数(binCount)
void add(nsecs_t start, nsecs_t end) 添加一个sample
void reset() 重置统计
void dump(int fd, const char* name) const 将当前的samples统计信息存放在指定的fd中
void log(const char* format, …) 将当前是samples统计信息打印在log中

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

Android Camera性能分析