本讲是Android Camera性能分析专题的第25讲 ,我们介绍CameraServer LatencyHistogram简介,包括如下内容:
- LatencyHistogram是什么
- CameraServer默认有哪些Latency的Histogram
- 如何获取CameraLatencyHistogram数据
- CameraLatencyHistogram类详解
视频在线观看:
- 极客笔记:
极客笔记在线课程
加入知识星球与更多Camera同学交流
– 星球名称:深入浅出Android Camera
– 星球ID: 17296815
– Wechat: 极客笔记圈
1.LatencyHistogram是什么
LatencyHistogram是一个工具类,对指定的样本集(samples)做直方图统计,该类适用于对Camera 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中 |












![[附源码]计算机毕业设计校园生活服务平台Springboot程序](https://img-blog.csdnimg.cn/9b7d66ed4ad04e8890f64ec54de6b142.png)





