Android的10毫秒问题 解读Android系统音频通道延迟缺陷
原文:Android’s 10 Millisecond Problem: The Android Audio Path Latency Explainer,作者Gabor (@szantog)和Patrick (@Pv), 用文本和流程图直观阐述了Android音频子系统的高延迟是如何发生的,还能直观了解这一主流移动操作系统的音频系统整体工作流程。
原文:Android’s 10 Millisecond Problem: The Android Audio Path Latency Explainer,作者Gabor (@szantog)和Patrick (@Pv), 用文本和流程图直观阐述了Android音频子系统的高延迟是如何发生的,还能直观了解这一主流移动操作系统的音频系统整体工作流程。
原生的标准Android 5系统是存在SRC的,SRC的代价是更大的处理器资源和电池消耗,手机厂商需要发挥自己主观能动性在技术上解决。但随着今年各类新硬件配置和预装Android 5系统的国产手机上市,甚至事关Android形象的“亲儿子”Nexus系列的多款新品,纷纷出现了SRC的问题。
原生Android 5.0系统目前采样率输出被锁定为单一的48kHz,今年普及Android 5是必然趋势,厂商在进行手机系统升级的同时应该留个心眼[尤其是采用了独立DAC运放等变态设计的机型],多多发挥主观能动性对源代码进行调整,规避Android SRC的问题,避免掉进这个大坑。
目前少数Andorid手机已陆续开始支持高清音频播放,但仍有不少问题,用户更希望这些问题能一劳永逸地的解决而不是仅靠个别厂商个别产品来实现。但对于音频爱好者来说,Android 5还带来了两个非常重要的特性:低延迟音频和USB Audio支持。
很多读者关心Lumia 920/820的音质表现,测试我们已经做完,但在发布报告之前,我们觉得还是有必要先了解一下WP8的音频架构。WP8采用的是NT核心,但其音频架构会不会和桌面系统的有所不同?微软WP8正式发布之后更新了其技术文档,提到了其原生的音频APIs[Native audio APIs for Windows Phone 8]。
随着Android正在向平板电脑、高清播放器、智能电视等市场领域快速渗透,SRC问题会严重影响影音应用的体验。我们近年来一直关注Android的音质和SRC问题并呼吁厂商尽快解决,可最先重视和解决SRC的不是大厂商,而是步步高和联发科。在众多Android智能影音设备实际音质表现无法让人满意的时候,谁能让Android乌鸡变凤凰?
上篇文章的反响不少,但由于写得太匆忙,问题也是一大堆。最严重的问题就是我实在太高估Google了,认为现在Android的ALSA驱动是没问题的。可那并不能完全解释AudioFlinger为什么还要继承原来ALSA的问题。所以,答案就是:Google并没有解决ALSA的问题……
简单地说,Android是用了一个Google自己开发的中间层API来让APP和声音驱动通信的。在早期,它是个ALSA的插件,现在则命名为AudioFlinger。但无论是什么方式,实际上APP是以访问中间层API的方式让自己发出声音的,而这个API,却成了Android整个音频系统的噩梦。
Android系统迅速崛起,超越iOS和Symbian成为第一大智能设备操作系统,它的占有率还有迅速扩张的趋势,将有大量的多媒体设备采用这个系统,那么Android是否适合作为影音设备的操作系统使用呢?我们今天就来了解一下Android的音频架构。