Common audio streaming delivery today is performed with TCP connections, which is a standard and reliable method. This delivery performs quite well, as it is easy to implement and use well-known techniques. However, it has severe limitations when coping with error-prone connections. TCP introduce delay since lost packets must be re-requested until the transmission is successful. Live streaming audio suffer from this, as delays create short pauses in the audio as it plays back. A short period with lower quality audio is more acceptable to the listener than a full pause. Therefore, various techniques should be utilized to limit the need to retransmit packets - or at least to minimize the impact that lost packets have on the perceived audio stream.
I have implemented an RTP audio streaming server and client for uncompressed audio that includes different error correction and prevention techniques. Three variants are tested: Time-Limited Packet Retransmission (RT) does packet retransmission as long as specified near-real time constraints are met. Packets that does not meed the time limit are skipped by server and client. Forward Error Correction (FEC) is implemented with a variant of the RFC2733 specification. By adding a stream with redundant data for error correction, missing packets can be replaced without requesting a retransmission. Layered Packet Format (LPF) is an interleaving scheme for audio packets. A packet loss will not result in gaps in the audio stream, it will rather cause a tiny period with lower audio quality.
Testing shows that RT and FEC work successfully toward improving the audio streaming, both alone and in combination with each other. The perceived audio in LPF operation was worse than expected, but the scheme managed to correct or approximate lost samples fairly well. The testbed included ITU-R BS.1387 objective audio quality measurement and the NIST Net networking emulator in addition to other tools.