补充 | 美颜相机卡顿trace分析
共 2132字,需浏览 5分钟
·
2022-04-18 11:12
和你一起终身学习,这里是程序员Android
经典好文推荐,通过阅读本文,您将收获以下知识点:
一、美颜相机录制视频 trace 分析概览
二、Camera FWK 与 camera HAL 录像交互
三、美颜相机app 与SurfaceFlinger 交互
四、美颜相机卡顿丢帧trace 分析
一、美颜相机录制视频 trace 分析概览
美颜相机录制视频 trace 分析概览
截取1s 内 美颜相机帧率为30fps, 对应的Camera HAL 、Camera FWK 、美颜相机 App 的帧率如上
二、Camera FWK 与 camera HAL 录像交互
Camera FWK 与 camera HAL 录像交互
Camera FWK 与 camera HAL 录像交互
Camera FWK 通过dequeueBuffer 申请有给buffer,处理一帧请求。
Camera FWK
通过HIDL进行一阵请求processCaptureRequest_3_4处理,关键字:HIDL::ICameraDeviceSession::processCaptureRequest_3_4::clientCamera HAL 处理FWK 的processCaptureRequest_3_4请求,关键字:
HIDL::ICameraDeviceSession::processCaptureRequest_3_4::serverCamera HAL 处理完后,通过HIDL callback 通知FWK 处理完成 关键字: HIDL::ICameraDeviceCallback::notify::client
Camera FWK 通过 HIDL::ICameraDeviceCallback::notify::server 获取通知。
Camera HAL 通过HIDL::ICameraDeviceCallback::processCaptureResult_3_4::client 将一帧的处理结果callback 给FWK
Camera FWK 通过HIDL::ICameraDeviceCallback::processCaptureResult_3_4::server 接受 Camera HAL callback 帧
Camera FWK 处理完成后 通过queuebuffer 将buffer 送到SurfaceTexture 中.
queuebuffer 后美颜相机对应的surfaceTexture buffer +1
三、美颜相机app 与SurfaceFlinger 交互
美颜相机app 与SurfaceFlinger 交互
美颜相机app 与SurfaceFlinger 交互流程如下:
Camera FWK 通过queuebuffer callback 给app 一帧 buffer 给SurfaceTexture
美颜相机app 对应的 SurfaceTexture buffer +1
美颜相机app 从Camera FWK callback 的帧 取帧处理后,通过queueBuffer 将buffer 送给SF 的BufferQueue中
SurfaceView对应的buffer +1
Vsync-sf 到来后, SF 从 SurfaceView 的buffer 中取出一帧率进行消费并送显, 同时 surface 的 buffer -1
四、美颜相机卡顿丢帧trace 分析
4.1 美颜相机视频录制卡顿trace 分析图
美颜相机视频录制卡顿trace 分析图
美颜相机视频录制卡顿问题分析步骤
Camera HAL 底层出图
Camera FWK callback 并queuebuffer 给app ,对应的SurfaceTexture buffer +1
美颜相机app 获取FWK callback 的帧进行美颜等处理,处理完成后通过queuebuffer 给SF 的BufferQueue 中, 同时对应的SurfaceView 的buffer +1
从trace 中看,app 取帧后由于美颜相机app的一些原因,导致没法及时处理帧,并queuebuffer 给SF,进而导致丢帧卡顿。查看此时美颜相机MTRenderEglEngi 渲染引擎一直在不停的Running 状态,同时查看CPU loading 为90%。
SF 在Vsync-sf 到来后,会从bufferQueue中acquriebuffer,但是此时app并没有合成buffer 到BufferQueue,SF没有buffer用来刷新,这时候给用户的感觉就是上一帧显示了2次,进而导致人眼感觉卡顿。
4.2 美颜相机录制视频卡顿1s 内CPU loading 为90%
美颜相机录制视频卡顿1s 内CPU loading 为90%
友情推荐:
至此,本篇已结束。转载网络的文章,小编觉得很优秀,欢迎点击阅读原文,支持原创作者,如有侵权,恳请联系小编删除,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!
点击阅读原文,为大佬点赞!