Skip to content

Keyframeable mask geometry on a PIP layer (stroke-following local retouch) #44

Description

@renezander030

Tracks the feature requested in discussion #43 (beauty-ad local retouch that follows the product on the face).

Gap: mask writes static mask geometry and keyframe animates segment transform (position/scale/rotation/alpha/volume), but mask geometry itself is not keyframeable today.

Scope: mask geometry as keyframeable properties, via keyframe --batch:

  • mask position (x, y)
  • mask width and height
  • mask rotation
  • mask feather

Split out to follow-ups, so this issue stays one reviewable piece: the PIP duplicate helper is #77, the validation report is #78. Both get easier once the mask side is settled.

Acceptance criteria:

  • Mask geometry keyframes round-trip through write then read with no drift.
  • Interpolation between two mask keyframes is verified against what CapCut actually renders, not only against our own writer. This is the part with the unknowns in it: the interpolation curve and the property key names are what the issue turns on.
  • No change to existing keyframe behaviour for transform properties.
  • Durations stay on the frame grid, per docs/draft-schema/01-tracks-and-segments.md.
  • Test under test/, per CONTRIBUTING.md.

Notes: direct draft editing only (encrypted JianYing 6.0+ out of scope, already flagged by decrypt/version). The requester offered a sample draft, source video and screenshots in #43 but has not posted since 2026-07-03, so assume a self-built fixture. If bundles are shared here, generate them on v0.18.0 or later, which redacts device identifiers (#59).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions