|
本帖最后由 springdayok 于 2017-6-13 21:12 编辑
灌点水
DSD(Direct Stream Digital)『直接比特流数字』,它是Sony与Philips在1996年宣布共同发展的高解析数字音响规格, DSD新技术与DVD的音响技术指针竞争,用1bit比特流的方式取样,采样率2.4MHz(CD 44.1kHz取样的64倍)的高取样方式,直接把模拟音乐讯号波形以脉冲方式转变为数字讯号,以将近四倍于CD的空间,储存音乐,因此可以提供更为优秀的声音效果,由于取样次数高,所以取样过的波形很圆顺,比较接近原来的模拟波形。再者由于不采用多位,省却位转换程序,降低了因为数字滤波而可能产生的失真与噪声。还有,由于不像多位系统般容易(位愈高就愈容易)受到电源或外部干扰的影响,因此理论上质量会比较稳定。当前的SACD player,兼容性,无论您是DSD支持者或是传统CD的拥护者,都将是双赢的局面。 SACD(Super Audio CD)是新一代数码音响规格,以超高速取样(2.8224MHz,为CD的64倍)声音以0和1连续的量子化,可听频域的动态范围约为120dB,可能收录频域约1000kHz,结和了传统模拟的温暖及超高的分辨率,Chesky独家呈现的96k/24bit技术高水平音效,绝对让重视音响效果的您,有超值的视听感受。 SACD多声道的音质包含了6个独立的音轨,每一个音轨都可以读到没有经过任何压缩而完整的DSD规格(Full DSD Bit Rate),也就是说,您的每一支喇叭都可以听到立体环绕的效果(一般的DVD由于经过压缩,所以仅能听到96K/24Bit的音质)。
DoP是DSD转PCM么?——浅谈USB方式传输DSD数据的方法(此文根据DoP open Standard Version 1.1编译并重新整理而成:http://dsd-guide.com/dop-open-standard)
玩PC-hifi的朋友对DoP(DSD over PCM)想必都不陌生,他得以让我们用过usb口将DSD数据流传输至DAC。那么,DoP是将DSD转换成PCM格式么?我们真能通过手机外接解码器就欣赏到原生的DSD音频么?本文结合DoP的最新规范标准为大家答疑解惑,相信看过之后,上面提到的这些问题也就都不是问题了。
DoP产生背景
USB2.0规范中定义了多种传输格式,但对于音频,就支持一种:PCM。虽然USB2.0还有一种RAW模式可以用来将任何数据原样传输,不过专用于DSD的传输方式还是没有。且就目前市面上USB转换器的局限来看,指望官方能统一出一个标准来,希望渺茫。DoP是多家厂商共同努力协作的产物。他提供了通过USB传输DSD源数据的方法,且这种方法的通用性足以让他的应用延伸到其他支持PCM的接口标准上,例如,AES/EBU,SPDIF等。
现有PC系统存在的问题
器材厂商在设计播放相关的软件时,力求避免使用五花八门的USB传输格式,甚至只要一种统一的规范最好。这样也是为了提高自家硬件在不同平台上的兼容性。即一种标准,大家通用。上文中已提到过,USB音频可以使用RAW格式传输DSD数据,这样也可跟USB2.0唯一支持的PCM音频通路区分开来。然而事与愿违,苹果最新的MAC OS 10.7使用的USB驱动也只支持PCM(当然不限采样率和位深度。要知道早期MAC OS可是支持RAW模式的!)。自从苹果强迫开发者使用Core Audio来处理和音频有关的一切事务时,MAC平台上就只剩一种音频格式可用了CM。要想在MAC上独辟一条DSD通道,就算能做,基本也要动大手术。因此用PCM来”伪装”DSD的这种特洛伊木马式的做法,纯粹是无奈之举。具体做法就是以PCM格式打包DSD数据,其中封装一些特殊的标识以及标头,让解码器能很好的辨别其真正传输的内容格式,从而切换到正确的模式。
对Windows平台而言问题可能简单一些:它对于USB 2.0的原生支持本来就不完整!它只能传输最高96khz采样率的PCM格式。因为自带的驱动没法支持更高的格式,因此无论传输PCM还是DSD格式,第三方驱动都是必须的。幸好我们有ASIO,他是很久以前Steinbreg Audio开发的第三方驱动。这种驱动同时支持PCM和DSD,规格不限。且已广泛流传并被诸多厂商采纳支持。ASIO本身并不是一个硬件驱动,而是介于播放软件和驱动间的中间件。因此硬件厂商仍需为自己的硬件产品开发驱动。而它的贡献则在于创建了这样一种为诸多不同播放软件所用的通用接口,起到了桥梁和纽带的作用。
解决方案——DoP
正如上文中所讲,在windows平台中我们可以使用ASIO或USB本身的RAW模式来传输DSD。尽管这不是DSD专用的独立通道,但基本算是最保险最直接的办法。
对苹果平台而言,既然它只支持PCM,因此我们想办法把DSD数据装进每一帧PCM数据里,并用它系统原生的usb驱动传输。DSD数据是1bit的,采样率为2.8224Mhz。换句话说其码率为2.8224Mbits/sec。这相当于16bit/176.4khz规格的PCM。为了能清楚的表示该PCM数据流里封装的到底是PCM还是DSD,我们还需额外的位来放一些标识信息。一般来讲比16/176.4规格还高一级的就是24/176.4了。也就是说我们多出来8位可用。虽然看起来有点多(如果我们能用01两种状态就够的话,8位能给出256种状态)。但实际上这8位都能派上用场,如图:
DoP原理浅析
最前面的8位(Most Significant Bits,简称MSB)用作DSD标识,在每声道的每个PCM帧中以0x05和0xFA(16进制码,这种码每一位分别可对应二进制中的4位)两种形式交替出现(早先版本则使用0xAA)。这样做是为了防止解码器错把DSD数据认成PCM时爆出大量杂音,经上述设置,误读时会输出一个88khz但幅度低至-34db的声音。绝对无害且多数解码器内部在输出前就把他滤掉了(如果反过来,将PCM认成DSD的话,产生的杂音则不大好预测)。需要强调的是,软硬件厂商能用一些安全手段就轻易将上述隐患扼杀在设计阶段。这也是他们的责任:保证成品绝不出此类问题。经此文原作者验证,一种比较稳妥的,防止误判的办法是:传输的数据从PCM切换成DSD时,接收端至少检查32个连续的DSD标识符,每声道都要查!从DSD切换到PCM时,至少检测其中一个声道丢失的一个标识符。这样做会产生额外180微秒的延迟,但如果这时USB缓存没空且微帧(USB规范中对帧和微帧的划分和本主题关系不大,这里不再赘述,只需知道他和本身中PCM帧不是一个层面上的事)依然在被接收时,则不会产生延迟。当然,最好的办法还是让播放软件先验证下播放硬件能否支持DSD,然后再开始播放,验证的渠道也是多种多样的,通过物理层,驱动或OS都可做到。
图中后16位用来承载DSD数据,从t0开始装入。USB规范通常将每个PCM帧分配到一个特定声道上(比如左或右)。使用DoP模式时,被打包的DSD数据的声道,要与封装他的那个PCM帧被指派的声道一致。
上述情况都是针对DSD64而言,而对DSD128,由于码率增加一倍,相应的也需要PCM的采样率增加到352.8kHz,这里分两种情况:
1. 用户的播放设备支持上述规格,那么从DSD64直接扩展到128即可,所有表示位和数据结构都保持不变。
2. 设备不支持这种高规格(例如使用AES/EBU时),这时还有一种办法:
用原先一对PCM帧,比如分别存储左右声道的两帧凑来存一个声道的DSD128数据。不过把前16个DSD位和后16个DSD位拆开存在前后两帧里。同时这里要用与之前不同的标识符,如下图红框中所示:
DoP原理浅析
第一种方法的好处就是可以只靠单纯提高PCM的采样率,就能兼容更高规格的DSD,但就看有没有这样高规格的设备了。如果使用USB来进行DoP播放时(本文开始时已提到过,其他数字输出也可用DoP方式),这种方法是推荐的。因为采用第二种方法总要占用比原先多一倍的声道,浪费大量带宽。 |
|