Skip to content

Releases: livekit/livekit

v1.6.1

26 Apr 19:11
15ffb53
Compare
Choose a tag to compare

Changelog

This release changes the default behavior when creating or updating WHIP
ingress. WHIP ingress will now default to disabling transcoding and
forwarding media unchanged to the LiveKit subscribers. This behavior can
be changed by using the new enable_transcoding available in updated
SDKs. The behavior of existing ingresses is unchanged.

Added

  • Add support for "abs-capture-time" extension. (#2640)
  • Add PropagationDelay API to sender report data (#2646)
  • Add support for EnableTranscoding ingress option (#2681)
  • Pass new SIP metadata. Update protocol. (#2683)
  • Handle UpdateLocalAudioTrack and UpdateLocalVideoTrack. (#2684)
  • Forward transcription data packets to the room (#2687)

Fixed

  • backwards compatability for IsRecorder (#2647)
  • Reduce RED weight in half. (#2648)
  • add disconnected chan to participant (#2650)
  • add typed ops queue (#2655)
  • ICE config cache module. (#2654)
  • use typed ops queue in pctransport (#2656)
  • Use the ingress state updated_at field to ensure that out of order RPC do not overwrite state (#2657)
  • Log ICE candidates to debug TCP connection issues. (#2658)
  • Debug logging addition of ICE candidate (#2659)
  • fix participant, ensure room name matches (#2660)
  • replace keyframe ticker with timer (#2661)
  • fix key frame timer (#2662)
  • Disable dynamic playout delay for screenshare track (#2663)
  • Don't log dd invalid template index (#2664)
  • Do codec munging when munging RTP header. (#2665)
  • Connection quality LOST only if RTCP is also not available. (#2670)
  • Handle large jumps in RTCP sender report timestamp. (#2674)
  • Bump golang.org/x/net from 0.22.0 to 0.23.0 (#2673)
  • do not capture pointers in ops queue closures (#2675)
  • Fix SubParticipant twice when paticipant left (#2672)
  • use ttlcache (#2677)
  • Detach subscriber datachannel to save memory (#2680)
  • Clean up UpdateVideoLayers (#2685)

v1.6.0

11 Apr 06:18
eaaf44d
Compare
Choose a tag to compare

Added

  • Support for Participant.Kind. (#2505 #2626)
  • Support XR request/response for rtt calculation (#2536)
  • Added support for departureTimeout to keep the room open after participant depart (#2549)
  • Added support for Egress Proxy (#2570)
  • Added support for SIP DTMF data messages. (#2559)
  • Add option to enable bitrate based scoring (#2600)
  • Agent service: support for orchestration v2 & namespaces (#2545 #2641)
  • Ability to disable audio loss proxying. (#2629)

Fixed

  • Prevent multiple debounce of quality downgrade. (#2499)
  • fix pli throttle locking (#2521)
  • Use the correct snapshot id for PPS. (#2528)
  • Validate SIP trunks and rules when creating new ones. (#2535)
  • Remove subscriber if track closed while adding subscriber. (#2537)
  • fix #2539, do not kill the keepaliveWorker task when the ping timeout occurs (#2555)
  • Improved A/V sync, proper RTCP report past mute. (#2588)
  • Protect duplicate subscription. (#2596)
  • Fix twcc has chance to miss for firefox simulcast rtx (#2601)
  • Limit playout delay change for high jitter (#2635)

Changed

  • Replace reflect.Equal with generic sliceEqual (#2494)
  • Some optimisations in the forwarding path. (#2035)
  • Reduce heap for dependency descriptor in forwarding path. (#2496)
  • Separate buffer size config for video and audio. (#2498)
  • update pion/ice for tcpmux memory improvement (#2500)
  • Close published track always. (#2508)
  • use dynamic bucket size (#2524)
  • Refactoring channel handling (#2532)
  • Forward publisher sender report instead of generating. (#2572)
  • Notify initial permissions (#2595)
  • Replace sleep with sync.Cond to reduce jitter (#2603)
  • Prevent large spikes in propagation delay (#2615)
  • reduce gc from stream allocator rate monitor (#2638)

v1.5.3

19 Feb 07:53
8371848
Compare
Choose a tag to compare

Changelog

Added

  • Added dynamic playout delay if PlayoutDelay enabled in the room (#2403)
  • Allow creating SRT URL pull ingress (requires Ingress service release) (#2416)
  • Use default max playout delay as chrome (#2411)
  • RTX support on publisher transport (#2452)
  • Add exponential backoff to room service check retries (#2462)
  • Add support for ingress ParticipantMetadata (#2461)

Fixed

  • Prevent race of new track and new receiver. (#2345)
  • Fixed race condition when applying metadata update. (#2363 #2478)
  • Fixed race condition in DownTrack.Bind. (#2388)
  • Improved PSRPC over redis reliability with keepalive (#2398)
  • Fix race condition on Participant.updateState (#2401)
  • Replace /bin/bash with env call for FreeBSD compatibility (#2409)
  • Fix startup with -dev and -config (#2442)
  • Fix published track leaks: close published tracks on participant close (#2446)
  • Enforce empty SID for UserPacket from hidden participants (#2469)
  • Ignore duplicate RID. (Fix for spec breakage by Firefox on Windows 10) (#2471)

Changed

  • Logging improvements (various PRs)
  • Server shuts down after a second SIGINT to simplify development lifecycle (#2364)
  • A/V sync improvements (#2369 #2437 #2472)
  • Prometheus: larger max session start time bin size (#2380)
  • Updated SIP protocol for creating participants. (requires latest SIP release) (#2404 #2474)
  • Improved reliability of signal stream starts with retries (#2414)
  • Use Deque instead of channels in internal communications to reduce memory usage. (#2418 #2419)
  • Do not synthesise DISCONNECT on session change. (#2412)
  • Prometheus: larger buckets for jitter histogram (#2468)
  • Support for improved Ingress internal RPC (#2485)
  • Let track events go through after participant close. (#2487)

Removed

  • Removed code related to legacy (pre 1.5.x) RPC protocol (#2384 #2385)

v1.5.2

22 Dec 07:10
28ae092
Compare
Choose a tag to compare

Support for LiveKit SIP Bridge ☎️

Added

Fixed

  • Guard against bad quality in trackInfo (#2271)
  • Group SDES items for one SSRC in the same chunk. (#2280)
  • Avoid dropping data packets on local router (#2270)
  • Fix signal response delivery after session start failure (#2294)
  • Populate disconnect updates with participant identity (#2310)
  • Fix mid info lost when migrating multi-codec simulcast track (#2315)
  • Store identity in participant update cache. (#2320)
  • Fix panic occurs when starting livekit-server with key-file option (#2312) (#2313)

Changed

v1.5.1

10 Nov 00:01
a24b9b8
Compare
Choose a tag to compare

We've added support for the Agent framework. More on this soon!

Added

  • PSRPC based room and participant service. disabled by default (#2171 #2205)
  • Add configuration to limit MaxBufferedAmount for data channel (#2170)
  • Agent framework worker support (#2203 #2227 #2230 #2231 #2232)

Fixed

  • Fixed panic in StreamTracker when SVC is used (#2147)
  • fix CreateEgress not completing (#2156)
  • Do not update highest time on padding packet. (#2157)
  • Clear flags in packet metadata cache before setting them. (#2160)
  • Drop not relevant packet only if contiguous. (#2167)
  • Fixed edge cases in SVC codec support (#2176 #2185 #2191 #2196 #2197 #2214 #2215 #2216 #2218 #2219)
  • Do not post to closed channels. (#2179)
  • Only launch room egress once (#2175)
  • Remove un-preferred codecs for android firefox (#2183)
  • Fix pre-extended value on wrap back restart. (#2202)
  • Declare audio inactive if stale. (#2229)

Changed

  • Defer close of source and sink to prevent error logs. (#2149)
  • Continued AV Sync improvements (#2150 #2153)
  • Egress store/IO cleanup (required for Egress 1.8.0) (#2152)
  • More fine grained filtering NACKs after a key frame. (#2159)
  • Don't filter out ipv6 address for client don't support prflx over relay (#2193)
  • Disable h264 for android firefox (#2190)
  • Do not block on down track close with flush. (#2201)
  • Separate publish and subscribe enabled codecs for finer grained control. (#2217)
  • improve participant hidden (#2220)
  • Reject migration if codec mismatch with published tracks (#2225)

v1.5.0

16 Oct 06:18
d9cf7d2
Compare
Choose a tag to compare

Added

  • Add option to issue full reconnect on data channel error. (#2026)
  • Support non-SVC AV1 track publishing (#2030)
  • Add batch i/o to improve throughput (#2033)
  • Integrate updated TWCC responder (#2038)
  • Allow RoomService.SendData to use participant identities (#2051 #2058)
  • Support for Participant Egress (#2070)
  • Add max playout delay config (#2089)
  • Enable SVC codecs by default (#2109)
  • Add SyncStreams flag to Room, protocol 10 (#2110)

Fixed

  • Unlock pendingTracksLock when mid is empty (#1994)
  • Do not offer H.264 high profile in subscriber offer, fixes negotiation failures (#1997)
  • Prevent erroneous stream pause. (#2008)
  • Handle duplicate padding packet in the up stream. (#2012)
  • Do not process packets not processed by RTPStats. (#2015)
  • Adjust extended sequence number to account for dropped packets (#2017)
  • Do not force reconnect on resume if there is a pending track (#2081)
  • Fix out-of-range access. (#2082)
  • Start key frame requester on start. (#2111)
  • Handle RED extended sequence number. (#2123)
  • Handle playoutDelay for Firefox (#2135)
  • Fix ICE connection fallback (#2144)

Changed

  • Drop padding only packets on publisher side. (#1990)
  • Do not generate a stream key for URL pull ingress (#1993)
  • RTPStats optimizations and improvements (#1999 #2000 #2001 #2002 #2003 #2004 #2078)
  • Remove sender report warp logs. (#2007)
  • Don't create new slice when return broadcast downtracks (#2013)
  • Disconnect participant when signal proxy is closed (#2024)
  • Use random NodeID instead of MAC based (#2029)
  • Split RTPStats into receiver and sender. (#2055)
  • Reduce packet meta data cache (#2073 #2078)
  • Reduce ghost participant disconnect timeout (#2077)
  • Per-session TURN credentials (#2080)
  • Use marshal + unmarshal to ensure unmarshallable fields are not copied. (#2092)
  • Allow playout delay even when sync stream isn't used. (#2133)
  • Increase accuracy of delay since last sender report. (#2136)

v1.4.5

23 Aug 00:51
adead8b
Compare
Choose a tag to compare

1.4.5 added support for URL pull Ingress. It's now possible to ingest media files (i.e. mp4, HLS) as long as they are accessible by URL.

Added

  • VP9 codec with SVC support (#1586)
  • Support for source-specific permissions and client-initiated metadata updates (#1590)
  • Batch support for signal relay (#1593 #1596)
  • Support for simulating subscriber bandwidth (#1609)
  • Support for subscription limits (#1629)
  • Send Room updates when participant counts change (#1647)

Fixed

  • Fixed process return code to 0 (#1589)
  • Fixed VP9 stutter when not using dependency descriptors (#1595)
  • Fixed stutter when using dependency descriptors (#1600)
  • Fixed Redis cluster support when using Egress or Ingress (#1606)
  • Fixed simulcast parsing error for slower clients (camera and screenshare) (#1621)
  • Don't close RTCP reader if Downtrack will be resumed (#1632)
  • Restore VP8 munger state properly. (#1634)
  • Fixed incorrect node routing when using signal relay (#1645)
  • Do not send hidden participants to others after resume (#1689)
  • Fix for potential webhook delivery delays (#1690)

Changed

  • Refactored video layer selector (#1588 #1591 #1592)
  • Improved transport fallback when client is resuming (#1597)
  • Improved webhook reliability with delivery retries (#1607 #1615)
  • Congestion controller improvements (#1614 #1616 #1617 #1623 #1628 #1631 #1652)
  • Reduced memory usage by releasing ParticipantInfo after JoinResponse is transmitted (#1619)
  • Ensure safe access in sequencer (#1625)
  • Run quality scorer when there are no streams. (#1633)
  • Participant version is only incremented after updates (#1646)
  • Connection quality attribution improvements (#1653 #1664)
  • Remove disallowed subscriptions on close. (#1668)
  • A/V sync improvements (#1681 #1684 #1687 #1693 #1695 #1696 #1698 #1704)
  • RTCP sender reports every three seconds. (#1692)

v1.4.4

09 Jul 06:56
52212a6
Compare
Choose a tag to compare

Added

  • Add dependency descriptor stream tracker for svc codecs (#1788)
  • Full reconnect on publication mismatch on resume. (#1823)
  • Pacer interface in down stream path. (#1835)
  • retry egress on timeout/resource exhausted (#1852)

Fixed

  • Send Room metadata updates immediately after update (#1787)
  • Do not send ParticipantJoined webhook if connection was resumed (#1795)
  • Reduce memory leaks by avoiding references in closure. (#1809)
  • Honor bind address passed as --bind also for RTC ports (#1815)
  • Avoid dangling downtracks by always deleting them in receiver close. (#1842)
  • Better cleanup of subscriptions with needsCleanup. (#1845)
  • Fix nack issue for svc codecs (#1856)
  • Fixed hidden participant update were still sent when track is published (#1857)
  • Fixed Redis lockup when unlocking room with canceled request context (#1859)

Changed

  • Improvements to A/V sync (#1773 #1781 #1784 )
  • Improved probing to be less disruptive in low bandwidth scenarios (#1782 #1834 #1839)
  • Do not mute forwarder when paused due to bandwidth congestion. (#1796)
  • Improvements to congestion controller (#1800 #1802 )
  • Close participant on full reconnect. (#1818)
  • Do not process events after participant close. (#1824)
  • Improvements to dependency descriptor based selection forwarder (#1808)
  • Discount out-of-order packets in downstream score. (#1831)
  • Adaptive stream to select highest layer of equal dimensions (#1841)
  • Return 404 with DeleteRoom/RemoveParticipant when deleting non-existent resources (#1860)

v1.4.3

04 Jun 16:45
7e5a7ae
Compare
Choose a tag to compare

Added

  • Send quality stats to prometheus. (#1708)
  • Support for disabling publishing codec on specific devices (#1728)
  • Add support for bypass_transcoding field in ingress (#1741)
  • Include await_start_signal for Web Egress (#1759)

Fixed

  • Handle time stamp increment across mute for A/V sync (#1705)
  • Additional A/V sync improvements (#1712 #1724 #1737 #1738 #1764)
  • Check egress status on UpdateStream failure (#1716)
  • Start signal relay sessions with the correct node (#1721)
  • Fix unwrap for out-of-order packet (#1729)
  • Fix dynacast for svc codec (#1742 #1743)
  • Ignore receiver reports that have a sequence number before first packet (#1745)
  • Fix node stats updates on Windows (#1748)
  • Avoid reconnect loop for unsupported downtrack (#1754)
  • Perform unsubscribe in parallel to avoid blocking (#1760)

Changed

  • Make signal close async. (#1711 #1722)
  • Don't add nack if it is already present in track codec (#1714)
  • Tweaked connection quality algorithm to be less sensitive to jitter (#1719)
  • Adjust sender report time stamp for slow publishers (#1740)
  • Split probe controller from StreamAllocator (#1751)

v1.4.2

10 May 07:03
c254e57
Compare
Choose a tag to compare

1.4.2 introduces support for VP9 and AV1 in SVC mode. They are currently not enabled by default. To enable them, add the following to enabled_codecs

  - mime: video/vp9
  - mime: video/av1

Added

  • VP9 codec with SVC support (#1586)
  • Support for source-specific permissions and client-initiated metadata updates (#1590)
  • Batch support for signal relay (#1593 #1596)
  • Support for simulating subscriber bandwidth (#1609)
  • Support for subscription limits (#1629)
  • Send Room updates when participant counts change (#1647)

Fixed

  • Fixed process return code to 0 (#1589)
  • Fixed VP9 stutter when not using dependency descriptors (#1595)
  • Fixed stutter when using dependency descriptors (#1600)
  • Fixed Redis cluster support when using Egress or Ingress (#1606)
  • Fixed simulcast parsing error for slower clients (camera and screenshare) (#1621)
  • Don't close RTCP reader if Downtrack will be resumed (#1632)
  • Restore VP8 munger state properly. (#1634)
  • Fixed incorrect node routing when using signal relay (#1645)
  • Do not send hidden participants to others after resume (#1689)
  • Fix for potential webhook delivery delays (#1690)

Changed

  • Refactored video layer selector (#1588 #1591 #1592)
  • Improved transport fallback when client is resuming (#1597)
  • Improved webhook reliability with delivery retries (#1607 #1615)
  • Congestion controller improvements (#1614 #1616 #1617 #1623 #1628 #1631 #1652)
  • Reduced memory usage by releasing ParticipantInfo after JoinResponse is transmitted (#1619)
  • Ensure safe access in sequencer (#1625)
  • Run quality scorer when there are no streams. (#1633)
  • Participant version is only incremented after updates (#1646)
  • Connection quality attribution improvements (#1653 #1664)
  • Remove disallowed subscriptions on close. (#1668)
  • A/V sync improvements (#1681 #1684 #1687 #1693 #1695 #1696 #1698 #1704)
  • RTCP sender reports every three seconds. (#1692)

Removed

  • Remove deprecated (non-psrpc) egress client (#1701)