mirror of
https://github.com/storytold/filmcraft.git
synced 2026-11-07 14:33:04 +00:00
Every source keeps up to 384 MiB of decoded frames plus its live decoders for the whole session, and the 1 GiB process budget only trims caches that were idle while another cache asks for frames. The 8/16-bit plane shelves (192 MiB each) were never trimmed. A long-lived process (MCP) therefore held 2-3 GiB after an export and ran out of memory on the second one. Add filmcraft_codecs::release_idle(), which empties every cache nobody is decoding on (try-locked, so users are untouched), and filmcraft_frame::pool::trim_planes(). A standalone export calls both next to trim_f32 when its pipeline drops; parts of a batch keep them.