本讲是Android Camera性能分析专题的第24讲,我们介绍录像Buffer Path帧率统计,包括如下内容:
- 从GraphicBufferSource统计录像Buffer Path帧率
- Video Codec角度统计视频帧率
- Video Codec2角度统计视频帧率
资源 | 描述 |
---|---|
在线课程 | 极客笔记在线课程 |
知识星球 | 星球名称:深入浅出Android Camera 星球ID: 17296815 |
极客笔记圈 |
1. 从GraphicBufferSource统计录像Buffer Path帧率
我们可以通过GraphicBufferSource来统计录像帧率,在Trace中将GraphicBufferSource的Trace圈起来选中,如下图所示;
- 在9143.92ms内,发生了526次0和1,其中counter为0表示GraphicBufferSource acquire了一张Buffer,counter为表示GraphicBuffer queue了一张buffer。
- 因此我们可以计算平均每隔多久送一帧: 9143.92ms / (526/2) = 34.768ms (注:这里简单让526除以2,理论上要计算counter为1的个数,这个可以参考我们第20讲介绍的SQL语句来精确查询counter为1的个数)
- 根据每隔多久送一帧来计算帧率:1000/34.768 = 28.762fps.
2. Video Codec角度统计视频帧率
可以搜索 HIDL::IOmxNode::fillBuffer::client
的个数,如下图所示:
- 9143.92ms内发生了264次,帧率为:1000 / (9143.92 / 263) = 28.762fps.
3. Video Codec2角度统计视频帧率
可以搜索 HIDL::IComponentListener::onInputBuffersReleased::client
的个数,如下图所示:
- 5616.245ms内发生了169次,则帧率为:1000/(5616.245/169) = 30.093fps.