本讲是android camera性能分析专题的第25讲,我们介绍cameraserver latencyhistogram简介,包括如下内容:
- latencyhistogram是什么
- cameraserver默认有哪些latency的histogram
- 如何获取cameralatencyhistogram数据
- cameralatencyhistogram类详解
资源 | 描述 |
---|---|
在线课程 | |
知识星球 | 星球名称:深入浅出android camera 星球id: 17296815 |
极客笔记圈 |
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中 |