Skip to content

livekit-ffi 0.13.4 (2026-11-04)

Latest

Choose a tag to compare

@knope-bot knope-bot released this 04 Nov 22:56
88705b1

Fixes

  • Pre-encoded video publishing no longer requires a local encoder for its codec, so pre-encoded H265 works on hosts without an H265 encoder, a camera track requesting a codec no local encoder produces now publishes VP8 instead of a codec it cannot encode, and PeerConnectionFactory::video_encoder_codecs reports codec support using a non-exhaustive libwebrtc::video_codec::VideoCodec enum supporting FromStr, with Auto excluding the pre-encoded pass-through backend.
  • Re-baseline the iOS and Android binary size budgets for the signaling client, which blocked publishing the 0.13.3 Swift and Android packages.
  • A failed FFI request no longer writes the full request to the error log or to the Node error message, so E2EE keys in SetSharedKey and SetKey requests stay out of logs.
  • Preserve distinct frame metadata when queued video frames are captured within the same millisecond, including pre-encoded frames that share an RTP timestamp.
  • Build the shipped staticlib and cdylib with LTO, shrinking the core-modules library by ~17%
  • livekit-signaling: fix teardown gaps on requested close and response timeout - #1568 (@lukasIO)
  • OfferOptions::offer_to_receive_audio and offer_to_receive_video are now Option<bool>. None leaves libwebrtc's option unset, so receive-only transceivers stay receive-only. The default is still Some(false). Single peer connection offers leave both unset and no longer rewrite a=inactive to a=recvonly.
  • Space reconnect attempts on the same schedule as livekit-client's DefaultReconnectPolicy (0.3 s, 1.2 s, 2.7 s, 4.8 s, then 7 s, plus up to 1 s of jitter) instead of full jitter, which could spend all ten attempts within a few seconds of outage. The jitter now comes from a randomly keyed hash rather than the clock's sub-second digits, which are all zero on macOS. No new reconnect attempt starts after RECONNECT_MAX_DURATION (60 s), so slow failing attempts cannot keep a room in Reconnecting for minutes. RECONNECT_BACKOFF_MULTIPLIER is deprecated: the schedule is quadratic in the attempt number.
  • Add SignalOptions::cancellation_token, which ends a signal session for good: a connect or resume in flight stops with SignalError::Cancelled, and the signal task closes the transport.
  • A received transcription with an invalid track sid is now dropped with a warning. Before, it made the client panic, which aborts the process in release builds.