为啥 tinyALSA 优于 libasound?

Posted

技术标签:

【中文标题】为啥 tinyALSA 优于 libasound?【英文标题】:Why is tinyALSA preferred over libasound?为什么 tinyALSA 优于 libasound? 【发布时间】:2014-07-03 18:30:48 【问题描述】:

在最新的 android 版本中,AOSP 版本通常附带tinyALSAtinyCompress。在this question 中,Simon 提到所有 Nexus 设备都应支持tinyALSA

我的问题是,与tinyALSA 相比,为什么android 没有集成libasound,它具有音频子系统所需的所有功能?是否主要是由于source.android.com 站点中指出的许可问题?

【问题讨论】:

【参考方案1】:

我不能代表 Android 开发人员发言,但如果我不得不猜测,那是因为 ALSA 有一个非常旧的 API,由于向后兼容的原因没有改变。

如果您选择的音频系统不考虑向后兼容性,那么最好的办法是从全新的版本和更现代的 API 开始。

这与他们针对 X.Org Server 的方法一致 - 完全抛弃系统并用 something better 替换它,尽管有人可能会争辩说这样做是因为 X.Org 在构建时并未考虑到触摸屏。

最后,正如您所提到的,由于许可证,Google 推荐 tinyALSA 而不是 ALSA

【讨论】:

谢谢马丁。你的反应很好,我分享了很多你的观点。但是,我听到了一个反驳论点,即tinyALSA 没有libaudio 具有的功能列表,因此,libaudio 是首选。因此,我对决定采用 tinyALSA技术原因感到困惑。 我能找到的唯一其他信息是 Simon(tinyALSA 的作者)是 Google 员工。这是 tinyALSA 对 Android 的初始提交:android.googlesource.com/platform/external/tinyalsa/+/… - 我认为您可能会更幸运地在 Google+ 或 Twitter 上联系一些 AOSP 开发人员。

以上是关于为啥 tinyALSA 优于 libasound?的主要内容,如果未能解决你的问题,请参考以下文章

6.播放音频(第一部分)

为啥“实现可运行”优于“扩展线程”? [复制]

Android音频底层调试-基于tinyalsa

为啥模板构造函数优于复制构造函数?

为啥采用指针的函数优于采用数组引用的函数?

为啥 AJAX 优于 iFrame?