v1.10.0-syrnike.14
Adds FreshAudioStream, a native 48 kHz stereo/10 ms decoded audio ingress with four preallocated frames, oldest-frame eviction, non-waiting contention handling, and monotonic age preserved through conversion and the C++ bridge. Adds a bounded owning Room publication snapshot for manual subscribers joining after publication.
Fixes reused sender negotiation: a replacement publication could disappear during a later unrelated negotiation. The SDK now preserves libwebrtc's original sender identity in the local description and sends the current track identity only in the offer to the SFU. Transceiver reuse remains enabled.
Validation: SDK CI passed on Windows x64, macOS x64/arm64, and Ubuntu 22.04/24.04 x64/arm64. Local native tests cover queue overload, contention, 100,000 concurrent frames, injected callback age, sink lifetime, snapshot limits, and reused-sender negotiation. The consuming application's two-participant 30-minute development soak measured p95 scheduled age <=50 ms and maximum 56.911 ms, with bounded queues and no underruns.
The native format converter may initialize on format changes; this API does not claim all WebRTC internals are allocation-free. Stream construction, reads and destruction belong to one owner and must finish before Room/runtime teardown.
Source: ed1c398982a14d41706f62c88399f6f10bc78f73 on native-v2.