4 Commits

Author SHA1 Message Date
Jonathan Thomas 1e78d24c10 Removing unused start/end attributes on ReaderBase, turned out to be unnecessary. 2026-03-09 16:05:13 -05:00
Jonathan Thomas 579d38e20b - Unified mask trim on canonical start / end.
- Kept legacy mask_start / mask_end JSON loading.
- Fixed global mask start being applied twice.
- Defaulted mask timing to Source FPS.
- Made mask readers honor split-file reader start / end.
- Added tests for all of the above.
2026-03-09 14:03:54 -05:00
Jonathan Thomas 00f82c239f More improvements to EffectBase support of masks (allowing all effects to use animated masks better).
- Mask: Start/End (seconds) picks the exact part of a mask video to use.
  - Time Mode: Timeline follows project timing; Source FPS follows mask file timing.
  - Loop mode then defines playback behavior: Play Once, Repeat, or Ping-Pong.
2026-02-24 23:41:32 -06:00
Jonathan Thomas 1ad401c66d - Added a new common mask_reader feature at EffectBase, so all video effects can be mask-limited automatically (audio effects ignore it).
- Added optional Mask Mode overrides for Blur, Saturation, Brightness, Hue, Pixelate, and Sharpen (Limit to Mask, Vary Strength).
- Kept unified mask property naming (mask_reader) with legacy JSON compatibility where needed.
- Added/updated unit tests for base mask behavior, per-effect mode behavior, and JSON round-trips.
- Fixed profile tests to write generated files into the build/test directory instead of the source examples/ folder.
2026-02-23 00:00:33 -06:00