Skip to content

1.0.1

Choose a tag to compare

@WengYuehTing WengYuehTing released this 23 Sep 02:39
· 68 commits to main since this release

What's New

  • Interpolated playback is now paced on a queued vsync-driven timeline, producing more even output cadence and reducing visible stutter.
  • The camera publishes as soon as the first valid frame passes validation, shortening time-to-first-image. Frame brightness validation is now bounded to two seconds and only warns on timeout instead of stalling startup.
  • Remote frame interpolation is now off by default. Enable it via frameInterpolation.enabled or setFrameInterpolationEnabled(true) at runtime; unsupported devices and processing failures still fall back to the original video.
  • The X-Lab example removes the interpolation toggle and model picker and pins x2-fast-1080p. The statistics panel is grouped, and frame validation time is reported separately in launch timing.

API Changes

  • RealtimeConfiguration interpolation defaults changed from on to off: both frameInterpolation.enabled and isFrameInterpolationEnabled now default to false. Integrations that relied on the previous default must set frameInterpolation: { enabled: true } explicitly.
  • createLocalCameraStream adds an enableFrameValidation option (default true); set it to false to skip the startup brightness check and its wait.
  • RealtimeLaunchTiming adds frameValidationMs, reported separately from session and room connection timing; the field is absent when validation is skipped.

Requirements and Known Limitations

  • Camera and microphone require an HTTPS or localhost secure context and user permission. Audio playback remains subject to browser autoplay policies.
  • Interpolation requires WebGPU, shader-f16, and requestVideoFrameCallback; at most one frame is inserted per source pair with a 60fps ceiling, and the target rate is not guaranteed on all devices and resolutions.
  • The remote frame rate depends on server send pacing and network jitter; interpolation cannot compensate for burst-delivered source frames, so overall smoothness relies on server-side pacing.
  • The frame rate in RTC statistics reflects the raw received stream, and E2E is an RTC-provided estimate; neither represents full end-to-end latency including generation and client-side interpolation.