(
self,
model,
vae,
noise,
sampler,
sigmas,
guider,
latents,
guiding_strength,
adain_factor,
temporal_tile_size,
temporal_overlap,
temporal_overlap_cond_strength,
horizontal_tiles,
vertical_tiles,
spatial_overlap,
optional_cond_images=None,
cond_image_strength=1.0,
optional_guiding_latents=None,
optional_negative_index_latents=None,
optional_negative_index_strength=1.0, # hidden interface
optional_positive_conditionings=None,
guiding_start_step=0,
guiding_end_step=1000,
optional_cond_image_indices="0",
optional_normalizing_latents=None,
per_tile_seed_offsets="0", # hidden interface
)
| 690 | return result |
| 691 | |
| 692 | def sample( |
| 693 | self, |
| 694 | model, |
| 695 | vae, |
| 696 | noise, |
| 697 | sampler, |
| 698 | sigmas, |
| 699 | guider, |
| 700 | latents, |
| 701 | guiding_strength, |
| 702 | adain_factor, |
| 703 | temporal_tile_size, |
| 704 | temporal_overlap, |
| 705 | temporal_overlap_cond_strength, |
| 706 | horizontal_tiles, |
| 707 | vertical_tiles, |
| 708 | spatial_overlap, |
| 709 | optional_cond_images=None, |
| 710 | cond_image_strength=1.0, |
| 711 | optional_guiding_latents=None, |
| 712 | optional_negative_index_latents=None, |
| 713 | optional_negative_index_strength=1.0, # hidden interface |
| 714 | optional_positive_conditionings=None, |
| 715 | guiding_start_step=0, |
| 716 | guiding_end_step=1000, |
| 717 | optional_cond_image_indices="0", |
| 718 | optional_normalizing_latents=None, |
| 719 | per_tile_seed_offsets="0", # hidden interface |
| 720 | ): |
| 721 | # Get dimensions and prepare for spatial tiling |
| 722 | samples = latents["samples"] |
| 723 | if ( |
| 724 | isinstance(samples, comfy.nested_tensor.NestedTensor) |
| 725 | and len(samples.tensors) == 2 |
| 726 | ): |
| 727 | raise ValueError( |
| 728 | "LoopingSampler currently does not support Audio Visual latents. please only use video latents." |
| 729 | ) |
| 730 | batch, channels, frames, height, width = samples.shape |
| 731 | time_scale_factor, width_scale_factor, height_scale_factor = ( |
| 732 | vae.downscale_index_formula |
| 733 | ) |
| 734 | temporal_tile_size = temporal_tile_size // time_scale_factor |
| 735 | temporal_overlap = temporal_overlap // time_scale_factor |
| 736 | first_seed = noise.seed |
| 737 | |
| 738 | per_tile_seed_offsets = self._parse_comma_separated_string( |
| 739 | per_tile_seed_offsets, "0", int |
| 740 | ) |
| 741 | |
| 742 | keyframe_indices = self._parse_comma_separated_string( |
| 743 | optional_cond_image_indices, |
| 744 | "0", |
| 745 | int, |
| 746 | optional_total_size=frames * time_scale_factor - 7, |
| 747 | ) |
| 748 | keyframe_per_tile_indices = self._calculate_keyframe_per_tile_indices( |
| 749 | keyframe_indices, |
no test coverage detected