25
25
26
26
# New args, regex for npp, find: (ssii_video_hires)(?=,)
27
27
# replace: \1, ssii_add_last_frames, ssii_add_first_frames
28
+ # plus debug
28
29
29
30
orig_callback_state = KDiffusionSampler .callback_state
30
31
ui_config_backup = os .path .join (scripts .basedir (), "ui-config_backup.json" )
44
45
"ssii_add_last_frames" : "Display last image for additional frames at the end" ,
45
46
"ssii_smooth" : "Smoothing / Interpolate" ,
46
47
"ssii_seconds" : "Approx. how many seconds should the video run?" ,
48
+ "ssii_lores" : "lores" ,
49
+ "ssii_hires" : "hires" ,
47
50
"ssii_debug" : "Debug"
48
51
}
49
52
@@ -53,7 +56,7 @@ def ui_setting_set(ui_settings, key, value):
53
56
ui_settings [f"customscript/{ this_module } /img2img/{ key } /value" ] = value
54
57
return ui_settings
55
58
56
- def ssii_save_settings_do (ssii_is_active , ssii_final_save , ssii_intermediate_type , ssii_every_n , ssii_start_at_n , ssii_stop_at_n , ssii_video , ssii_video_format , ssii_mp4_parms , ssii_video_fps , ssii_add_first_frames , ssii_add_last_frames , ssii_smooth , ssii_seconds , ssii_debug ):
59
+ def ssii_save_settings_do (ssii_is_active , ssii_final_save , ssii_intermediate_type , ssii_every_n , ssii_start_at_n , ssii_stop_at_n , ssii_video , ssii_video_format , ssii_mp4_parms , ssii_video_fps , ssii_add_first_frames , ssii_add_last_frames , ssii_smooth , ssii_seconds , ssii_lores , ssii_hires , ssii_debug ):
57
60
ui_config_file = cmd_opts .ui_config_file
58
61
ui_settings = {}
59
62
@@ -127,9 +130,21 @@ def ssii_add_last_frames_logic(p, ssii_add_first_frames, ssii_add_last_frames, s
127
130
p .intermed_files = add_files
128
131
return
129
132
130
- def make_video (p , ssii_is_active , ssii_final_save , ssii_intermediate_type , ssii_every_n , ssii_start_at_n , ssii_stop_at_n , ssii_video , ssii_video_format , ssii_mp4_parms , ssii_video_fps , ssii_add_first_frames , ssii_add_last_frames , ssii_smooth , ssii_seconds , ssii_debug ):
133
+ def make_video (p , ssii_is_active , ssii_final_save , ssii_intermediate_type , ssii_every_n , ssii_start_at_n , ssii_stop_at_n , ssii_video , ssii_video_format , ssii_mp4_parms , ssii_video_fps , ssii_add_first_frames , ssii_add_last_frames , ssii_smooth , ssii_seconds , ssii_lores , ssii_hires , ssii_debug ):
131
134
if ssii_is_active and ssii_video and ((not state .skipped and not state .interrupted ) or p .intermed_stopped ):
132
135
logger = logging .getLogger (__name__ )
136
+ # remove unwanted files according to lores/hires setting
137
+ if hr_check (p ) and (not ssii_lores or not ssii_hires ):
138
+ intermed_files_remain = []
139
+ for (batch_no , name_org , name_seq ) in p .intermed_files :
140
+ filename = os .path .basename (name_org )
141
+ parts = filename .split ("-" )
142
+ current_step = parts [1 ]
143
+ if (ssii_lores and int (current_step ) < int (p .intermed_hires_start )) or (ssii_hires and int (current_step ) >= int (p .intermed_hires_start )):
144
+ intermed_files_remain .append ((batch_no , name_org , name_seq ))
145
+ logger .debug (f"Removed: { filename_clean (name_org )} " )
146
+ p .intermed_files = intermed_files_remain
147
+
133
148
# ffmpeg requires sequential numbers in filenames (that is exactly +1)
134
149
p .intermed_files .sort (key = lambda x : x [0 ])
135
150
prev_batch = None
@@ -321,6 +336,15 @@ def ui(self, is_img2img):
321
336
)
322
337
with gr .Row ():
323
338
gr .HTML ("fps >= 30 recommended, caution: generates large gif-files" )
339
+ with gr .Row ():
340
+ ssii_lores = gr .Checkbox (
341
+ label = ui_items ["ssii_lores" ],
342
+ value = True
343
+ )
344
+ ssii_hires = gr .Checkbox (
345
+ label = ui_items ["ssii_hires" ],
346
+ value = True
347
+ )
324
348
with gr .Row ():
325
349
ssii_debug = gr .Checkbox (
326
350
label = ui_items ["ssii_debug" ],
@@ -331,11 +355,11 @@ def ui(self, is_img2img):
331
355
332
356
ssii_save_settings .click (
333
357
fn = ssii_save_settings_do ,
334
- inputs = [ssii_is_active , ssii_final_save , ssii_intermediate_type , ssii_every_n , ssii_start_at_n , ssii_stop_at_n , ssii_video , ssii_video_format , ssii_mp4_parms , ssii_video_fps , ssii_add_first_frames , ssii_add_last_frames , ssii_smooth , ssii_seconds , ssii_debug ],
358
+ inputs = [ssii_is_active , ssii_final_save , ssii_intermediate_type , ssii_every_n , ssii_start_at_n , ssii_stop_at_n , ssii_video , ssii_video_format , ssii_mp4_parms , ssii_video_fps , ssii_add_first_frames , ssii_add_last_frames , ssii_smooth , ssii_seconds , ssii_lores , ssii_hires , ssii_debug ],
335
359
outputs = [ssii_message ],
336
360
)
337
361
338
- return [ssii_is_active , ssii_final_save , ssii_intermediate_type , ssii_every_n , ssii_start_at_n , ssii_stop_at_n , ssii_video , ssii_video_format , ssii_mp4_parms , ssii_video_fps , ssii_add_first_frames , ssii_add_last_frames , ssii_smooth , ssii_seconds , ssii_debug ]
362
+ return [ssii_is_active , ssii_final_save , ssii_intermediate_type , ssii_every_n , ssii_start_at_n , ssii_stop_at_n , ssii_video , ssii_video_format , ssii_mp4_parms , ssii_video_fps , ssii_add_first_frames , ssii_add_last_frames , ssii_smooth , ssii_seconds , ssii_lores , ssii_hires , ssii_debug ]
339
363
340
364
def save_image_only_get_name (image , path , basename , seed = None , prompt = None , extension = 'png' , info = None , short_filename = False , no_prompt = False , grid = False , pnginfo_section_name = 'parameters' , p = None , existing_info = None , forced_filename = None , suffix = "" , save_to_dirs = None ):
341
365
# for description see modules.images.save_image, same code up saving of files
@@ -381,17 +405,19 @@ def save_image_only_get_name(image, path, basename, seed=None, prompt=None, exte
381
405
382
406
return (fullfn )
383
407
384
- def process (self , p , ssii_is_active , ssii_final_save , ssii_intermediate_type , ssii_every_n , ssii_start_at_n , ssii_stop_at_n , ssii_video , ssii_video_format , ssii_mp4_parms , ssii_video_fps , ssii_add_first_frames , ssii_add_last_frames , ssii_smooth , ssii_seconds , ssii_debug ):
408
+ def process (self , p , ssii_is_active , ssii_final_save , ssii_intermediate_type , ssii_every_n , ssii_start_at_n , ssii_stop_at_n , ssii_video , ssii_video_format , ssii_mp4_parms , ssii_video_fps , ssii_add_first_frames , ssii_add_last_frames , ssii_smooth , ssii_seconds , ssii_lores , ssii_hires , ssii_debug ):
385
409
if ssii_is_active :
386
410
387
411
# Debug logging
388
412
if ssii_debug :
389
413
mode = logging .DEBUG
390
- logging .basicConfig (level = mode , format = '%(asctime)s %(levelname)s %(message)s' )
391
414
else :
392
415
mode = logging .WARNING
393
416
logger = logging .getLogger (__name__ )
394
417
logger .setLevel (mode )
418
+ console_handler = logging .StreamHandler ()
419
+ console_handler .setLevel (mode )
420
+ logger .addHandler (console_handler )
395
421
if logger .isEnabledFor (logging .DEBUG ):
396
422
logger .debug (f"{ sys .executable } { sys .version } " )
397
423
logger .debug (f"{ platform .system ()} { platform .version ()} " )
@@ -449,8 +475,9 @@ def callback_state(self, d):
449
475
# Reset per-batch_count-attributes
450
476
delattr (p , "intermed_final_pass" )
451
477
delattr (p , "intermed_max_step" )
478
+ delattr (p , "intermed_hires_start" )
452
479
# Make video for previous batch_count
453
- make_video (p , ssii_is_active , ssii_final_save , ssii_intermediate_type , ssii_every_n , ssii_start_at_n , ssii_stop_at_n , ssii_video , ssii_video_format , ssii_mp4_parms , ssii_video_fps , ssii_add_first_frames , ssii_add_last_frames , ssii_smooth , ssii_seconds , ssii_debug )
480
+ make_video (p , ssii_is_active , ssii_final_save , ssii_intermediate_type , ssii_every_n , ssii_start_at_n , ssii_stop_at_n , ssii_video , ssii_video_format , ssii_mp4_parms , ssii_video_fps , ssii_add_first_frames , ssii_add_last_frames , ssii_smooth , ssii_seconds , ssii_lores , ssii_hires , ssii_debug )
454
481
else :
455
482
p .intermed_batch_iter = p .iteration
456
483
@@ -460,9 +487,11 @@ def callback_state(self, d):
460
487
hr_active = hr_active_check (p )
461
488
if hr_active :
462
489
abs_step = current_step + p .steps
490
+ if not hasattr (p , 'intermed_hires_start' ):
491
+ p .intermed_hires_start = abs_step
463
492
464
- logger .debug ("ssii_intermediate_type, ssii_every_n, ssii_start_at_n, ssii_stop_at_n, ssii_video, ssii_video_format, ssii_mp4_parms, ssii_video_fps, ssii_add_first_frames, ssii_add_last_frames, ssii_smooth, ssii_seconds, ssii_debug:" )
465
- logger .debug (f"{ ssii_intermediate_type } , { ssii_every_n } , { ssii_start_at_n } , { ssii_stop_at_n } , { ssii_video } , { ssii_video_format } , { ssii_video_fps } , { ssii_smooth } , { ssii_seconds } , { ssii_debug } " )
493
+ logger .debug ("ssii_intermediate_type, ssii_every_n, ssii_start_at_n, ssii_stop_at_n, ssii_video, ssii_video_format, ssii_mp4_parms, ssii_video_fps, ssii_add_first_frames, ssii_add_last_frames, ssii_smooth, ssii_seconds, ssii_lores, ssii_hires, ssii_debug:" )
494
+ logger .debug (f"{ ssii_intermediate_type } , { ssii_every_n } , { ssii_start_at_n } , { ssii_stop_at_n } , { ssii_video } , { ssii_video_format } , { ssii_mp4_parms } , { ssii_video_fps } , { ssii_add_first_frames } , { ssii_add_last_frames } , { ssii_smooth } , { ssii_seconds } , { ssii_lores } , { ssii_hires } , { ssii_debug } " )
466
495
logger .debug (f"Step, abs_step, hr, hr_active: { current_step } , { abs_step } , { hr } , { hr_active } " )
467
496
468
497
# ssii_start_at_n must be a multiple of ssii_every_n
@@ -584,11 +613,11 @@ def callback_state(self, d):
584
613
585
614
setattr (KDiffusionSampler , "callback_state" , callback_state )
586
615
587
- def postprocess (self , p , processed , ssii_is_active , ssii_final_save , ssii_intermediate_type , ssii_every_n , ssii_start_at_n , ssii_stop_at_n , ssii_video , ssii_video_format , ssii_mp4_parms , ssii_video_fps , ssii_add_first_frames , ssii_add_last_frames , ssii_smooth , ssii_seconds , ssii_debug ):
616
+ def postprocess (self , p , processed , ssii_is_active , ssii_final_save , ssii_intermediate_type , ssii_every_n , ssii_start_at_n , ssii_stop_at_n , ssii_video , ssii_video_format , ssii_mp4_parms , ssii_video_fps , ssii_add_first_frames , ssii_add_last_frames , ssii_smooth , ssii_seconds , ssii_lores , ssii_hires , ssii_debug ):
588
617
setattr (KDiffusionSampler , "callback_state" , orig_callback_state )
589
618
590
619
# Make video for last batch_count
591
- make_video (p , ssii_is_active , ssii_final_save , ssii_intermediate_type , ssii_every_n , ssii_start_at_n , ssii_stop_at_n , ssii_video , ssii_video_format , ssii_mp4_parms , ssii_video_fps , ssii_add_first_frames , ssii_add_last_frames , ssii_smooth , ssii_seconds , ssii_debug )
620
+ make_video (p , ssii_is_active , ssii_final_save , ssii_intermediate_type , ssii_every_n , ssii_start_at_n , ssii_stop_at_n , ssii_video , ssii_video_format , ssii_mp4_parms , ssii_video_fps , ssii_add_first_frames , ssii_add_last_frames , ssii_smooth , ssii_seconds , ssii_lores , ssii_hires , ssii_debug )
592
621
593
622
def handle_image_saved (params : script_callbacks .ImageSaveParams ):
594
623
if hasattr (params .p , "intermed_is_active" ):
0 commit comments