Opus Packet Loss %
Understand Opus-level packet loss percentage — how CallMeter measures audio loss from the decoder's perspective, thresholds, and why codec-level loss differs from network-level loss.
Opus Packet Loss % reports the percentage of audio frames lost as seen by the Opus decoder. This is calculated as the ratio of gap frames (frames the decoder expected but never received) to the total frames pushed to the decoder. It is the most accurate measure of audio loss impact because it captures exactly what the codec experienced.
Think of it as the decoder's own loss report card. Network-level packet loss tells you what the network dropped. Opus packet loss tells you what the audio codec actually missed — which may be different, because the jitter buffer sits between the network and the decoder.
Opus only
This metric is specific to Opus-encoded audio streams. For codec-agnostic packet loss, see Packet Loss Rate.
How It Works
CallMeter tracks two counters at the Opus decoder:
- Frames pushed — Audio frames successfully delivered to the decoder
- Frames gapped — Frames the decoder expected (based on timing) but never received
The loss percentage is: (gapped / (pushed + gapped)) * 100
This is more precise than network-level loss because:
- Packets that arrive but are too late for the jitter buffer count as lost here
- Duplicate packets that the network counts as "received" are deduplicated before reaching the decoder
- Burst loss patterns that affect multiple frames are captured accurately
Why It Matters
Opus Packet Loss % directly predicts the amount of PLC (Packet Loss Concealment) activity. Every lost frame triggers PLC, generating synthetic audio. While Opus's PLC algorithm is excellent for isolated losses, sustained loss above 3% produces audible degradation that users will notice.
For enterprise VoIP testing, this metric is the single best predictor of audio quality impact from packet loss. It removes the ambiguity of network-level metrics and tells you exactly how much audio the listener missed.
Thresholds
| Level | Loss % | Interpretation |
|---|---|---|
| Good | 0 - 1% | Loss is minimal and fully concealed by PLC |
| Warning | 1% - 3% | Occasional audible artifacts, investigate network conditions |
| Critical | Above 3% | Noticeable quality degradation, PLC struggling to keep up |
Codec-level loss compounds faster
At 3% Opus packet loss, approximately 60ms per second of audio is concealed. Combined with burst loss patterns where consecutive frames are lost, the PLC algorithm's accuracy drops rapidly, producing audible warbling and distortion.
Common Causes of High Opus Packet Loss
| Cause | Explanation |
|---|---|
| Network packet loss | Packets dropped before reaching the receiver |
| Jitter buffer overflow | Buffer full, forcing late packets to be discarded |
| Jitter buffer underflow | Buffer too small, delivering gaps to the decoder |
| Late packet arrivals | Packets arriving after their playout deadline |
| Clock drift | Sender and receiver clocks diverging, causing systematic late arrivals |
How to Fix It
- Compare with network loss — If Opus loss is higher than network-level Packet Loss Rate, the jitter buffer is discarding packets. Review jitter buffer configuration.
- Check jitter buffer sizing — An undersized buffer cannot absorb jitter spikes, converting late packets into codec-level loss.
- Enable Forward Error Correction — Opus supports in-band FEC that lets the decoder recover from isolated losses without PLC.
- Address network quality — If Opus loss matches network loss, the problem is on the network path. Focus on reducing packet loss at the network level.
- Monitor clock drift — Significant Clock Drift can cause systematic jitter buffer issues that appear as Opus-level loss.
Related Metrics
- PLC Events — Each lost frame triggers a PLC event; directly driven by this metric
- PLC Duration — Total concealed audio time, the duration-based view of Opus loss
- Packet Loss Rate — Network-level loss for comparison with codec-level loss
- Jitter — High jitter often precedes Opus-level loss due to jitter buffer overflow
RFC Reference
The Opus codec's loss handling is defined in RFC 6716 (Definition of the Opus Audio Codec), Section 4 (PLC) and Section 2.1.7 (loss robustness). The interaction between Opus FEC and packet loss is further described in RFC 7587 (RTP Payload Format for the Opus Speech and Audio Codec).
Opus Decoder Gain
Understand Opus decoder gain measurement — how CallMeter tracks volume adjustments applied by the Opus decoder, and what non-zero gain values reveal about audio level issues.
Opus Last Packet Duration
Understand Opus last packet duration measurement — how CallMeter tracks the duration of decoded Opus frames, and what deviations from 20ms reveal about encoder configuration.