DoP open Standard
Method for transferring DSD Audio over PCM Frames Version 1.1
USB Audio2.0的特性规格中,对于多重声音的定义,只有标准PCM一种格式。而对于一般的原生档格式也定义成相容于各种格式的资料,其中包含声音 (audio)的格式。但很不幸的,对于DSD以及日渐普及的USB声音解码器则并没有特定的格式定义。採用官方的USB规格以单向差模(single common)方式来传输DSD声音的方式已经逐渐消失,唯一的契机是尽可能联合许多制造商来共同参与制定出一种透过USB端子传输DSD档案的方法。尽 管这个方法的目标是针对USB设备的连结,但通常来说也可以适用于其他PCM基础的连结方式如Firewire, AES/EBU以及S/PDIF...等。
1.动机
音乐播放软体的制造商都想要尽量简化他们为了支援USB连结传输声音时所需要格式的种类,理想来说,只需要有一种格式就好,同样的,硬体制造商也想要让他们的硬体跟所有的播放平台都相容,当然,这只会发生在所有人都使用单一格式的时候。
如上所提及,USB Audio 已经支持 “原生资料”的格式,可以使用于DSD,这会跟其他声音资料的传输途径(包含PCM)有一个很清楚的分野。然而,最新版本的Apple作业系统 OS 10.7 所内附的USB驱动程式只支援PCM规格,除此之外,它的中央声音处理引擎CoreAudio,,在OS内部也只支援PCM,所幸的是它对于取样频率并没 有限制 (较早的版本有一个支援原生档案的模式,但已成歷史)。由于Apple作业系统的架构强迫声音软体的开发厂商使用CoreAudio来当成所有声音相关的 格式,因此在Mac平台上基本上只有一种格式存在:PCM。 即便可行,创造一个分开的途径来传输DSD资料将会是一个浩大的工程。所以我们没的选择,只能使用PCM的路径来传输DSD的声音,藉由特别的旗标 (header)或是档头(header),让接受资料的硬体可以侦测到格式的改变,并且依此来切换他们的解码装置。
当使用Windows的平台时, 会显得稍微容易一些:Windows原生并没有完全支援USB Audio 2.0的格式,它内建只支援到96kHz以及更低的PCM格式,它并没有内建驱动程式支援较高的取样格式,所以很明确的不论是标准PCM或是DSD,在 Windows平台上一开始就需要客制化驱动程式。幸运的是第三世界的软体发展厂商(比如Steinberg Audio) 早就于多年前参与并且开发好驱动程式 (称为 ASIO),支援 PCM 以及 DSD 的格式,并且没有取样频率或是字元长度的限制。ASIO格式已经愈来愈普及,并且许多软体开发商也都支持,ASIO并不是是一个硬体的驱动程式,但是它媒 介于声音播放以及硬体驱动程式之间,每一个硬体的制造商仍然需要开发客制化的硬体驱动程式,但是ASIO则创造了一个所有应用软体的共同介面标准。
2. 解决方案
如上所述,Windows婆台基本上透过了ASIO驱动程式提供了解决方案,而原生资料的规格可以透过USB Audio 2.0的格式支持,这虽然不是DSD透过USB传输的理想途径,但至少是安全而直接的。
因为Apple OS 只容许PCM的传输途径,因此我们必须寻找一个方法把DSD的声音资料放进PCM的架构中,然后透过内建的USB驱动程式来传送。DSD具有1 位元的取样大小以及2.8224MHz的取样频率,换言之,它的资料量有2.8224Mbits/sec,这相当于是16 位元 PCM格式于176.4kHz取样频率下的资料量,为了要明确的在PCM的串流资讯中辨识出何时是DSD或是何时是PCM的 资料,我们需要额外的位元,PCM比较高的规格是24位元/176.4kHz,这给予我们8个位元来当做辨识的标记,这感觉有点太多了,因为8位元有 256种状态可以标示,而我们其实只需要分别两个状态(DSD & PCM),但我们会看到这些多余的部份如何派上用场,以下是我们如何在每个音轨的每个取样中使用24位元:
8个最显着的位元用来当做 DSD的标记,其余跟随的则是取样资料从0x05 到 0xFA。 每一个音轨内的取样都包含有相同的标记,这已经是我们挑选过在当接收端的硬体误判DSD的讯号为PCM时,最能有效降低爆音的方式,如果它真的不幸产生, 他会在88kHz附近产生一个大约 -34db的杂音,这对于音质几乎无损,而且大多的D/A转换器都会在它抵达喇叭前就压制到一个相当的程度,大部分的硬体制造商以及软体开发商会很容易的 共同防守来避免切换格式时错乱的情形发生,它会在开发软硬体过程的有限时间内排除,这是软体硬开发商的共同责任去避免发生错误解读的情形,并且全面的在上 市前测试他们的产品,反之将错误的将PCM资料当成DSD来解读,则只会制造出更少可预测的爆音。
留下的16的较低的位元则用来存放DSD的资料,第一个位元从t0开始。USB Audio的规格则将每一个PCM的Frame指派给特定的音轨 (左, 右...等) ,而当使用来传送DS串流资料时,每一个PCM Frame 只包含相关连于其指派音轨的DSD资料。
3. 双倍DSD (128FS)以及更高的解决方案
有两种可行方案,取决于是否所使用的PCM传输架构能支持到 352.8kHz的取样频率而定:
上述所说针对64FS DSD的解决方案,可以藉由将相关的PCM取样频率,从176.4kHz提昇到 352.8kHz,只要可以支援这种方式, 就可以轻松的延伸到128FS,而所有的标记位元以及顺序都维持不变。
对于没有办法支持352.8kHz (比如 AES/EBU)管道时,有一个变通的方法可以使用,并且不需要提昇PCM的取样频率:
PCM 的音轨配对(比如说L/R) 可以用来传输单一DSD音轨的128FS DSD资料D,较低的PCM frame配对包含较旧的16 DSD位元 ,如同在64FS中相同的顺序,较高的PCM frame配对则包含较新的16 DSD位元.,使用不同的标记位元在一开始就区分是否使用这种方式。
第一种解决方案藉由提昇PCM的取样频率,较能够轻松的延伸支援较高的DSD取样频率。
已有 11400 位网友参与,快来吐槽:
发表评论