Skip to content

feat(sfu): AudioReceiveSlotBound event (3RTT T33) - #2120

Merged
tbarbugli merged 1 commit into
factory/3rttfrom
3rtt/t33-audio-slots
Oct 1, 2026
Merged

tbarbugli merged 1 commit into
factory/3rttfrom
3rtt/t33-audio-slots

Conversation

@tbarbugli

Copy link
Copy Markdown
Member

Part of the 3RTT project (task T33, audio receive slots). Targets the project integration branch factory/3rtt, not main.

What: a new SFU event, SfuEvent.audio_receive_slot_bound = 29, with the message:

message AudioReceiveSlotBound {
  string mid = 1;
  string user_id = 2;
  string session_id = 3;
  models.TrackType track_type = 4;
}

Why: FastJoinRequest.audio_receive_slots (T20) asks the SFU for send-only audio m-lines in the FastJoin subscriber offer, before anyone publishes into them. When a participant starts publishing audio later, the SFU binds it to a free slot with ReplaceTrack. The slot keeps the SSRC and msid its offer declared, so there is no renegotiation and the client can't tell from the media whose audio it is. This event tells it: the slot's mid, and the publisher's user, session and track type.

Additive only: one new oneof member and one new message. Nothing is renumbered and no existing field changes. Clients that don't ask for slots never get the event.

Generated with the pinned toolchain (generate.sh), protolint clean, go build ./... passes. Tag: v1.50.0-3rtt.2 (on this branch's head, 99cb2f3). GitHub Actions is blocked by org billing, so CI does not run on this PR.

Used by video-sfu and getstream-go-webrtc, branch 3rtt/t33-audio-slots in each. Their PRs have the measurements.

@tbarbugli
tbarbugli merged commit 185c035 into factory/3rtt Oct 1, 2026
4 checks passed
@tbarbugli
tbarbugli deleted the 3rtt/t33-audio-slots branch October 1, 2026 19:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant