Skip to Content

關於DoP(DSD Over PCM)的說明

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的取樣頻率而定:

  1. 上述所說針對64FS DSD的解決方案,可以藉由將相關的PCM取樣頻率,從176.4kHz提昇到 352.8kHz,只要可以支援這種方式, 就可以輕鬆的延伸到128FS,而所有的標記位元以及順序都維持不變。

  2. 對於沒有辦法支持352.8kHz (比如 AES/EBU)管道時,有一個變通的方法可以使用,並且不需要提昇PCM的取樣頻率: 

PCM的音軌配對(比如說L/R) 可以用來傳輸單一DSD音軌的128FS DSD資料D,較低的PCM frame配對包含較舊的16 DSD位元 ,如同在64FS中相同的順序,較高的PCM frame配對則包含較新的16 DSD位元.,使用不同的標記位元在一開始就區分是否使用這種方式。

 

第一種解決方案藉由提昇PCM的取樣頻率,較能夠輕鬆的延伸支援較高的DSD取樣頻率。