v4.6.0-preview.1 — WebRTC facade (preview) & Voip* config rename
Pre-release
⚠️ Pre-release. Ships the new WebRTC facade as a preview: it has not yet been
validated against real browsers (Chrome/Firefox) and its API may still change before it is
declared stable. The SIP stack (VoipClient) is unchanged and production-ready.
✨ Highlights
Public WebRTC facade (preview, transport-only) — a signalling-neutral browser/peer surface
in the CalloraVoipSdk.WebRtc namespace, mirroring the four-level design of VoipClient. The app
owns signalling and the codec; the SDK runs ICE, DTLS-SRTP, BUNDLE and RTP/RTCP and moves bytes —
it never encodes or decodes.
WebRtcClient/IWebRtcClient—new WebRtcClient()or DI viaAddCalloraWebRtc(...);
CreatePeer()returns anIPeerConnection.- Signalling happy path —
peer.ConnectAsync(IWebRtcSignaling, WebRtcRole)drives the full
RFC 8829 offer/answer over your channel and completes when connected (the WebRTC counterpart to
DialAndWaitUntilConnectedAsync). Neutral primitives (CreateOffer/SetRemoteDescriptionAsync
/StartAsync) remain for manual control. - W3C track model —
TrackReceived→RemoteTrack(Kind,StreamId= remotea=msid,
TrackId) withEncodedFrame(payload, RTP timestamp, key-frame flag). - Multi-peer manager —
IWebRtcClient.Peers. - L3 extension seams —
IMediaTap+AttachMediaTap(in/out media for recording/analytics/AI);
IWebRtcClientModule+IWebRtcClient.Modules(programmatic or DI auto-attached). - Two-facade composition —
AddCalloraVoip(sip => …).AddWebRtc(rtc => …). - Samples —
WebRtcPeer,WebRtcRecording,WebRtcDependencyInjection, and a simplest-form
browser video-call website (WebRtcVideoCall.Web).
💥 Breaking changes
The SIP-facade configuration types were renamed so each facade owns a facade-scoped name (parallel
to WebRtcConfiguration / WebRtcOptions / AddCalloraWebRtc), freeing the Callora* names for the
upcoming composition layer. There are no compatibility aliases.
| Before | After |
|---|---|
SdkConfiguration |
VoipConfiguration |
SdkOptions |
VoipOptions |
AddCallora(...) |
AddCalloraVoip(...) |
Migration — rename these three symbols at your call sites:
// before
services.AddCallora(o => { /* … */ });
var cfg = new SdkConfiguration { /* … */ };
// after
services.AddCalloraVoip(o => { /* … */ });
var cfg = new VoipConfiguration { /* … */ };
VoipClient and all other public types are unchanged; behaviour is identical.
⚠️ Preview limitations
- Not yet validated against real browsers (Chrome/Firefox).
- Both peers need a configured media port until early-bind / trickle ICE lands.
- No data channels (SCTP), TURN relay or simulcast yet.
📦 Targets
net8.0 · net9.0 · net10.0
Full changelog: CHANGELOG.md (https://github.com/BechsteinDigital/CalloraVoipSDK/blob/main/CHANGELOG.md)