Cogito wrote:
Right Roscoe.
I am trying to make a couple of points to Dave.
1. Network bandwidth is not like a faucet. There is no continuous flow of bits from one end to the other . It's all packets with acknowledgment of each packet, re transmissions etc . Granted if the packet doesn't arrive at the DAC in time or is corrupted, DAC simply drops the packet and moves on.
2. What packets are sent over the USB and when is determined by the time division algorithms of the OS. Hence the talk about deterministic OSs.
The second part of #2 is not correct. If the packet is not received at the receiving end in a USB transmission the sender is asked to re-transmit. See below from Wikipedia:
If a USB host does not receive a response (such as an ACK) for data it has transmitted, it does not know if the data was received or not; the data might have been lost in transit, or it might have been received but the handshake response was lost.
To solve this problem, the device keeps track of the type of DATAx packet it last accepted. If it receives another DATAx packet of the same type, it is acknowledged but ignored as a duplicate. Only a DATAx packet of the opposite type is actually received.
If the data is corrupted while transmitted or received, the CRC check fails. When this happens, the receiver does not generate an ACK, which makes the sender resend the packet
If there is only a small problem with the transmission the re-send will usually happen with enough time to prevent a dropout. If the problem is severe enough, the transmission will fail. Remember that USB is asynchronous so you don't have the problems with jitter like you do with SPDIF or AES/EBU that are synchronous. Instead of jitter noise you will have droupouts that if severe enough and repeated can sound like static.
Tom
Isochronous transfers are used to transfer data in real-time between host and device. When an isochronous endpoint is set up by the host, the host allocates a specific amount of bandwidth to the isochronous endpoint, and it regularly performs an IN- or OUT-transfer on that endpoint. For example, the host may OUT 1 KByte of data every 125µs to the device. Since a fixed and limited amount of bandwidth has been allocated, there is no time to resend data if anything goes wrong. The data has a CRC as normal, but if the receiving side detects an error there is no resend mechanism.