Skip to content

feat: put WHIP/WHEP endpoints with same username in an SMB neighbour group - #407

Draft
srperens wants to merge 1 commit into
mainfrom
feat/whip-whep-neighbours
Draft

srperens wants to merge 1 commit into
mainfrom
feat/whip-whep-neighbours

Conversation

@srperens

@srperens srperens commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

Why

When a site gateway (e.g. Strom bridging a hardware talkback system) joins a line with both a WHIP (send) and a WHEP (receive) connection, the WHEP stream contains the site's own WHIP audio. The site hears itself back, and through the hardware system this becomes a feedback loop. We need mix-minus per party.

What

WHIP and WHEP endpoints are now placed in an SMB neighbour group named after the username: whipwhep:<username>. SMB never forwards audio between endpoints that share a neighbour group (see EngineMixerAudio.cpp in SymphonyMediaBridge), so a WHIP and WHEP pair with the same username works as the same party. No extra configuration is needed.

  • Only WHIP/WHEP endpoints are affected. Browser sessions are unchanged.
  • Groups are scoped per SMB conference, i.e. per line.
  • Adds optional neighbours to the SmbEndpointDescription schema.

Note: the username is now the identity of the party. Two different parties that use the same username on the same line will not hear each other.

Background: SMB neighbours

Neighbour groups in SMB are originally meant for acoustic echo: when several participants sit in the same physical room, their microphones pick up each other's speakers. SMB does not route audio between endpoints in the same neighbour group, which avoids acoustic feedback in the room.

Here we use the same mechanism for a different purpose: a WHIP and a WHEP endpoint with the same username are the same party, so they are put in the same group and the party never gets its own audio back.

Testing

  • Unit tests added for WHIP and WHEP (neighbour group set from username)
  • Full test suite, tsc, eslint, prettier pass
  • Verified against a real SMB: WHIP and WHEP with the same username on a line → no own audio back; other parties still audible; different usernames → own audio returns

🤖 Generated with Claude Code

…group

A WHIP and a WHEP connection with the same username represent the same
party, e.g. a site gateway bridging a hardware talkback system. Setting
an SMB neighbour group named after the username makes SMB skip
forwarding audio between them, so the party does not get its own audio
back (mix-minus) and no feedback loop is created through the gateway.

Only applies to WHIP and WHEP endpoints; browser sessions are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@srperens
srperens requested a review from birme as a code owner October 14, 2026 07:50
@srperens
srperens marked this pull request as draft October 14, 2026 07:51
@birme

birme commented Oct 20, 2026

Copy link
Copy Markdown
Contributor

This PR looks like part of the multi-repo video-support dependency stack together with:

Holding off on automated review/merge here — this needs a human (or the relevant implementation agent) to assess the whole stack together, not a per-PR pass. (This PR is also a draft.)

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.

2 participants