feat: honor LTX-2 mode in re-export and auto-export
Mirror the manual export path: re-export and auto-export now read the active tab's LTX-2 params via _ltx2_export_params() and override short_side/duration plus thread target_fps/snap32/frames through to ExportWorker. Foley tabs return None and keep byte-identical behavior. For auto-export, params are captured at batch-build time so queued batches keep their own geometry. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -7288,6 +7288,16 @@ class MainWindow(QMainWindow):
|
|||||||
max_workers = min(self._spn_workers.value(), 3) if hw_on else self._spn_workers.value()
|
max_workers = min(self._spn_workers.value(), 3) if hw_on else self._spn_workers.value()
|
||||||
is_scan = getattr(self, '_auto_export_no_markers', False)
|
is_scan = getattr(self, '_auto_export_no_markers', False)
|
||||||
|
|
||||||
|
clip_duration = self._clip_dur
|
||||||
|
# LTX-2 mode (active tab) overrides length/resize and feeds the
|
||||||
|
# 25fps / ÷32-crop / exact-frames params through to ffmpeg. Foley
|
||||||
|
# tabs return None here and keep byte-identical behavior. Captured at
|
||||||
|
# batch-build time so queued batches keep their own geometry.
|
||||||
|
ltx2 = self._ltx2_export_params()
|
||||||
|
if ltx2 is not None:
|
||||||
|
short_side = ltx2["short_side"]
|
||||||
|
clip_duration = ltx2["duration"]
|
||||||
|
|
||||||
batch = {
|
batch = {
|
||||||
"jobs": jobs,
|
"jobs": jobs,
|
||||||
"positions": positions,
|
"positions": positions,
|
||||||
@@ -7296,13 +7306,16 @@ class MainWindow(QMainWindow):
|
|||||||
"image_sequence": image_sequence,
|
"image_sequence": image_sequence,
|
||||||
"max_workers": max_workers,
|
"max_workers": max_workers,
|
||||||
"encoder": encoder,
|
"encoder": encoder,
|
||||||
"clip_duration": self._clip_dur,
|
"clip_duration": clip_duration,
|
||||||
"spread": spread,
|
"spread": spread,
|
||||||
"folder": folder,
|
"folder": folder,
|
||||||
"format": fmt,
|
"format": fmt,
|
||||||
"profile": self._profile,
|
"profile": self._profile,
|
||||||
"is_scan": is_scan,
|
"is_scan": is_scan,
|
||||||
"replace_scan_exports": replace_scan_exports,
|
"replace_scan_exports": replace_scan_exports,
|
||||||
|
"target_fps": ltx2["target_fps"] if ltx2 else None,
|
||||||
|
"snap32": ltx2["snap32"] if ltx2 else False,
|
||||||
|
"frames": ltx2["frames"] if ltx2 else None,
|
||||||
}
|
}
|
||||||
|
|
||||||
if self._export_worker and self._export_worker.isRunning():
|
if self._export_worker and self._export_worker.isRunning():
|
||||||
@@ -7348,6 +7361,9 @@ class MainWindow(QMainWindow):
|
|||||||
max_workers=batch["max_workers"],
|
max_workers=batch["max_workers"],
|
||||||
encoder=batch["encoder"],
|
encoder=batch["encoder"],
|
||||||
duration=batch["clip_duration"],
|
duration=batch["clip_duration"],
|
||||||
|
target_fps=batch.get("target_fps"),
|
||||||
|
snap32=batch.get("snap32", False),
|
||||||
|
frames=batch.get("frames"),
|
||||||
)
|
)
|
||||||
self._export_worker.finished.connect(self._on_auto_clip_done)
|
self._export_worker.finished.connect(self._on_auto_clip_done)
|
||||||
self._export_worker.all_done.connect(self._on_auto_batch_done)
|
self._export_worker.all_done.connect(self._on_auto_batch_done)
|
||||||
@@ -7921,6 +7937,15 @@ class MainWindow(QMainWindow):
|
|||||||
encoder = self._hw_encoders[0] if hw_on else "libx264"
|
encoder = self._hw_encoders[0] if hw_on else "libx264"
|
||||||
max_workers = min(self._spn_workers.value(), 3) if hw_on else self._spn_workers.value()
|
max_workers = min(self._spn_workers.value(), 3) if hw_on else self._spn_workers.value()
|
||||||
clip_dur = self._clip_dur
|
clip_dur = self._clip_dur
|
||||||
|
|
||||||
|
# LTX-2 mode (active tab) overrides length/resize and feeds the
|
||||||
|
# 25fps / ÷32-crop / exact-frames params through to ffmpeg. Foley
|
||||||
|
# tabs return None here and keep byte-identical behavior.
|
||||||
|
ltx2 = self._ltx2_export_params()
|
||||||
|
if ltx2 is not None:
|
||||||
|
short_side = ltx2["short_side"]
|
||||||
|
clip_dur = ltx2["duration"]
|
||||||
|
|
||||||
self._export_spread = spread
|
self._export_spread = spread
|
||||||
self._export_clip_duration = clip_dur
|
self._export_clip_duration = clip_dur
|
||||||
self._export_folder = folder
|
self._export_folder = folder
|
||||||
@@ -7938,6 +7963,9 @@ class MainWindow(QMainWindow):
|
|||||||
max_workers=max_workers,
|
max_workers=max_workers,
|
||||||
encoder=encoder,
|
encoder=encoder,
|
||||||
duration=clip_dur,
|
duration=clip_dur,
|
||||||
|
target_fps=ltx2["target_fps"] if ltx2 else None,
|
||||||
|
snap32=ltx2["snap32"] if ltx2 else False,
|
||||||
|
frames=ltx2["frames"] if ltx2 else None,
|
||||||
)
|
)
|
||||||
self._export_worker.finished.connect(self._on_reexport_clip_done)
|
self._export_worker.finished.connect(self._on_reexport_clip_done)
|
||||||
self._export_worker.all_done.connect(self._on_reexport_batch_done)
|
self._export_worker.all_done.connect(self._on_reexport_batch_done)
|
||||||
|
|||||||
Reference in New Issue
Block a user