Files
effectcraft/crates
tylerjenningsw e519f21f45 Preview: the start with sound waits only for frames it can get (#947)
The start held the first frame until `ahead.min(fit)` frames were cached,
which could never happen in two cases, holding it for ever:
- the prefetch requests offsets 0..min(ahead * 3, fit - 1) from the
  playhead, one frame fewer than that when the RAM preview limits it, and
  with the playhead held nothing else requested the last one;
- `fit` counts comp-sized frames, but Extended Viewer frames render
  larger, so fewer of them fit in the budget than it needs at once.

It now waits for startup_frames(ahead, window, budget, frame bytes):
ahead, no more than the prefetch window requests, and no more than fit
in the budget at the size the first frame really rendered at, at least
the current frame.

Tests: startup_frames unit cases (a 4-frame budget needs 3; a 160×120
comp's 320×248 Extended Viewer frames need 2); ui_audio_scrub starts from
a cold cache with budgets of 2, 3, 4, ahead - 1, ahead and ahead + 1
frames, with and without a device, and with Extended Viewer frames larger
than the comp: each leaves its startup, from frame 0 (both hold the first
frame for ever on the previous commit). Also: a device whose start fails
plays the picture; a device that consumes the sound moves the picture on
and a stall still stops it; the 30 s preview starts without caching the
whole work area; Stop after a step of preparation never opens the output.
2026-10-12 22:39:25 -04:00
..
…
…
…
…
…
…
…
…
…