mirror of
https://github.com/livekit/livekit.git
synced 2026-11-12 20:49:07 +00:00
* sfu: ignore a nil publisher sender report in the forwarder A stream restart replaces the receiver stats between the sender report callback and its read, so the report can be nil. SetRefSenderReport now keeps the previous report instead of reading the nil one. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * dynacast: skip a codec regression when the target codec has no quality HandleCodecRegression looked up the target codec after it released the lock. If the manager closed in between, or the target mime type was unknown, the lookup returned nil and RegressTo called Restart or Replace on it. The target is now looked up with the source, and a missing one stops the regression. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * service: create the internal record for a stored room that has none RedisStore.LoadRoom returns a nil RoomInternal without an error when the room exists but its internal field does not, for example after a delete races a store. CreateRoom then wrote egress, agent, playout delay or sync settings into the nil record. It now starts from an empty record, which the store call writes back. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * sfu: drop a dependency descriptor whose chains do not match the structure The parser takes a new structure from any packet, but DDForwarder keeps the structure of the last packet it forwarded. When the publisher attached a structure with fewer chains to a packet this downtrack dropped, the next descriptor had fewer chain diffs than the forwarder's structure, and the writer indexed past them. The forwarder now drops such a packet, and the writer returns an error instead of indexing past the chain diffs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * deps: bump mediatransportutil for the empty VP9 payload fix A VP9 packet without a dependency descriptor and with a 1-byte payload such as 0x08 parses to an empty VP9 payload, and IsVP9KeyFrame read its first byte. mediatransportutil#106 returns false for an empty payload. This pins the transport-v4 commit that carries it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * sfu: keep the template test comment with its test Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * dynacast: create the target quality only for a valid regression A target quality starts a timer that notifies the publisher. Look it up only after the source codec is found, so a rejected regression creates nothing. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * service: restore the internal defaults for a room that lost them A stored room without an internal record now gets the configured playout delay and sync streams defaults. Its own settings, such as the empty timeout and codecs, stay as stored. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>