Skip to content

fix(sfu): bascule mesh↔SFU, lecture SFU immédiate + crossfade par personne#247

Merged
Pokled merged 1 commit into
mainfrom
feat/sfu-bascule-fix-audio
Jul 10, 2026
Merged

fix(sfu): bascule mesh↔SFU, lecture SFU immédiate + crossfade par personne#247
Pokled merged 1 commit into
mainfrom
feat/sfu-bascule-fix-audio

Conversation

@Pokled

@Pokled Pokled commented Jul 10, 2026

Copy link
Copy Markdown
Owner

Le test réel a trouvé le bug : après la bascule, aucun son distant (surtout mobile). Cause : on établissait l'SFU en sourdine puis on dé-coupait le son au commit, or les navigateurs (mobile en tête) bloquent le fait de dé-couper un son non déclenché par un geste utilisateur.

Fix : on JOUE le flux SFU immédiatement (comme le labo, prouvé sur mobile), et on coupe le mesh de chaque personne à l'instant EXACT où son flux SFU se met à jouer (crossfade par personne). Pour chacun : mesh OU SFU, jamais les deux, jamais le vide. Plus de son différé.

  • voiceSfu.ts : retrait de holdPlayback ; callback sfuSetConsumerPlayingCallback(userId).
  • voiceBascule.ts : enregistre le callback avant sfuJoin ; le commit démonte juste le mesh.
  • voice.ts : _meshMutePeerByUserId (roster userId→socketId).

svelte-check 0 err, build clean, 14 tests front. Additif & dormant. À re-tester à 2 sur Réunion.

…sonne

Le test réel a montré : après la bascule, aucun son distant (surtout mobile). Cause :
on établissait l'SFU EN SOURDINE puis on dé-coupait le son au commit, or les
navigateurs (mobile en tête) bloquent le fait de dé-couper un son non déclenché par un
geste utilisateur.

Fix : on JOUE le flux SFU immédiatement (comme le labo, prouvé sur mobile), et on coupe
le mesh de chaque personne à l'instant EXACT où son flux SFU se met à jouer (crossfade
par personne). Pour chacun : mesh OU SFU, jamais les deux, jamais le vide. Plus de son différé.

- voiceSfu.ts : retrait de holdPlayback/sfuActivatePlayback ; nouveau callback
  sfuSetConsumerPlayingCallback(userId) appelé quand un flux commence à jouer.
- voiceBascule.ts : enregistre le callback (coupe le mesh de la personne) avant sfuJoin ;
  le commit ne fait plus que couper un résidu + démonter les PC mesh.
- voice.ts : _meshMutePeerByUserId(userId) (roster userId->socketId).

svelte-check 0 err, build clean, 14 tests front verts. Additif & dormant (flag off = mesh
inchangé). À re-tester à 2 sur le canal Réunion.
@Pokled Pokled merged commit 8942c5f into main Jul 10, 2026
3 checks passed
@Pokled Pokled deleted the feat/sfu-bascule-fix-audio branch July 10, 2026 11:15
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