mirror of
https://github.com/storytold/deckcraft.git
synced 2026-10-26 11:36:58 -06:00
The film-grain header accepted scaling points whose values didn't strictly increase, and building the scaling lookup then divided by zero. In threaded decoding the panic left the frame's reference and picture slots unset, so the output and dependent frames waited forever. - The header rejects Y/Cb/Cr point values that don't strictly increase (spec 6.8.20). - The scaling lookup moves into scaling_lut, which skips a non-increasing pair and uses checked indexing (defence in depth). - run_job decodes inside guarded (catch_unwind), so a panic becomes an error published to the picture and reference slots. Co-authored-by: Cursor <cursoragent@cursor.com>