waitUntilDrained耗时引起的camera关闭慢问题

文章分析了在关闭Android相机时出现近6秒延迟的问题,主要由waitUntilDrained函数超时引起。日志显示存在连接超时错误和状态等待问题。在正常与异常日志对比中,发现异常情况下mInFlightMap不为0,表明问题可能出在camerahal的pipeline处理上。在pipeline分析中,发现错误的数据返回导致cameraserver关闭相机时等待超时。

在关闭camera时耗时近6s。

  1. 日志分析

日志中存在如下异常:

03-04 16:58:14.180  9976 25944 E Camera3-Device: Camera 101: waitUntilDrainedLocked: Error waiting for HAL to drain: Connection timed out (-110)
03-04 16:58:14.231  9976 25944 D CameraTraces: Process trace saved. Use dumpsys media.camera to view.
03-04 16:58:14.232  9976 25944 E CameraDeviceClient: detachDevice: waitUntilDrained failed with code 0xffffff92
03-04 16:58:14.232  9976 25944 I Camera3-Device: disconnectImpl: E deviceId:101
03-04 16:58:14.232  9976 25944 E Camera3-Device: Camera 101: disconnectImpl: Shutting down in an error state

查看systrace发现flush和close调用都很快。waitUntilDrained耗时5s。上级调用为disconnect。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值