However, it never works like this, except maybe in some rare live conditions (in which case, why are you even running this on TCP?). In reality, it goes:
Storage -> TCP Stream -> Ring buffer -> Sound output
Unless you manage to empty your ring buffer (which, in the case of modern hardware can easily be 32+MB, or multiple seconds of audio), you will not hear a single bit of difference. And if you do, it won't come in "after you were meant to hear it", you'll either get a massive gap, or repeats. There is no such thing as "data coming in too late/out of order".
Storage -> TCP Stream -> Sound output.
However, it never works like this, except maybe in some rare live conditions (in which case, why are you even running this on TCP?). In reality, it goes:
Storage -> TCP Stream -> Ring buffer -> Sound output
Unless you manage to empty your ring buffer (which, in the case of modern hardware can easily be 32+MB, or multiple seconds of audio), you will not hear a single bit of difference. And if you do, it won't come in "after you were meant to hear it", you'll either get a massive gap, or repeats. There is no such thing as "data coming in too late/out of order".