原标题:为什么HiFi播放器不能用操作系统来做
导读:
由于目前大部分操作系统都是分时多任务系统,由上层的进程调度,到底层的中断调度,之后才能送达硬件。多数操作系统的中断以100Hz左右作为一个时钟滴答。也就说至少每10ms应用程序...
由于目前大部分操作系统都是分时多任务系统,由上层的进程调度,到底层的中断调度,之后才能送达硬件。多数操作系统的中断以100Hz左右作为一个时钟滴答。也就说至少每10ms应用程序才能得到调度,而且由于系统有大量的应用,音频应用的优先权并不是首位的。而底层方面,则有各种中断需要处理,其中网络中断,显示 / 视频中断都需要大量的数据处理,音频处理优先级一般都会较前两者低。因而产生大量的Jitter,这也是PCHiFi无法和CDP相比的关键原因,用操作系统的播放器就等同于独立的Mini PCHiFi。
在操作系统中,音频应用(播放器)是应用层的程序,它每隔一段时间会将一段音频数据发送到操作系统中。而应用层还有许多其它的应用,也会间歇占用CPU等系统资源。播放器必须等待CPU等资源空闲才能将音频数据发送到操作系统中 。所以,如果系统中各种应用越多,音频应用就会不能得到及时调度,无法及时发送数据到操作系统中。
再往下,就是内核发送数据到硬件,内核是通过调用音频设备的驱动程序和硬件进行交互的。而这一切的动力来源,便是系统的中断。每次硬件发出中断,CPU会进行响应,查看是哪个设备的中断,然后调用中断程序进行处理,或者从硬件读入数据,或者又是写入数据到中断。这里可以看到,系统中有各种各样的中断,低优先级中断处理到一半,如果有高优先级中断发生,就会暂停下来,处理高优先级中断 。很多中断都比音频中断优先级高。因此音频响应在操作系统中可能会得不到及时处理,这样会导致jitter的产生。
有个USB解码器,它是异步的,为了处理这个异步的问题,集成了8M的缓存,必要的时候可以缓存近3秒的音频数据.呵呵,这东西声音怎么样先不说,但是这个缓存近3秒的做派,说明设计师对操作系统音频输出的实时性抱以极大的不信任。
单片机单线程纯音播放程序有什么好处?
我们在用电脑作为播放音乐的朋友可能会深有体会,当电脑运行程序较多时或者用不同播放软件播放音乐时输出的声音差异是非常大的。比如cPlay这个软件就是因为采用了尽量少的线程运行,简易的界面功能而能获得比Foobar2000好很多的音质,另外cPlay+cmp这个组合则做到尽量完全关闭Windows的其它所有线程,从而音质上更会脱胎换骨的提升。但是PCHiFi即使是cPlay+cmp这个组合播放,仍存在无法克服的震动和各种电磁干扰对声音造成的致命影响。
我们再来看看现售的其它数码 / 音乐播放器大多都是采用操作系统多线程来运放播放软件,优点是可以实现的功能多、可以支持的格式多,并且有较多的方案公司可提供项目支持,无需自己研发软件,产品上市时间快 、研发投入小、风险小,缺点就是声音受到系统的影响较大,这种多线程的操作系统就等同于在运行多线程软件的一台电脑,它顶多是没有了硬盘与开关电源的影响,但多线程的影响会对播放器的源头(数字输出)带来较大的Jitter(时基抖动 ),从而影响到每一个音频口的声音素质。一些公司则通过了调音增加音染来试图掩盖Jitter带来的声音缺陷,这与HiFi有些背驰而行了。针对这些问题QLS-HiFi投入了较大的精力利用自己在单片机编程方面的优势 ,在首代产品的基础上再历时3年,实现了新一代基于单片机的单线程纯音播放器,没有操作系统,没有多线程影响,实时性高,音频源头数字输出Jitter超低,整体音质上 、支持文件格式上、功能上、界面上相对于前一代产品都取得了较大突破。
为什么我们要花数年时间一行一行敲出数万行的单片机单线程程序?为什么我们要投入数十万研发费用在软件这个产品上不容易看出价值的部分?这是对HiFi的执着,对追求高音质的执着。因为我们深信音乐不被扭曲,彻底还原,乃数字播放器的首要任务。
一个简单的比方:多线程等同于一个人同时需要做很多件事情,而且很多事情具有相同优先级别,并且重要的事情处在较低的优先级别,那么这个重要的事情就会被其它事情给耽误掉,致使这个人没有足够的精力来很好的去完成它。单线程就是我要做几件事情时我会一件一件做完 ,同时我会把音频处理设为首位优先级别,只要音频处理需要,我们随时会放下手上的其它活先去处理音频部分,使得音频输出不受任何操控的影响。我们的单片机会专心读文件、解码,每到一定量的数据然后送到I2S乒乓缓冲区,这个过程不受任何外界指令影响,单片机内部会有硬件I2S自动提取乒乓缓冲区的数据转换输出,我们会精确计算好时间,确保有200%以上的余量时间等待为缓冲区送数,为了确保这个时间足够充裕我们将遥控解码等耗单片机时间的功能又由另外的独立芯片来完成,以确保极低Jitter输出。
还没有评论,来说两句吧...