|
[转帖] XBMC新的音频引擎:AudioEngine(一)
AudioEngine(或AE)是指XBMC新的音频系统,它由gnif牵头用两年时间开发完成,计划在XBMC的v12(Frodo)版中正式发布。其代码已于2012年5月15日并入到XBMC的主开发分支。那么,我们为什么要开发一个新的音频子系统呢?
我们知道,从XBMC诞生以来,其音频代码一直未做过什么大改动,它受到原来Xbox的16位架构和当时可用编解码器的限制。杜比AC3和MP3(或更早的格式)曾统治着媒体编解码器的世界。随着时间的推移,HTPC以其更强大的功能和更好的扩展性而成为主流。模拟传输让位于光纤SPDIF连接,又被HDMI所取代。处理器、GPU和媒体编码格式都在稳步发展。
随着HTPC的增长,以及推动蓝光技术发展的新格式出现,改进音频子系统进入了议事日程。类似多声道FLAC这样的高保真音频成为那些需要更高质量音频媒体的首选标准。是时候更新了,一个重大的更新!
历史和团队
原来主要打补丁修正一些错误,曾经想重新构建一个系统,结果半途而废了。大范围的调整和API的复杂性使之成为一项艰巨的任务,特别是对那些用业余时间工作的志愿程序员而言。XBMC广泛运行于不同的硬件和软件平台更加剧了困难。大多开发人员专注于特定的平台或XBMC的某个子系统,而任何新系统必须是平台无关、紧密结合而又能灵活扩展的。
随着时间的推移,整个项目显然需要一个完全重新编写的音频引擎。同时,XBMC依托的硬件和操作系统平台在不断发展。新的音频格式详细资料不掌握,而XBMC的主代码当然也在不断变化之中。
2009年11月,gnif决定啃啃这块硬骨头。通过与项目组成员广泛的讨论,最终敲定了API或者说是形成AE的架构。在借鉴其他开发者经验的基础上,这个庞大的项目渐渐地成形了,一年后进入了用户测试阶段。开发论坛记录了辛勤参与的β测试人员(感谢你们!)的超过1200个帖子。新特性缓慢但不断地通过测试被加入,系统稳步地发展成熟。
在接下来的两年里,感谢gnif确定了使AudioEngine成为现实的核心引擎、解码器、编码器和工具,以及其他开发人员对核心系统、特别是对平台相关模块和输出级的贡献,包括gimli、fneufneu、memphiz、dddamian、anssi和其他人所作出的贡献。
原计划新音频系统在XBMC的Eden11.0版发布,但未能按期完成。许多用户都在急切地期待着它的加入,但XBMC稳定版的发布不能等,在Eden版进入功能冻结期时AE还未就绪。在此期间,AE代码库被固化,跟踪除错提高稳定性,功能添加和测试持续进行中。
2012年5月15日,AudioEngine被并入主开发分支。它涉及超过22,000行代码,成为XBMC有史以来最大的单一代码合并。进入主分支后,将易于所有的开发人员(和用户)来分析、测试和提升其功能。
XBMC团队很荣幸最终推出了AudioEngine,将XBMC带入了高保真音频的世界!
功能
AE现有的功能:
- 支持DTS-MA/杜比TrueHD技术的蓝光格式
- 支持24位和浮点音频高达384,000赫兹
- 混合所有音频流和界面音效,包括音频编码转换时
- 启动时通过日志输出列举硬件音频设备及其功能
- PAPlayer(XBMC的音乐播放器)支持bitstreaming
- 立体声混音为全声道布局
- 严格同步的音/视频流
- 浮点音频处理
- 24位浮点解码/处理MP3
- 完整支持ReplayGain
- 内置采样率转换和编码转换
AE计划实现的功能:
- 根据硬件功能通过规则判断机制确定输出格式
- 一系列含耳机头相关传递函数处理的DSP(数字信号处理器)、DRC(动态范围压缩)、低音低通滤波和均衡器功能
- 针对上混和缩混的自定义声道混合/映射
AE还在初始阶段,会存在错误,功能还在不断完善。你想试用的话,可以从XBMC的镜像站点下载每日更新的开发版安装包。
AudioEngine替换了SDL,给XBMC引入了一些外部依赖,并封装了所有不同的媒体类型的混音、采样率转换、格式转换、编码、上混、缩混等。
[ 本帖最后由 cfgs 于 2012-6-2 11:12 编辑 ] |
|