Video call negotiation¶
Signalling - video-call
SIG-02 - status: draft - audio, video
A call is video-capable iff its <offer> carries a <video> child; the group fan-out notice signals video via media="video".
1:1 offer. A video-capable <offer> MUST carry a <video> child in addition
to its <audio enc="opus" rate="…"> advertisements (see call-offer).
The <video> marker is additive: the <audio> advertisements are identical in the
audio-only and video cases.
<offer call-id call-creator>
<audio enc="opus" rate="8000"/>
<audio enc="opus" rate="16000"/>
<video/> <!-- present ⇒ video call -->
</offer>
- A receiver MUST treat the call as video iff the
<offer>contains at least one<video>child, audio-only otherwise (is_video = any child tag == "video"). - A receiver MUST NOT require any attribute on
<video>; element presence is the signal. - A receiver MUST parse and honour the
<audio>advertisements of a video offer exactly as for an audio-only offer.
Group fan-out notice. A video call announced via <offer_notice>
(see group-call) carries media="video" as an attribute (not a child;
audio uses media="audio"). A receiver MUST treat the call as video iff
media == "video". type == "group" independently marks it a group call.
Answering. The callee answers a video offer with the same <preaccept> /
<accept> handshake as audio-only (see call-accept,
call-preaccept); the accept negotiates the <audio> rate as usual.
No video-specific child in <accept> is required to accept the audio portion.
Requires: call-offer, group-call, call-accept, call-preaccept
Implemented by
| Flavor | Status | Source | Notes |
|---|---|---|---|
whatsapp-rust |
working | history - blame - commits 674e851 |
Parses the |
zapo-caller |
partial | — | Signalling/relay stack present; video-offer construction not covered. |
Annotation wacrg:SIG-02 — a flavor marks its implementation site in source with this comment; a script clones the source, finds it, and attaches the commit blame/permalink.
Contributors
| Contributor | Role |
|---|---|
| wrote initial spec |
protocol history / diff - blame
Open questions - Attributes (if any) carried on the
References - RFC 3711 — SRTP
Changelog¶
- 2026-06-21 — Initial spec entry.