Repository navigation
CalloraVoipSdk 4.13.0 #383
BechsteinDigital
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
CalloraVoipSdk 4.13.0
Inbound WebRTC audio can now be buffered before it is raised, so a consumer that mixes gets a steady
cadence instead of whatever the network delivered. One new opt-in setting,
WebRtcConfiguration.AudioReceivePlayoutDelayMs, default 0 — every existing consumer is byte-identical to4.12.0. Purely additive: one new public member, nothing removed or changed (verified against
PublicApi.approved.txt).Highlights
A jitter buffer on the WebRTC receive path (#381)
Until now, packets arriving on a WebRTC audio track were raised the moment they came off the wire. For a
peer that forwards that is correct and should stay that way: the browser at the far end runs its own
jitter buffer (NetEQ), and a second one here would only add latency to the same job.
A peer whose consumer mixes is in the opposite position. It must produce one frame every frame interval
from whatever each source has delivered by then, and it cannot wait. Handed raw arrivals it reads a burst as
a single usable frame and the rest as silence.
Opus DTX makes that the normal case rather than the exception. A browser sends nothing at all while
nobody speaks, so the packets that follow a pause arrive together. The audible result is audio that cuts out
after every pause and returns a few seconds later — which is how this was found, in a two-party conference
between a browser and a telephone: phone to browser was clean, browser to phone stuttered.
Two things confirm the shape of the fix rather than merely the fix itself:
RtpCallMediaSessionbuffers arrivals and drainsthem from a playout loop. Only the WebRTC receive path did not.
decode from the buffer on the participant's own cadence. A pure SFU needs no buffer; a mixer does.
Using it
Buffering costs latency, which is why it is off by default: a forwarding peer would pay it for nothing.
Behaviour, for anyone enabling it
Arrival and playout both read
MonotonicClock: a wall-clock step mid-call would otherwise corrupt theschedule.
Compatibility
Purely additive. One new public member (
WebRtcConfiguration.AudioReceivePlayoutDelayMs); nothing removed orchanged, verified against
PublicApi.approved.txt. With the setting left at its default of 0, sessions arebyte-identical to 4.12.0. SemVer: MINOR.
See
CHANGELOG.mdfor the itemised list.This discussion was created from the release CalloraVoipSdk 4.13.0.
All reactions