uneven chunk overlap

This commit is contained in:
Enrico
2026-01-19 17:52:33 +01:00
parent 6fcb6a3a54
commit 7ff543fd70
+21 -11
View File
@@ -157,7 +157,6 @@ class LTXVSceneExtender(io.ComfyNode):
step=32,
tooltip="Output video height"
),
io.Int.Input("batch_size", default=1, min=1, max=4096),
# === Scene Script ===
io.String.Input(
@@ -254,7 +253,6 @@ Guide refs: $0, $1, etc. reference guide_images batch by index"""
video_fps: float,
width: int,
height: int,
batch_size: int,
scene_script: str,
guide_strength: float,
audio_overlap_duration: float,
@@ -268,6 +266,7 @@ Guide refs: $0, $1, etc. reference guide_images batch by index"""
latent=None,
guide_images=None,
) -> io.NodeOutput:
batch_size = 1 # Hardcoded
"""Execute the scene extension."""
# Check if we have an audio-video model
@@ -393,19 +392,21 @@ Guide refs: $0, $1, etc. reference guide_images batch by index"""
prev_video = prev_samples
prev_audio_src = None
# Copy Overlap
# Copy Overlap (Robust)
video_overlap = video_overlap_frames
if video_overlap > prev_video.shape[2]:
video_overlap = prev_video.shape[2]
if video_overlap > latent_length: # Clamp to new chunk size
video_overlap = latent_length
src_v = prev_video[:, :, -video_overlap:, :, :]
src_v = prev_video[..., -video_overlap:, :, :]
# Allocate New
current_v = torch.zeros(
[batch_size, 128, latent_length, latent_height, latent_width],
device=mm.intermediate_device() if COMFY_AVAILABLE else "cpu"
)
current_v[:, :, :src_v.shape[2], :, :] = src_v
current_v[:, :, :video_overlap, :, :] = src_v
# AV Logic
if is_av_model and NestedTensor is not None and audio_vae is not None:
@@ -421,12 +422,21 @@ Guide refs: $0, $1, etc. reference guide_images batch by index"""
audio_overlap = audio_overlap_frames
if prev_audio_src is not None:
# Ensure dimensions match before copy (if VAE changed? Unlikely)
if prev_audio_src.shape[1] == a_ch:
if audio_overlap > prev_audio_src.shape[2]:
audio_overlap = prev_audio_src.shape[2]
src_a = prev_audio_src[:, :, -audio_overlap:, :]
current_a[:, :, :src_a.shape[2], :] = src_a
# Ensure dimensions match before copy
a_src_ch = prev_audio_src.shape[-3] if prev_audio_src.ndim == 4 else prev_audio_src.shape[-4] # Handle Rank 4? T is -2
# Audio Rank 4: [C, T, Freq] ? Or [B, C, T, Freq]?
# Actually Audio Latent is [B, C, T, Freq].
# My creation: [batch, a_ch, audio_len, a_freq].
# Clamp overlap
a_copy_len = audio_overlap
if a_copy_len > prev_audio_src.shape[2]: # Time dim
a_copy_len = prev_audio_src.shape[2]
if a_copy_len > current_a.shape[2]: # Target T
a_copy_len = current_a.shape[2]
src_a = prev_audio_src[:, :, -a_copy_len:, :]
current_a[:, :, :a_copy_len, :] = src_a
nt = NestedTensor((current_v, current_a))
input_latent = {"samples": nt}