From 8f0e46516de8e5cf7ea419c2dcd5488e84db2f7e Mon Sep 17 00:00:00 2001 From: vladmandic Date: Wed, 28 Jan 2026 09:47:17 +0100 Subject: [PATCH] fix framepack video save Signed-off-by: vladmandic --- CHANGELOG.md | 1 + modules/framepack/framepack_worker.py | 40 +++++++++++++++++++-------- modules/res4lyf/__init__.py | 14 +++++++++- modules/res4lyf/variants.py | 19 ++++++++++++- 4 files changed, 61 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5adb509b6..f46ee4d60 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -40,6 +40,7 @@ - use base steps as-is for non sd/sdxl models - ui css fixes for modernui - support lora inside prompt selector + - framepack video save ## Update for 2026-01-22 diff --git a/modules/framepack/framepack_worker.py b/modules/framepack/framepack_worker.py index 6558c0765..345333ad9 100644 --- a/modules/framepack/framepack_worker.py +++ b/modules/framepack/framepack_worker.py @@ -309,16 +309,18 @@ def worker( break total_generated_frames, _video_filename = save_video( - None, - history_pixels, - mp4_fps, - mp4_codec, - mp4_opt, - mp4_ext, - mp4_sf, - mp4_video, - mp4_frames, - mp4_interpolate, + p=None, + pixels=history_pixels, + audio=None, + binary=None, + mp4_fps=mp4_fps, + mp4_codec=mp4_codec, + mp4_opt=mp4_opt, + mp4_ext=mp4_ext, + mp4_sf=mp4_sf, + mp4_video=mp4_video, + mp4_frames=mp4_frames, + mp4_interpolate=mp4_interpolate, pbar=pbar, stream=stream, metadata=metadata, @@ -327,7 +329,23 @@ def worker( except AssertionError: shared.log.info('FramePack: interrupted') if shared.opts.keep_incomplete: - save_video(None, history_pixels, mp4_fps, mp4_codec, mp4_opt, mp4_ext, mp4_sf, mp4_video, mp4_frames, mp4_interpolate=0, stream=stream, metadata=metadata) + save_video( + p=None, + pixels=history_pixels, + audio=None, + binary=None, + mp4_fps=mp4_fps, + mp4_codec=mp4_codec, + mp4_opt=mp4_opt, + mp4_ext=mp4_ext, + mp4_sf=mp4_sf, + mp4_video=mp4_video, + mp4_frames=mp4_frames, + mp4_interpolate=0, + pbar=pbar, + stream=stream, + metadata=metadata, + ) except Exception as e: shared.log.error(f'FramePack: {e}') errors.display(e, 'FramePack') diff --git a/modules/res4lyf/__init__.py b/modules/res4lyf/__init__.py index 0d007ab59..1dc6d2fe8 100644 --- a/modules/res4lyf/__init__.py +++ b/modules/res4lyf/__init__.py @@ -1,6 +1,7 @@ from .abnorsett_scheduler import ABNorsettScheduler from .bong_tangent_scheduler import BongTangentScheduler from .common_sigma_scheduler import CommonSigmaScheduler +from .deis_scheduler_alt import DEISMultistepScheduler from .etdrk_scheduler import ETDRKScheduler from .langevin_dynamics_scheduler import LangevinDynamicsScheduler from .lawson_scheduler import LawsonScheduler @@ -58,15 +59,19 @@ from .variants import ( SineSigmaScheduler, SmoothstepSigmaScheduler, SphericalFlowScheduler, + DEIS1MultistepScheduler, + DEIS2MultistepScheduler, + DEIS3MultistepScheduler, ) -__all__ = [ +__all__ = [ # noqa: RUF022 # Base "RESUnifiedScheduler", "RESMultistepScheduler", "RESMultistepSDEScheduler", "RESSinglestepScheduler", "RESSinglestepSDEScheduler", + "DEISMultistepScheduler", "ETDRKScheduler", "LawsonScheduler", "ABNorsettScheduler", @@ -122,6 +127,9 @@ __all__ = [ "RESU3SScheduler", "RESU5SScheduler", "RESU6SScheduler", + "DEIS1MultistepScheduler", + "DEIS2MultistepScheduler", + "DEIS3MultistepScheduler", ] BASE = [ @@ -130,6 +138,7 @@ BASE = [ ("RES Multistep SDE", RESMultistepSDEScheduler), ("RES Singlestep", RESSinglestepScheduler), ("RES Singlestep SDE", RESSinglestepSDEScheduler), + ("DEIS Multistep", DEISMultistepScheduler), ("ETDRK", ETDRKScheduler), ("Lawson", LawsonScheduler), ("ABNorsett", ABNorsettScheduler), @@ -190,4 +199,7 @@ VARIANTS = [ ("RES-U 3S", RESU3SScheduler), ("RES-U 5S", RESU5SScheduler), ("RES-U 6S", RESU6SScheduler), + ("DEIS 1 Multistep", DEIS1MultistepScheduler), + ("DEIS 2 Multistep", DEIS2MultistepScheduler), + ("DEIS 3 Multistep", DEIS3MultistepScheduler), ] diff --git a/modules/res4lyf/variants.py b/modules/res4lyf/variants.py index 04e5257b1..ae8eea771 100644 --- a/modules/res4lyf/variants.py +++ b/modules/res4lyf/variants.py @@ -3,6 +3,7 @@ from .common_sigma_scheduler import CommonSigmaScheduler from .etdrk_scheduler import ETDRKScheduler from .lawson_scheduler import LawsonScheduler from .pec_scheduler import PECScheduler +from .deis_scheduler_alt import DEISMultistepScheduler from .res_multistep_scheduler import RESMultistepScheduler from .res_multistep_sde_scheduler import RESMultistepSDEScheduler from .res_singlestep_scheduler import RESSinglestepScheduler @@ -244,7 +245,7 @@ class PEC2H3SScheduler(PECScheduler): # Riemannian Flow Variants class EuclideanFlowScheduler(RiemannianFlowScheduler): def __init__(self, **kwargs): - kwargs["metric_type"] = "RiemannianFlowScheduler" + kwargs["metric_type"] = "euclidean" super().__init__(**kwargs) @@ -295,3 +296,19 @@ class SmoothstepSigmaScheduler(CommonSigmaScheduler): def __init__(self, **kwargs): kwargs["profile"] = "smoothstep" super().__init__(**kwargs) + +## DEIS Multistep Variants +class DEIS1MultistepScheduler(DEISMultistepScheduler): + def __init__(self, **kwargs): + kwargs["order"] = "1" + super().__init__(**kwargs) + +class DEIS2MultistepScheduler(DEISMultistepScheduler): + def __init__(self, **kwargs): + kwargs["order"] = "2" + super().__init__(**kwargs) + +class DEIS3MultistepScheduler(DEISMultistepScheduler): + def __init__(self, **kwargs): + kwargs["order"] = "3" + super().__init__(**kwargs)