There’re generally 3 ways to recover error caused by Internet transmission, including Retransmission, Redundant Data, and Error Concealment.
Retransmission is easy to understand. Just resend the packet that is lost or has error. It has the following pros and cons,
- Retransmission resends the entire packet, so the data error/lost is repaired accurately.
- It has low overhead when there’s enough bandwidth, as it doesn’t computation.
- Retransmission increases the delay, as the sender needs to wait for some signal from receiver side about the packets needs to be retransmitted, or an timeout event has occurred. Also the retransmission itself take some time.
- Retransmission takes bandwidth. If there’s congestion at the network, retransmission can make the congestion worse.
In video streaming application context, there’re other aspects that matters, and retransmission can be selective based on a few factors,
- Important/Urgent packets are retransmitted first. For example, I frame packets are more important than B, P frame packets.
- Packets are only retransmitted when there’s enough time. For example, if a packet has missed its play time, there’s no need to retransmit the packet.
Redundant Data is well known as Forward Error Correction, a technique that sends additional information which can be used to recover lost/error packet at the receiver side.
- Bandwidth requirement doesn’t change when there’s loss, so it won’t make the congestion worse if there’s one.
- Receiver doesn’t needs sender’s action to recover.
- Delay is better if the computation is fast. This is also related to the dependency of the FEC, as the recovery may requires waiting of several packets to arrive first.
- It has constant overhead in terms of network bandwidth. Even when there’s no lost/error, redundant error still has to be sent.
- In terms of burst data loss, this method could fail.
To improve FEC against burst data loss, there’s two methods can be used,
- Arrange packets in multiple dimensions.
- Interleaving, rearrange the packet order when doing FEC.
Interleaving itself has some pros and cons
- It transfer burst data loss to random data loss, as the consecutive packets in the network transmission are not consecutive packets in FEC.
- It doesn’t add any overhead to bandwidth or computation, only rearrangement is done.
- It could cause delay, as the recovery needs to wait for packets in a longer distance in network transmission.
Error concealment refers to the technique of trying to coneal the error instead of recover it accurately.
- no overhead in terms of bandwidth, no matter there’s a congestion or not.
- Delay can be small if the concealment computation is fast.
- It may not always give a good result
- The computation can be complicated if complex concealment algorithms are used.
The concealment techniques include splice, noise substitution, repetition, interpolation, regeneration etc.