|
3楼
发表于 2017-4-5 09:02
|
只看该作者
来自 上海
本帖最后由 aarwwefdds 于 2017-4-5 09:21 编辑
楼主似乎是拿TCP研究的 但是没什么代表性 而且把很多概念混为一谈了
首先大多数网卡本身具有gso gro rsc等功能且默认打开 会将数据包组合到一起再产生IRQ减轻CPU负担 副作用是会造成延迟抖动等问题,这个是非常正常的。通常幅度较小而已。
其次TCP本身就不适合延迟敏感应用 它本身就有的窗口机制、buffer机制以及ACK机制决定了它注定会产生非常大的抖动问题,少则小于1ms多则几千ms。所以在对延迟敏感(例如VoIP)的应用里基本都使用UDP
大多数“网播”都实现了一个嵌入式系统 具有CPU和足够的内存容量 并且自身就可以缓存来自网络的数据 因此完全不需要担心网络上的延迟抖动问题。“网播”的网卡接收到数据 传给它的CPU CPU再将此数据处理后送入数播内部的数字输出 剩下的就是数字输出怎么做的问题了。这些一系列缓存和数据处理肯定会引入不小的延迟的 但是人很难感受到而已
这里需要插一句:任何“低延迟”都可能对音质产生坏影响 欣赏音乐本身完全不需要低延迟!
因此网播等数播自身从概念上说并不具备比PC+USB界面更优异的能力 倒不如说它本身就是一个小型PC。其实际对音质的影响是由其数字输出(假设是SPDIF/AES3之类的输出)的设计水平决定而已
另外多数的DAC芯片自身并没有什么缓存机制 DAC芯片很简单 你给它I2S之类的数据(这是时钟同步的 缓存基本没有意义 除非DAC自身要做ASRC 那才会需要一点缓存) 它给你输出模拟信号。只有USB这样的界面芯片才会有一点FIFO缓存 例如USB异步界面会打开一个反馈Endpoint 告诉PC应该给它塞多少数据 使得缓存不溢出也不欠载。然后USB界面芯片自身作为主时钟 以自己的时钟发生器(例如有源晶振) 给后端的DAC喂数据。此时理论上来自USB总线的抖动已经被完全的隔离 输出的I2S信号抖动由USB界面芯片及其晶振设计影响
因此研究下来你会得到一个结论 折腾了那么多真的不是开了脑放?
当然 实际情况就复杂些:
1.SPDIF输出水平各家都不太一样 专业的数字输出 “通常”时钟都会更精确 抖动都会更低。(所以 数播理论上会有用)。更低的抖动会降低解码器的SPDIF界面PLL的压力 使得其输出的I2S信号时钟更稳定。
(然而你不觉得如果纯粹为了解决抖动投资几千块搞个数播不如搞个好点的USB转SPDIF界面更好?)
2.SPDIF会受各种外部因素产生抖动 所以一条好的SPDIF线理论上也有一定的帮助。但是好的SPDIF界面的PLL设计可以将抖动压的很低。
然而比较遗憾的是SPDIF芯片在解码器内部不是谁都能换的。所以预算有限的情况下去买高价线还是换个好解码自己考虑
3.USB界面芯片各家的水平也不一样,产生的I2S时钟有好有坏。
(好在我们还有SPDIF 可以用好的USB转SPDIF界面解决这个问题?
4.USB音频标准 传输数据使用的是同步类型Endpoint(这与音频传送本身是同步还是异步无关) 其本身是没有错误纠正机制的,但一条合格的USB线正常距离正常情况下产生错误的概率非常非常低。而非正常情况下 USB音频标准认为低延迟比错误纠正更重要。不过有些USB界面芯片是从VBUS取电,会受到来自VBUS的糟糕供电影响其性能。这取决于解码器/独立界面自身设计
所以USB线有用么?有多大用?这个得自己思考
5.买了好东西以后的脑放大开 也有很大的帮助 |
|