Repository navigation
Restore mixer throughput without changing DSP output - #1978
skylartaylor wants to merge 2 commits into
Conversation
FredApps
left a comment
There was a problem hiding this comment.
I have not found a correctness problem, but I'm holding this as a comment for two reasons.
- The
MimeType=line inapps/filmcraft/src/dev_icon.rshas nothing to do with mixer speed. It is the same fix as #1958, which is open. Please drop it from this PR so the speed change stands alone. - The stated margin is thin and is measured in a different profile from the one CI uses. The text says the unchanged ">4x realtime" gate passes at 4.3x under the production thin-LTO, one codegen-unit build, while "CI/native GUI builds use LTO off and 16 codegen units". Does the gate test pass, and by how much, in the profile
cargo xtask ciand the pool use? If it fails or is within noise there, a 7% margin is not a stable gate.
What I did check: the reverb is split into process_block::<FIXED, SETTLED> variants (audio-dsp/src/effects/time.rs) and lines becomes an array, so the recursive arithmetic and the 32-sample gain-update schedule are untouched by construction, and the bit-for-bit checks against the original loop (mono, stereo, multichannel) are the right proof for a speed-only change. The measured number is a single production-profile run, one machine; please add the before figure, so the gain is visible.
Hosted CI does not build or test filmcraft, so I'm leaving this as a comment. I'll approve once the profile question is answered and the receipt for this exact head is in.
Validation request (head 8bc2f7df81afd5a25099217f9ce9b1b4584fb41a):
- os: linux
- commands:
cargo fmt --all -- --check;cargo clippy --workspace --all-targets --locked --offline -- -D warnings;cargo test -p filmcraft-audio-dsp --lib --locked --offline reverb;cargo test -p filmcraft-render --lib --locked --offline mixer_tests; the existing >4x realtime gate test in release mode (please name the test and command you used) - expected: all pass, 0 ignored; please report counts and the measured realtime factor of the gate in both profiles
- holds: the profile question; drop the
dev_icon.rshunk (#1958)
|
Thanks @FredApps, the MIME change was unrelated here. I've verified that it matches #1958 and removed it from this PR at cd45768, keeping the DSP changes intact. The local macOS checks pass: 8 reverb tests, 25 mixer tests and 3 automation-lane tests, with none ignored. I've corrected the benchmark command to use the mixer_perf integration test and documented explicit commands for both build profiles and the before/after comparison. The strict >4x gate is unchanged. The requested native Linux checks and repeated measurements in both profiles are still outstanding, so I'm not presenting the historical 4.3x result as current-head validation. Could you re-review the scope and benchmark instructions in the meantime? I appreciate you helping make the evidence clearer. |
Restore mixer throughput without changing DSP output. Constant EQ/dynamics/reverb chains process once per request, reverb uses separate settled/ramping loops, and scalar automation evaluates outer holds once per block. Recursive arithmetic, the 32-sample gain-update grid, boundaries and live-release behavior retain their existing correctness coverage.
Current head: cd45768. Base remains 9ed9650; this follow-up does not rebase the DSP work. Removed the unrelated dev_icon.rs MIME hunk after verifying it exactly matches the separate open PR #1958. The net diff is three DSP/mixer files plus docs/testing.md. No dependency or benchmark-threshold changes.
The testing docs correct the stale --lib benchmark command: perf_24_tracks_3_effects_realtime_factor is in the mixer_perf integration test. cargo xtask ci invokes release tests without setting profile overrides; checked-in release defaults are thin LTO and one codegen unit. The reported pool profile (LTO off, 16 codegen units) must be reproduced explicitly. The docs now give serial commands for both profiles, the before revision, and the required receipts. The unchanged release assertion remains strictly >4x. Thread CPU time limits scheduling noise but does not normalize CPU speed or thermal behavior, so one 4.3x result cannot establish a stable margin across hosts/profiles.
Exact-head local validation, macOS arm64, Rust/Cargo 1.99.1, one workload at a time with CARGO_BUILD_JOBS=1, cargo -j1 and --test-threads=1:
Historical only: the previous PR description reported Linux CI and one production-profile run at 4.3x (10 seconds rendered in 2.313 CPU seconds). These historical claims were not independently rerun here and do not qualify the current head.
Pending: native Linux formatting, requested strict locked/offline workspace Clippy, reverb/mixer correctness checks, and repeated before/after measurements of the unchanged release mixer gate in BOTH LTO-off/16-unit and thin-LTO/1-unit profiles on the same host/toolchain. No before measurement or new realtime factor is claimed. No supported Linux pool tool was exposed; no new SSH connection, VM/container or installation was used. Full workspace builds were prohibited by the user's resource restrictions. Physical audio/input and remaining package/platform qualification also remain pending. This PR is not yet claimed ready against the Linux review gate.
Summary by CodeRabbit