fix: crop keyframes and position apply to random portrait/square exports
Keyframes were skipped when ratio was None (random mode), and random crop was overwriting the resolved center with base_center. Now keyframes resolve the center for all jobs first, then random crop assigns the ratio while preserving the per-job center. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -2741,8 +2741,6 @@ class MainWindow(QMainWindow):
|
|||||||
# at or before its start time (keyframes set in lock mode).
|
# at or before its start time (keyframes set in lock mode).
|
||||||
if self._crop_keyframes:
|
if self._crop_keyframes:
|
||||||
for i, (s, o, r, c) in enumerate(jobs):
|
for i, (s, o, r, c) in enumerate(jobs):
|
||||||
if r is None:
|
|
||||||
continue # no crop → skip
|
|
||||||
center = base_center
|
center = base_center
|
||||||
for kt, kc in self._crop_keyframes:
|
for kt, kc in self._crop_keyframes:
|
||||||
if kt <= s + 0.05:
|
if kt <= s + 0.05:
|
||||||
@@ -2766,8 +2764,8 @@ class MainWindow(QMainWindow):
|
|||||||
else:
|
else:
|
||||||
ratios = ["1:1"]
|
ratios = ["1:1"]
|
||||||
for idx in indices:
|
for idx in indices:
|
||||||
s, o, _, _ = jobs[idx]
|
s, o, _, c = jobs[idx]
|
||||||
jobs[idx] = (s, o, random.choice(ratios), base_center)
|
jobs[idx] = (s, o, random.choice(ratios), c)
|
||||||
|
|
||||||
# Subject tracking: re-detect crop center per sub-clip.
|
# Subject tracking: re-detect crop center per sub-clip.
|
||||||
if self._chk_track.isChecked() and any(j[2] for j in jobs):
|
if self._chk_track.isChecked() and any(j[2] for j in jobs):
|
||||||
|
|||||||
Reference in New Issue
Block a user