| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> Android音频子系统(七)------数字耳机播192KHz音乐卡顿问题解析 -> 正文阅读 |
|
[游戏开发]Android音频子系统(七)------数字耳机播192KHz音乐卡顿问题解析 |
你好!这里是风筝的博客,欢迎和我一起交流。之前有分析过一篇卡顿的问题:Android音频子系统(六)------拍照音卡顿问题解析 复现步骤: 此时注意听数字耳机,概率性的音乐会突然卡顿一下! 找测试要来了log分析,因为不是外放卡顿,所以就没有ivdump可以看了,看了下服务层传下的dump音频 文件,没发现异常,说明音源没啥问题,继续看了下log,卡顿时间:
说明测试小哥给出的卡顿时间发生在17:54:33左右,好嘞,开搞! log大概看了下,发现:
看起来是发生underrun了,没有数据可以mixer,所以没有数据可播,就卡顿了。 打开perfetto工具网站:https://ui.perfetto.dev/#!/viewer 发现trace是有包含问题异常发生点的,那我就安心了(trace有时不一定能抓到问题发生点…) 分别星标nRdy、AudioOut、mix、write这几个线程: 发现AudioOut线程确实有一大段空白,没有被正常调度,这是framework服务层AudioOut的write线程,说明上层write线程没有被正常调度,导致上层没有数据写下来,mix就没数据处理了,HAL里就没数据write到kernel了,所以也就卡顿了。 看了下间隔时间,卡顿时间在270ms左右: 往前看下对比看下正常播放时和异常情况卡顿时的AudioOut情况: 所以考虑是不是此刻CPU负载过重了,所以同步也看了CPU的loading情况,发现上面这张图,此刻CPU0~CPU4是除了QQ音乐,没有跑有其他东西,但是CPU5一直被AudioIn抢占着!CPU6跑的是AudioOut,但是起码没有一直抢占,有在调度。 我们把视图拉大,看下CPU整体loading情况: 这就比较奇怪了,因为测试场景是播放192KHz音乐,没有在录音才对…
离谱,原来又是你!!!Google助手! 我说怎么有个录音,原来是Google助手在后台鬼鬼祟祟作妖,但是它为什么会那么频繁的抢占住CPU呢? 问题是Google的APP也不太清楚它的逻辑是怎样的,改不了啊,可能是陷入了部分逻辑的死循环??? 查看HAL里log倒是发现有些ReadThread的timeout情况,难道和这个有关? 正当我继续深究的时候,居然发现,这个问题不复现了。。。。。。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/16 17:04:57- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |