You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: Sources/LiveKitNative/Core/ProductionReadiness.swift
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -32,7 +32,7 @@ public extension LiveKitNative {
32
32
"Fresh join, resume reconnect, disconnect, and failed signal-loop boundaries regenerate local ICE credentials, clear stale peer negotiation state, parse TURN UDP/TCP/TLS endpoint configuration, order TURN relay fallback candidates as UDP, TCP, then TLS while identifying the currently executable UDP datagram path, select supported TURN UDP relay session configurations from parsed ICE server endpoints with credentials, exercise TURN Allocate, Refresh, CreatePermission, and ChannelBind request/authentication/response-validation primitives with one-shot stale nonce retry, cover TURN ChannelData framing, provide deterministic allocation/permission maintenance scheduling and execution, plan relayed ICE candidates from TURN bindings, compose and execute a bounded TURN relay session setup plan over abstract transports, expose a ChannelData relay transport over an abstract media datagram transport, allocate default UDP TURN relay candidates through the bound Room ICE socket, use ChannelData relay bindings for relayed ICE checks and media datagrams, provide deterministic ICE consent freshness planning plus an injected Room startup loop, run ICEAgent connectivity checks through paced scheduling with queued triggered-check priority plus role-conflict role switching and pair-priority recompute, and rebuild reconnect SyncState SDP/trickle state with fresh local ICE credentials, but TCP/TLS TURN transport execution, LiveKit TURN-only validation, and live media recovery are not complete.",
33
33
"Publisher camera capture can encode H.264 through VideoToolbox with bounded frame backpressure/drop control and publisher microphone capture can encode Opus through AudioToolbox before RTP/SRTP send, while subscriber RTP can pass through jitter buffering, H.264/Opus packet assembly, NACK/PLI feedback, opt-in Opus decode-to-audio-playout scheduling, opt-in H.264 VideoToolbox decode-to-pixel-buffer scheduling, application-provided subscriber video renderer handoff, UIKit/AppKit VideoView sample-buffer rendering, and opt-in iOS voice-chat audio-session lifecycle configuration; real-device video display validation, LiveKit E2E media validation, route/interruption audio recovery, and production runtime pacing remain incomplete.",
34
34
"Production H.264 now uses real VideoToolbox encode output for publish smoke coverage, opt-in VideoToolbox decode output for subscribe smoke coverage, and UIKit/AppKit VideoView rendering for decoded frames, but production readiness still requires real-device display validation, hardware acceleration verification where the OS exposes that signal, and explicit fallback behavior instead of relying on a pure Swift codec implementation.",
35
-
"SCTP data channel support includes packet-level DCEP/DataPacket planning, manager-assigned stream routing, queued local publish flushing, inbound DataPacket-to-RoomEvent plumbing, publisher SDP data-channel negotiation, subscriber-side data-channel receive-loop plumbing, OpenSSL DTLS application-data transport coverage, default Room shared-media DTLS/SRTP demux binding, deterministic packet fragmentation/reassembly envelopes, fragmented-packet retransmission scheduling on the DTLS-backed packet transport, opt-in standards-shaped SCTP association bootstrap with DATA/SACK exchange, fragmented DATA reassembly, duplicate DATA TSN suppression, contiguous cumulative SACK tracking, recovery reset that reopens LiveKit data channels after association restart, and separately gated two-client LiveKit DataPacket publish/receive smoke over that standards-shaped association transport, but full standards-compliant SCTP association state, congestion control, promotion of live DataPacket coverage into the default integration gate, LiveKit-validated data-channel recovery, and E2E hardening are incomplete.",
35
+
"SCTP data channel support includes packet-level DCEP/DataPacket planning, manager-assigned stream routing, queued local publish flushing, inbound DataPacket-to-RoomEvent plumbing, publisher SDP data-channel negotiation, subscriber-side data-channel receive-loop plumbing, OpenSSL DTLS application-data transport coverage, default Room shared-media DTLS/SRTP demux binding, deterministic packet fragmentation/reassembly envelopes, fragmented-packet retransmission scheduling on the DTLS-backed packet transport, opt-in standards-shaped SCTP association bootstrap with DATA/SACK exchange, fragmented DATA reassembly, duplicate DATA TSN suppression, contiguous cumulative SACK tracking, recovery reset that reopens LiveKit data channels after association restart, and default-gated two-client LiveKit DataPacket publish/receive smoke over that standards-shaped association transport, but full standards-compliant SCTP association state, congestion control, LiveKit-validated data-channel recovery, and E2E hardening are incomplete.",
36
36
"Signal reconnect resets stale peer negotiation state, restarts local ICE credentials, rebuilds retained subscriber answer and publisher offer SDP with fresh ICE credentials, sends SyncState for retained subscription/local media/data publication state, re-sends local ICE trickle/final-trickle when media startup is configured, preserves publisher offer track state for later publish/unpublish re-offers, clears stale local media/data publication state for server/SFU unpublish responses, and resets injected publisher data channels for post-reconnect DCEP reopen in unit tests, but live media recovery and LiveKit integration hardening are incomplete.",
37
37
"General production video meetings require the new audio-session primitives to be validated with meeting-grade capture/playout, echo cancellation, route changes, Bluetooth behavior, interruptions, background/foreground handling, and timing on real iOS devices.",
38
38
"A default subscriber RTP receive pipeline now integrates jitter buffering with bounded NACK/PLI feedback, scheduled RTCP Receiver Reports with DLSR timing from observed RTP/Sender Report state, REMB bitrate-feedback packet planning/sending, deterministic RTCP receiver-report bandwidth estimation, adaptive video quality recommendations, publisher RTCP receiver-report ingestion, H.264 encoder bitrate/FPS recommendation application, manual subscriber quality preset signaling, opt-in automatic subscriber adaptive track-settings dispatch, publisher active video-layer UpdateVideoLayers signaling, single-layer H.264 AddTrack high-quality metadata, and camera publish frame backpressure primitives, but general production video meetings still require full packet-loss recovery, TWCC/full REMB interop or equivalent congestion control, default-on LiveKit-validated subscriber adaptation policy, complete encoder control policy, actual multi-encoder simulcast/SVC media production, and weak-network E2E validation.",
recovery, promotion of the separately gated live data-packet smoke into the
83
-
default integration gate, and E2E hardening remain open.
82
+
recovery, hardening the default-gated live data-packet smoke once standards SCTP
83
+
is fully complete, and E2E hardening remain open.
84
84
Server/SFU `TrackUnpublishedResponse` cleanup for local media publications also
85
85
clears local publication state and cached publisher offer reconnect state so
86
86
resume reconnects and later publisher offers do not replay removed media.
@@ -267,7 +267,9 @@ The old binary WebRTC dependency path has been removed from the package model.
267
267
- Release-readiness scripts:
268
268
-`scripts/check_release_readiness.sh`
269
269
-`scripts/check_release_size.sh`
270
-
- strict production mode through `REQUIRE_PRODUCTION_READY=1`
270
+
- strict production mode through `REQUIRE_PRODUCTION_READY=1`, with tests,
271
+
benchmarks, the size gate, Apple platform builds, and LiveKit integration
272
+
variables required
271
273
-`LocalParticipant` has local video publication state for camera tracks,
272
274
including idempotent `setCamera(enabled:)`, `publish(videoTrack:)`, and
273
275
`unpublish(publication:)` behavior.
@@ -892,8 +894,8 @@ The following checks passed after the latest implementation pass:
892
894
- 7 live tests skipped by opt-in guard without LiveKit environment variables
893
895
-`LIVEKIT_NATIVE_RUN_INTEGRATION=1 swift test --filter LiveMediaStartupIntegrationTests --jobs 1`
894
896
- 2 live OpenSSL DTLS-SRTP media startup tests passed against local LiveKit
895
-
-`LIVEKIT_NATIVE_RUN_INTEGRATION=1 LIVEKIT_NATIVE_RUN_DATA_TRACK_INTEGRATION=1 swift test --filter IntegrationOptInTests/testTwoLiveKitClientsPublishAndReceiveDataPacketOverStandardsSCTP --jobs 1`
896
-
-separately gated standards-shaped SCTP DataPacket live smoke passed against local LiveKit
897
+
-`LIVEKIT_NATIVE_RUN_INTEGRATION=1 swift test --filter IntegrationOptInTests/testTwoLiveKitClientsPublishAndReceiveDataPacketOverStandardsSCTP --jobs 1`
898
+
-default-gated standards-shaped SCTP DataPacket live smoke passed against local LiveKit
0 commit comments