Releases: syrnike13/client-sdk-cpp
Release list
v1.10.0-syrnike.15
Fixes Room subscription events sending redundant subscription commands back to Rust. TrackSubscribed and TrackUnsubscribed now update the publication state locally and deliver the delegate event without overwriting a newer application request.
The regression dispatches 100 subscribe/unsubscribe event pairs through the real FFI callback entry point. All 34 targeted Room/publication tests pass. SDK CI and release builds passed on Windows x64, macOS x64/arm64, and Ubuntu 22.04/24.04 x64/arm64.
The consuming application's integration run with app b3fa3ecf and source-equivalent SDK d966cee passed 100 renderer reloads, 100 crashes, and 100 withheld texture-release cycles. Incoming video recovered and all four outgoing publications retained their identities. This does not conclusively attribute the earlier intermittent incoming-video stall to this defect; full application qualification remains tracked separately.
Source: 0906793ff806dafc7e8de4a5761db8838712777e on native-v2.
Windows x64 archive SHA-256: 0591cb265e0eea037c05614f7c972c832a64194059e006b437660605d3646cf3 (download verified).
Documentation builds and validates successfully. The separate post-release upload to the upstream S3 documentation site failed because this fork has no AWS credentials; it does not affect the release archives.
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.
v1.10.0-syrnike.13
Adds an exclusively owned fixed-frame microphone DSP API for 48 kHz mono PCM16 in 10 ms frames, with independent echo cancellation and noise suppression. Processor creation prewarms both paths; frame processing uses fixed buffers and bypasses the protobuf FFI allocation path. The existing APM API remains available.
The API has no realtime reset operation. A new renderer timeline requires a newly prepared processor. Missing echo reference bypasses AEC while noise suppression remains available.
Validation: cross-platform SDK CI passed on Windows x64, macOS x64/arm64, and Ubuntu 22.04/24.04 x64/arm64. Windows synthetic application measurements recorded 40.6 dB ERLE, 13.8 dB independent noise suppression, and zero observed steady-state SDK/UCRT heap calls. These measurements do not constitute physical-room or double-talk qualification.
Source: 55d7ea89843aa2776b54ca83b0a19c6f08de2f5b on native-v2.
v1.10.0-syrnike.12
Enables WebRTC keyframe queue flushing in the zero-playout-delay factory. A new keyframe supersedes queued dependent video and RTX packets for that stream while preserving an already-paced keyframe, audio and unrelated stream queues. Capture cadence and encoder/source/publication identity are unchanged; the default factory and public ABI are unchanged.
Source: cd0e8b09b097af0f078853781991638a18345d37 (PR #8).
Validation: all seven platform builds and test jobs, coverage, clang checks, release bundles and documentation generation passed. The first Intel macOS integration attempt hit the same DataTrack timeout observed on the previous SDK source; the second attempt failed downloading protobuf with HTTP 504. The third attempt passed on the same source with unchanged tests and limits. Application-level screen-stream qualification for Syrnike #139 is separate.
Windows x64 archive SHA-256: 121368ec9a5e8813617d965179d02970295f94b4148c9f678e6b718f4330707a.
v1.10.0-syrnike.9
Fix native session shutdown retaining negotiation tasks after Room disconnect.
Pending and running negotiation work is cancelled and joined before closing the session transports. This prevents closed sessions from retaining factory threads during the answer timeout. Public SDK APIs and sender/encoder ownership are unchanged.
Validation: SDK CI passed on the identical merged source tree; all seven release build jobs passed. Two exact-source Rust cancellation tests passed. The Windows release DLLs passed 50 lifecycle/cancellation cycles against the project SFU with zero additional handles, threads, or pending callbacks. All 53 Windows archive files match that tested CI bundle.
Source commit: 049ec1b977365dfe18e0a80342a39be33f020bb1.
Windows ZIP SHA-256: 1de6b41344890bc3476d11472f11e57927c4f7ee8c1baee0a3b914c7b7236a8f.
See #5.
v1.10.0-syrnike.8
Native media SDK prerequisite for syrnike13/syrnike13-app#126.
Fix UDP socket retention during continual ICE failed-network regathering. Each new allocator session uses port-owned sockets, so pruning a port releases its socket while preserving the normal connection-context lifetime, eligible networks, continual gathering, and UDP/STUN/TURN support. The public SDK API is unchanged.
The deterministic reproduction against the pinned WebRTC archive retained four handles per regather with shared sockets (149 to 181 across eight cycles); port-owned sockets remained at 143 in every sample. Both controls drained. Reproduction source and archive provenance are in docs/ice-socket-retirement.md.
This release retains the pre-encoded reference continuity fix from 1.10.0-syrnike.7. It also isolates the shutdown test's synthetic event from unrelated asynchronous events and uses authenticated official Linux CLI downloads in CI.
Application hardware and secure-desktop acceptance are tracked separately in syrnike13/syrnike13-app#126. Publishing this SDK does not declare Phase C complete.
v1.10.0-syrnike.11
Restores the trusted-rate-controller contract for preencoded video. Callers must apply bounded backpressure before encoding; the SDK retains bitrate-allocation feedback and the encoded reference-continuity guard. WebRTC no longer independently drops already encoded references through its bitrate frame dropper.
Source: 59c074b2397d71ed45db7749af275cf291c2a36c (PR #7). No public ABI changes.
Validation: the complete CI matrix passed, including all 367 unit tests and integration tests; all seven release platforms and documentation generation passed. The first macOS x64 integration job timed out in the unrelated DataTrack test; its full rerun passed. Application-level screen-stream qualification for Syrnike #139 is separate from these SDK checks.
Windows x64 archive SHA-256: 4e1a6024f75eeb42b61ac512b34a454a539ba6509906de89fe20ee89dce21ef5.
v1.10.0-syrnike.10
fix(video): expose preencoded bitrate allocation and retain backpress…
v1.10.0-syrnike.7
Fix pre-encoded H.264 reference continuity when WebRTC drops an input before the pass-through encoder. Each encoder detects missing references, requests a keyframe and suppresses dependent frames until a fresh keyframe arrives. Source replacement resets the private, constant-size state.
Required by Windows Media Engine backend selection #126. Implementation and validation: SDK PR #3.
Provenance: upstream C++ base 336d14e17d9432acce89e4c0d57078bbfbb23026; Rust base 1a477bc422c6890537b3bcdb017f0ac094d49661; normalized patched Rust tree 8f653241fab0416c9c0a2da37398d90bc25790a3; release commit 6c2137e490c855f1678223d60466f03d49cb21db.
The complete platform CI passed on the same tree as the release commit. Independent project-SFU observer tests verified decoding through WGC, DXGI, GPU contention and 30 capture-backend switches without invalid markers or Room reconnects. Full application #126 acceptance remains separate: process-resource qualification and an actual secure-desktop transition are still pending. Archives cover Windows x64, macOS x64/ARM64, and Ubuntu 22.04/24.04 x64/ARM64; legacy Linux archive aliases are retained.
v1.10.0-syrnike.6
Native screen-audio ingress deadline fix for syrnike13-app #125.
AudioSource::captureFrame now reports an expired callback deadline with std::system_error(std::errc::timed_out) instead of returning apparent success. Negative deadlines are rejected before frame admission. A timeout does not cancel native processing; callers must retire the affected ingress owner.
Validation: four AudioSource tests, 100 consecutive timeout regressions, shared C++ formatting/static analysis, and successful release builds on all seven platform configurations. The Windows release archive also passed the real screen-audio system-exclusion observer path with incoming reference voice played inside the excluded client process.
Windows x64 archive SHA256: 37f50cb0b795c33f33b85cbf48d566053e07651c44346fdd3cc0c2a59955f927.