From bca63cd9ff6db0384521178c5a0be15b3a13f641 Mon Sep 17 00:00:00 2001 From: enricobuehler Date: Fri, 7 Aug 2026 17:48:54 +0200 Subject: [PATCH] docs(client/video): name the upstream rav1d issue next to the workaround MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit memorysafety/rav1d#1497, filed with the one-line fix and a reproducer that needs no capture — any AV1 stream with one temporal unit removed. Written down where the setting is, because the next person to read `av1_settings` and wonder whether the floor is still needed should be able to check rather than re-derive it. --- crates/pf-client-core/src/video_software.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/crates/pf-client-core/src/video_software.rs b/crates/pf-client-core/src/video_software.rs index c1b1f88f..bd37a6dc 100644 --- a/crates/pf-client-core/src/video_software.rs +++ b/crates/pf-client-core/src/video_software.rs @@ -532,6 +532,12 @@ fn av1_settings() -> Dav1dSettings { // // The frame of latency this would normally cost is bought back in `decode`, which // drains the in-flight frame in the same call instead of pipelining it — see there. + // + // Reported upstream as memorysafety/rav1d#1497, with the one-line fix + // (`is_some_and` for the `unwrap`) and a reproducer that needs no capture: any AV1 + // stream with one temporal unit removed from the middle. If a release ever carries + // that fix, THIS floor is still the right default — it is what makes a decoder error + // an error — but the `bail!` in `Av1Software::new` could then relax. settings.max_frame_delay = AV1_MIN_FRAME_CONTEXTS; // `n_threads` drives the INTRA-frame tile/row workers, which add no delay, and now also // floors `n_fc`. Capped at 8 — this is the rung reached because the GPU already failed,