Why architecture matters here
The architecture matters because the alternatives to good concealment are all audible and all bad. Playing silence for a lost 20 ms frame produces a click and a gap that the ear registers as a dropout — a handful per minute is enough to make a call feel unreliable. Repeating the last frame verbatim without smoothing creates a buzzy, robotic artifact because the waveform discontinuity at the frame boundary injects broadband energy. And doing nothing at all — letting the decoder freewheel on empty input — often produces garbage. Concealment exists because the naive responses to loss each degrade the experience more than a well-synthesized frame does.
Loss is not rare on the paths that carry real-time voice. Cellular and Wi-Fi links routinely see one to five percent packet loss, and it is bursty: losses cluster during a fade or a congestion event, so a call that is clean for a minute may drop four consecutive frames in a burst. That burstiness is exactly what makes PLC an architecture rather than a filter — concealing one frame is easy, but concealing an 80 ms burst without producing an obvious artifact requires the system to know when to stop extrapolating and start fading, and how to recover gracefully when the burst ends.
The second reason is the tight coupling to the rest of the receive path. PLC lives downstream of the jitter buffer and often inside the codec, and its decisions interact with both. A jitter buffer that is too aggressive declares late packets lost when they would have arrived in time, forcing needless concealment; one too lax adds latency. The codec's internal state must be kept coherent so that when real packets resume, the decoder is not confused by the frames PLC invented. Because concealment touches timing, buffering, and codec state at once, it has to be designed as part of the receive pipeline, not bolted on.
Finally, concealment quality is a direct driver of perceived call quality under exactly the conditions where quality matters most — a weak connection. Two systems with identical codecs and identical loss can differ by a full point of MOS purely on the strength of their PLC, because the listener's judgment is dominated by the worst moments, not the average ones. A call that conceals its losses inaudibly feels solid on a flaky network; one that lets them through feels broken. Investing in the concealment architecture is therefore one of the highest-leverage things a voice system can do for the tail of its user experience — it buys robustness precisely where the network is failing, which is precisely where users notice.
The architecture: every piece explained
The jitter buffer is the front of the receive path and the source of truth about what is missing. It holds arriving packets briefly, reorders them by sequence number, and releases one frame per playout tick. When the tick comes and the next sequence number is not present, the buffer reports a gap — that report is what triggers concealment. The buffer's depth is a latency-versus-loss tradeoff: deeper waits longer for late packets (fewer concealments, more delay), shallower plays out sooner (lower delay, more frames declared lost).
The loss detector turns a missing sequence number into a concealment decision and tracks the burst. It knows whether this is the first concealed frame or the fifth in a row, because that count drives how the synthesizer behaves — early frames are extrapolated at full energy, later ones are attenuated. It also distinguishes a truly lost frame from one that will arrive next tick, so that a one-frame concealment can be seamlessly replaced if the real data shows up slightly late.
The history buffer holds the last several good frames of decoded audio — the raw material for extrapolation. The synthesizer analyzes it to estimate the current pitch period and spectral envelope, then generates the replacement from those parameters. Without a clean history there is nothing to extrapolate from, which is why a loss immediately after a talk-spurt onset (little history) is harder to conceal than one in the middle of a steady vowel (rich history).
The synthesizer is the concealment model, and it spans a spectrum. Classic PLC does pitch-synchronous repetition: find the pitch period in the history, repeat it to fill the gap, and taper the energy. Codec-integrated PLC (as in Opus or EVS) uses the decoder's own model — LPC coefficients, excitation — to extend the signal more faithfully. Modern neural PLC (Lyra, WaveNet-style vocoders) runs a generative model that predicts the missing waveform from context and can conceal far longer bursts convincingly, at the cost of compute. The attenuation ramp governs long losses: because extrapolation drifts from reality the further it runs, after a few frames the synthesizer fades its output toward silence rather than droning on a stale pitch. And the overlap-add cross-fade is the recovery seam — when a real packet returns, the receiver does not cut abruptly from concealed to real audio (which would click) but windows the two and sums them over a few milliseconds, so the phase and energy transition smoothly. These pieces together — buffer, detector, history, synthesizer, ramp, and cross-fade — are the concealment machine, and each addresses a distinct way a gap could otherwise become audible.
End-to-end flow
Follow a single lost packet through the pipeline. Packets arrive and fill the jitter buffer in order: 100, 101, then a gap where 102 should be, then 103. At the playout tick for frame 102 the buffer finds it absent and reports a one-frame gap. The loss detector marks this as the first concealed frame of a possible burst and invokes the synthesizer.
The synthesizer reads the history buffer — the decoded audio of frames 100 and 101 — estimates the current pitch period and spectral envelope, and generates a 20 ms replacement frame by repeating the most recent pitch period at full energy, with a smoothing window at the boundary so there is no waveform discontinuity against frame 101. That synthesized frame is handed to playout in place of the missing 102; the listener hears continuous speech.
Frame 103 then arrives on time and is real. Here the cross-fade matters: the receiver has a synthesized 102 whose tail was extrapolated, and a real 103 whose head is the true signal. Rather than splicing them directly — which could click if their phases disagree — it overlap-adds the end of the concealed frame with the start of the real one over a few milliseconds, so the energy and phase glide from invention to reality. The codec's internal state is also nudged back into coherence so the decoder does not mis-predict the frames after the recovery.
Now the burst case. Suppose 102, 103, 104, and 105 are all lost. The synthesizer conceals 102 at full energy, then 103 at slightly reduced energy, and by 104 and 105 the attenuation ramp has faded the output substantially toward silence — because extending the same pitch for 80 ms would produce an unnatural monotone drone that is more objectionable than a gentle fade. When 106 finally arrives, the receiver cross-fades from the faded concealment back up into the real signal, and the codec state is resynchronized. The listener perceives a brief softening of the audio during the burst rather than a harsh dropout or a robotic artifact — which is exactly the graceful degradation the architecture is designed to produce, and it comes from the detector, the ramp, and the cross-fade cooperating rather than from any single clever synthesis step.