PCM音频数据、DSD音频数据,spdif,以及DOP格式说明
了解PCM音頻數據、DSD音頻數據,spdif看下面連接
https://blog.csdn.net/LINZAI508/article/details/111413061#commentBox
DOP格式
對蘋果平臺而言,既然它只支持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位都能派上用場,如圖:
最前面的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,這里分兩種情況:
用戶的播放設備支持上述規格,那么從DSD64直接擴展到128即可,所有表示位和數據結構都保持不變。
設備不支持這種高規格(例如使用AES/EBU時),這時還有一種辦法:
用原先一對PCM幀,比如分別存儲左右聲道的兩幀湊來存一個聲道的DSD128數據。不過把前16個DSD位和后16個DSD位拆開存在前后兩幀里。同時這里要用與之前不同的標識符,如下圖紅框中所示:
總結
以上是生活随笔為你收集整理的PCM音频数据、DSD音频数据,spdif,以及DOP格式说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于流量套利你需要知道的一切(下)
- 下一篇: 客制化字段新增