Skip to content

0.8.0 — the receiver cushion is automatic

Latest

Choose a tag to compare

@cndn cndn released this 05 Sep 09:06
· 4 commits to main since this release

The freeze-free receiver buffer, everywhere and automatic

The avatar crosses the public internet, where a few percent of packet loss is normal. The browser's default shallow receiver buffer stalls on every lost packet; a 0.5s cushion recovers it before playout (measured at ~5% loss: ~11fps with multi-second freezes → a steady 25fps). Until now that cushion was applied only by AvatarVideoSurface, so a vanilla page — or a React page rendering the track itself — froze. Nobody embedding the SDK should have to know that knob exists.

  • realtime-avatar/browser gains prepareAvatarRoom(room): one call after new Room(), before connect; every track the room subscribes gets the cushion, audio and video alike. Also exported: applyPlayoutDelay, applyAvatarPlayoutDelay, DEFAULT_AVATAR_PLAYOUT_DELAY_SECONDS. (#57, #58)
  • attachRemoteAudio applies it for you, so the documented vanilla pattern is covered with no new line. playoutDelaySeconds: false opts out. (#58)
  • RealtimeAvatarLiveKitRoom applies it room-wide to whatever you render inside it. playoutDelaySeconds={false} opts out. (#58)
  • Demos: LiveKit is loaded on the first gesture instead of blocking every handler behind three CDN round trips, and every demo uses the one-liner. (#57)

A minor rather than a patch because the demos import the new surface; a copy of one needs this version or later. Nothing on /react or /react-native changes shape.

Also in this release line since 0.6.1: the 8,000-character instructions envelope (#49), MAX_SESSION_CLIPS following the platform to 20 clips / 8 idle (#50).