effectcraft/crates
bflatastic 09a5dc357a Audio: a FLAC opens once and off the UI thread; conforming is bounded (#408)
The freeze and quit during a FLAC preview did not reproduce on current
main (Windows 11): a 4-minute stereo and a 10-minute 24-bit 6-channel
96 kHz FLAC played through a RAM preview with a real-time audio pull,
after trimming and zooming, with no stall, no growing queue and memory
bounded by the RAM preview budget; 150 cpal output start/stop cycles
ran clean. Three defects in that path were found and fixed:

- FilmCraft decodes FLAC, MP3, Ogg and AIFF files whole when they are
  opened (8 s and 1.4 GB for the 10-minute 6-channel file). MediaPool
  opened a file outside its lock, so every caller asking before the
  first open finished decoded the whole file too: a preview's frame
  workers, audio feeder, conform and waveform threads at once (8 reads
  at once: 8 decodes). Each path now opens once; the others wait for it.
- AudioPlayback::start mixed its first 50 ms on the calling (UI)
  thread, so the first read of such a file froze the UI for the whole
  decode (audio-only previews start the sound right away). All mixing
  is on the feeder thread now; the device plays silence until the first
  block arrives, and the clock (frames actually played) waits for it.
- Conforming (Settings > Disk > Conformed Audio Folder, on by default)
  held the whole conformed track in memory before writing it, sized by
  the footage duration from the file's header: a header claiming a
  month of audio aborted the app on a failed 995 GB allocation. The
  conformed file is now written a chunk at a time, and footage longer
  than 24 hours is read from its decoder instead of conformed.

Tests: media concurrent_first_reads_open_a_file_once (8 threads: 8
opens before, 1 now; PoolStats::opened), pool
a_header_claiming_a_month_of_audio_is_not_conformed (aborted before),
ui-egui audio starting_audio_does_not_wait_for_slow_footage (start took
the footage's 2 s before), conformed_flac_audio_reads_back_like_the_
decoder, and the robustness test flac_audio_of_any_shape_reads_in_
device_blocks (2 minutes of 24-bit 6-channel 96 kHz, mono 8 kHz,
11.025 kHz, 192 kHz and 8-channel FLAC read in 1024-frame blocks at
48 kHz through and past the end: level, silence after the end, opened
once). FLAC fixtures come from ffmpeg (skipped without it).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 00:53:21 +07:00
..
automation Text: text layers are always rasterised at their on-screen scale (#390) 2026-10-09 23:17:32 +07:00
av1enc G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
color G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
effects Effects: CC Particle World follows the comp camera (#397) 2026-10-10 00:35:25 +07:00
engine Effects: OCIO custom configs read Blender's v2 transforms and warn (#410) 2026-10-09 23:57:12 +07:00
export Export: a Render Queue job renders every frame on the project's renderer (#414) 2026-10-09 22:26:17 +07:00
expr Merge pull request #6 from storybored379/pr/expr-runtime-stack-leak 2026-10-05 12:10:53 +07:00
geom Never crash: deny panic lints in the already-clean crates and apps 2026-10-04 14:52:39 -04:00
gpu Effects: CC Particle World follows the comp camera (#397) 2026-10-10 00:35:25 +07:00
hevcenc Untrack crates/hevcenc/target (36 MB of build output) and ignore nested target/ 2026-10-06 15:02:20 -04:00
host Effects: EXtractoR picks layers and channels of multi-layer EXRs (#295) 2026-10-09 17:32:09 +07:00
interchange Never crash: reject timeline documents nested too deeply 2026-10-04 14:05:57 -04:00
keyframe Plug-ins: Ease Presets moves out of core into a bundled ScriptUI panel 2026-10-09 21:03:12 +07:00
lottie G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
media Audio: a FLAC opens once and off the UI thread; conforming is bounded (#408) 2026-10-10 00:53:21 +07:00
model G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
opusenc G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
path G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
pdf G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
plugin G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
project Import: Interpret Footage ▸ Preserve RGB keeps the file's values (#411) 2026-10-09 23:57:12 +07:00
psd G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
raster Effects: EXtractoR picks layers and channels of multi-layer EXRs (#295) 2026-10-09 17:32:09 +07:00
render Effects: CC Particle World follows the comp camera (#397) 2026-10-10 00:35:25 +07:00
script Plug-ins: Ease Presets moves out of core into a bundled ScriptUI panel 2026-10-09 21:03:12 +07:00
segment Merge pull request #374 from storytold/fix/368-tflite-budgets 2026-10-09 09:25:24 -04:00
svg G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
text UI: Arabic, Hebrew, Indic and Thai names can be typed and are drawn (#394) 2026-10-10 00:53:21 +07:00
time Never crash: Tick and timecode arithmetic can't overflow or divide by zero 2026-10-04 14:20:33 -04:00
track G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
ui-egui Audio: a FLAC opens once and off the UI thread; conforming is bounded (#408) 2026-10-10 00:53:21 +07:00
vp9enc VP9: frames never end in a byte that reads as a superframe marker (#161) 2026-10-07 14:15:33 +07:00