Skip to content

v2.29.1 - #1032

Open
davidliu wants to merge 1 commit into
mainfrom
changeset-release/main
Open

v2.29.1#1032
davidliu wants to merge 1 commit into
mainfrom
changeset-release/main

Conversation

@davidliu

@davidliu davidliu commented Sep 26, 2026 •

Copy link
Copy Markdown
Contributor

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

client-sdk-android@2.29.1

Patch Changes

  • Scale the x-google-start-bitrate hint by connection setup time: the 1 Mbps camera cap now applies to connections that set up within 1.5 s and ramps linearly down to 300 kbps at 3.5 s or slower, with screen share capped the same way once the cap is below 1 Mbps. - #1031 (@changt)

  • Seed the bandwidth estimator with x-google-start-bitrate for all video codecs, not just SVC, so published video reaches its target quality in the first second or two instead of ramping from ~300 kbps over 5-15 seconds. The hint is 90% of the track's target bitrate, capped at 1 Mbps for camera tracks (screen shares are exempt, since they are published at high bitrates for text legibility) and skipped below a 300 kbps target, where seeding high costs more than it gains. - #973 (@xianshijing-lk)

    Because libwebrtc applies these codec fmtp parameters to the whole peer connection rather than the m-section carrying them, the SDK now writes a single connection-level value to every video m-section, once per publisher connection. Re-seeding a converged estimator is avoided: the value persists in libwebrtc's bitrate configurator and is automatically re-applied on network route changes, and a full reconnect builds a new peer connection and seeds it again.

    Behavior change: the SDK no longer writes x-google-max-bitrate into SDP. That value was promoted to a ceiling on total send bandwidth for the entire connection, so a camera publication could throttle a concurrent screen share. Per-track and per-layer limits continue to be enforced through RtpParameters.Encoding.maxBitrateBps, which is correctly scoped per encoding. Applications that relied on the SDP value as a connection-wide cap should set encoding bitrates instead. This matches client-sdk-js and the Rust SDK, neither of which writes it.

    TrackBitrateInfo and TrackBitrateInfoKey are now internal. They were never intended as public API (both were @suppressed and only reachable through a @VisibleForTesting helper) and were public only to be visible from the test module, which is no longer necessary.

@github-actions

Copy link
Copy Markdown
Contributor

Diffuse output:

Base AAR cache miss. Please run the build job on main to generate the base AAR.

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no bugs or issues to report.

Devin Review

@github-actions
github-actions Bot force-pushed the changeset-release/main branch from 58aac09 to 268fc2a Compare September 27, 2026 21:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant