→ elguapo: Quote:「VAD 就是聲卡 使用ptp來的校准 在正確的時間 07/15 05:13
→ elguapo: 生成定時器中斷」:Mac Win Linux 三個平台的 AES67 driv 07/15 05:13
→ elguapo: er 都不會對系統時鐘校準,生成定時器中斷的時間是系統 07/15 05:13
→ elguapo: 時間。這點可由open source 的 Linux driver 窺知。Mac 07/15 05:13
→ elguapo: 上能使用的網卡除了外接的有機會有PHC & HW TS,其餘均 07/15 05:14
→ elguapo: 未有PHC + HW TS。加上 macOS 從未打算支援 PTP,因此 VA 07/15 05:14
→ elguapo: D 的 PTP implementation 為 SW slave only;Linux 雖說 07/15 05:14
→ elguapo: 核心(網卡驅動)支援 PHC & HW TS,但其 AES67 driver 07/15 05:14
→ elguapo: 也從不使用 PHC & HW TS,也是 SW slave only 並且也不 07/15 05:14
→ elguapo: 做時間校準。Win 的 MAD 就比較複雜,外部器材必須要設定 07/15 05:14
→ elguapo: 為 ASIO clock,MAD 才鎖得住,但鎖歸鎖,Merging 建議安 07/15 05:14
→ elguapo: 全的 buffer size 卻是 192~256 frames(依據 1fs size) 07/15 05:14
→ elguapo: 。macOS 最小 frame size 是 16,Linux 最小 frame 32( 07/15 05:14
→ elguapo: 若設定低於 32 Ravenna daemon 會自動跳回 default 128) 07/15 05:14
→ elguapo: 。 07/15 05:14
→ sunyanwen: 從Linux alsa lkm m_dTIC_CurrentPeriod往回找即可看到 07/15 05:39
→ sunyanwen: 定時器上的簡單的同步,VAD隔離了系統時鐘和時鐘偏差 07/15 05:39
→ elguapo: 那僅是 syntonization 07/15 05:58
推 greg7575: 所以不是"用電腦播放"的人都適用齁~~ 07/15 06:59
→ greg7575: 這一大串清楚說明了音樂到耳朵前的過程,謝謝分享 07/15 07:00
推 xoy: 現在的串流機大都也是在ARM平台上跑Linux的電腦,看功能跟串 07/15 07:37
→ xoy: 流的通訊協定做類似的事 07/15 07:37
推 djboy: 感謝分享!! 本文值得2個m。 07/15 11:13
→ djboy: 這篇文章,是我研究音響來,一直想知道的整串播放流程的細 07/15 11:19
→ djboy: 節。經過這麼多年,感謝sunyanwen大大實現我的心願。 07/15 11:20
推 danisaku: 感謝科普 07/15 11:56
推 Oswyn: 其實兩件事 影響硬體運作的時鐘(時脈) 跟用來對時(同步) 07/15 11:57
→ Oswyn: 我感覺 e大一直沒能分清楚什麼是什麼 07/15 11:58
→ Oswyn: 就像上面提到 ASIO、ASIO&WASAPI 都只是軟體層的 API 07/15 11:59
→ Oswyn: 一個軟體運作,跟硬體 clock 是不直接掛鈎的 07/15 12:00
→ Oswyn: 同步的 timestamp 是放在 Layer5 RTP Header 中,這代表的 07/15 12:09
→ Oswyn: 意義是什麼,稍理解 OSI 7層的人都應該能理解 07/15 12:12
→ Oswyn: 時間對齊和同步速度,並不是在傳輸過程中達成的 07/15 12:14
推 iitze: 推,這系列文,長知識 07/15 15:01
補充:
VAD中slave clock對時方法
https://i.imgur.com/cd7GuOH.png
PTP求得drift rate,定時器中斷(本機時間+1ms/drift rate)將落在標準時間+1ms附近,
下次中斷就是在(標準時間+1ms附近)的本機時間+(1ms/drift rate)
為防止偏差過大,在同步間隔R時會重新生成drift rate
可見VAD的timer是貼著標準時間走的
media clock只有在DAC/ADC邊緣才是真實的時鐘信號,
可以映射到GM絕對時間,但AES67沒有嚴格要求相位同步
RTP中的timestamp實際是media clock計數器,比如48000khz,1ms buffer,
GM時間每ms應該有1個RTP Packet,timestamp就應該加48,並沒有絕對時間
每個slave的每秒都有1000個ms(被同步約束)
只要滿足同步,就能在jitter buffer還原回精確的sample clock & sample
這期間VAD完全不知道每個sample在什麼時間生成,因為他是burst的,時間由GM保證
實際上同步建立在音頻時鐘+jitter buffer上,
除PTP packet外沒有其他packet有真正的timestamp
※ 編輯: sunyanwen (132.226.0.200 日本), 07/15/2023 18:11:25
→ elguapo: Quote:「可見VAD的timer是貼著標準時間走的」:我一直是 07/15 22:14
→ elguapo: 這麼表示的… 07/15 22:14
推 djboy: sun大以後多發文啊~~~ 07/15 23:47
補充2:
1ms jitter buffer意味著1ms delay,和其他設備align間隔也是1ms,
聲卡工作在burst模式,因為不能同步時鐘到AD/DA,這意味著相位要求幾乎沒有
頻率同步不需要delay measurement,故可以使用SW PTP(不需要hw timestamp)
這樣就只需要接收sync,同時用相對時間差計算drift rate
實際上VAD也沒有發任何ptp包出去
SW PTP可以滿足1ms要求,并且不需要额外硬件,是VAD首选
sample instant alignment,也就是標準(GM)時間對AES67的影響
Media Clock在VAD中,因為很難得到精確時間信息(1s/48000,scheduler)
聲卡的burst播放也不會在準確的時刻寫入sample
所以VAD與GM時間同步,播放設備按GM時鐘生成採樣率播放,理想情況下就是bit perfect
真正有差別的地方在多路AD/DA,mixer上
具有相同RTP timestamp的sample要在相同的時刻sample/playback,(AES11的+-5%)
這個時刻由PTP GM保證,通過hw timestamp+servo+dpll+apll生成sample edge,
確保所有相位同步的設備都具有非常接近的相位,必須要用HW PTP且需要很多額外組件
這個問題可以很大,但优势也在这里,用了GPS,全世界可以一起录
順便就可以提供給嵌入式系統一個時鐘源,系統時間和GM完全一樣,
但系統時間和音頻時鐘依舊沒有關聯,
Media Clock綁定到GM時間,要求絕對準確,OS取準確時間代價太大
最後 ALC NetworX VAD 提供了system time sync功能, 需要HW PTP,
Intel舊網卡基本都可以用,可以體驗看看
※ 編輯: sunyanwen (132.226.0.200 日本), 07/16/2023 05:29:00
→ elguapo: Quote:「OS取準確時間代價太大」:所以我 proposed 用 80 07/16 06:36
→ elguapo: 2.1AS layer 2 對電腦系統對時(layer 3 被 Ravenna 佔 07/16 06:36
→ elguapo: 用),無法 802.1AS 的系統則使用 local NTP 對時(同一 07/16 06:36
→ elguapo: 個時鐘源)。這樣的代價並不高且有效。 07/16 06:36
→ sunyanwen: 當然怎樣對時都沒問題,但即便對時也還是要經過VAD PTP 07/16 07:07
→ sunyanwen: 的drift rate校正,因為始終要同步到GM,想想看工作室 07/16 07:07
→ sunyanwen: 的GM如果沒用GPS時間且偏差很大,不經PTP校正+NTP到與G 07/16 07:07
→ sunyanwen: M不同步的時鐘=破壞音頻時鐘,對時目的還是為了同步, 07/16 07:07
→ sunyanwen: 只不過系統內的GM才是真正的參考 07/16 07:07
推 elguapo: Quote:「系統內的GM才是真正的參考」:是,完全同意。我 07/16 08:03
→ elguapo: 是用AES67系統內的GPS PTP GMC當唯一時鐘源(e810),用 07/16 08:03
→ elguapo: 多網口做出不同profile/layer/protocol給各應用區;e810 07/16 08:03
→ elguapo: 設計上只有一個PHC給四個網口共用,其中:一個網口UDP/E2 07/16 08:03
→ elguapo: E AES67 profile給Ravenna network,一個網口802.1AS走la 07/16 08:03
→ elguapo: yer 2,一個網口設定具HW TS的NTP server。另因預算不足 07/16 08:03
→ elguapo: 交換器只能用便宜的具TC能力的M4250。 07/16 08:03