Skip to content

Make iOS simulator interactive bitrate an optional cap, uncapped by default - #11

Merged
jkelleyrtp merged 1 commit into
mainfrom
devin/1787619413-uncapped-sim-bitrate
Aug 25, 2026
Merged

Make iOS simulator interactive bitrate an optional cap, uncapped by default#11
jkelleyrtp merged 1 commit into
mainfrom
devin/1787619413-uncapped-sim-bitrate

Conversation

@jkelleyrtp

Copy link
Copy Markdown
Member

Summary

Tuning::Interactive { bitrate: None } no longer sets any rate-control property: the 0.15 bpp derivation (TARGET_BITS_PER_PIXEL, resolved_bitrate) is gone, and an explicit Some(bps) remains an optional AverageBitRate cap. Low-latency rate control, RealTime, AllowFrameReordering=false, MaxFrameDelayCount=0, profile and keyframe settings are unchanged.

The tuning-to-property translation is now a single seam, unit-tested:

fn rate_control(tuning: Tuning) -> RateControl {
    Interactive { bitrate: None }    => RateControl::Uncapped,        // no property set
    Interactive { bitrate: Some(b) } => RateControl::AverageBitRate(b),
    Recording { quality }            => RateControl::Quality(quality.clamp(0.0, 1.0)),
}

Stats gain an additive target_bitrate: Option<u32> (iOS StatsReport → serve-layer StatsReport/api/stats): None means uncapped, Some an active cap. Android maps None. CLI --bitrate help and Tuning docs updated.

Measurements

1206x2622 device encoding at 588x1280, screen fully covered by CSS animation, 25 s windows, no subscribers:

config Mbps bpp mean frame fps
uncapped (low latency) 0.37–0.48 0.029–0.030 2.7 KB 16–23
6 Mbps (low latency) 5.84 0.1302 12.0 KB 59.6
24 Mbps (low latency) 8.80 0.1965 18.1 KB 59.5
uncapped, low latency OFF (experiment only, not shipped) 4.37 0.2272 20.9 KB 25.6

Session creation succeeds without AverageBitRate, but with low-latency rate control the encoder picks an internal budget under 0.5 Mbps and drops most frames staying inside it — the capped runs sustained ~60 fps on the same stimulus. Recorded in .devin/skills/ios-simulator-video/SKILL.md. This PR ships the spec as requested (uncapped default, low-latency behaviour untouched); whether the default should change in light of these numbers is left as a follow-up decision.

Checks

cargo fmt, cargo build --workspace, cargo clippy --workspace --all-targets (only pre-existing warnings), cargo test --workspace --lib, cargo test -p accessibility-cli --test cli_smoke — all green.

Link to Devin session: https://dioxus.staging.devinenterprise.com/sessions/50a3e0f756984f20a1779e22d438ce96
Open in Devin Desktop: https://dioxus.staging.devinenterprise.com/desktop/session/50a3e0f756984f20a1779e22d438ce96?variant=devin-insiders
Requested by: @jkelleyrtp

@staging-devin-ai-integration

Copy link
Copy Markdown
Contributor

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR that start with 'DevinAI' or '@devin'.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment, CI, and merge conflict monitoring

@jkelleyrtp
jkelleyrtp merged commit 387f7a2 into main Aug 25, 2026
14 checks passed
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