IAMCCS_Ltx2HelperModules Continuity
Stitch LTX-2 segments together without the seam
- source_images
- new_images
- parent_contract
- linx
- continuity_payload
- contract
- linx
- source_images_passthrough
- start_images
- extended_images
- overlap_frames_out
- calculated_frames
- extension_frames
- report
The video-side workhorse of the helper-module chain. Where ReanchorLatent keeps the generation on-course at the latent level, Continuity handles the stitching: it takes your accumulated footage and the freshly generated segment, overlaps them, blends the seam, and hands back the extended clip plus the start frames for the next pass. If you've used IAMCCS_LTX2_ExtensionModule, this is that same engine wearing the helper-module uniform - with the planner and refresh payloads doing the configuration for you.
It's the node that makes "segments actually join seamlessly" happen in the au_img2vid pipeline, and it's the in-memory counterpart to DiskExtension (same job, but Continuity works on IMAGE tensors while DiskExtension works on frame directories for low-RAM rigs). Pick based on your RAM, not your preference.
How it works
Under the hood it calls IAMCCS_LTX2_ExtensionModule.process_extension - the full overlap/blend machinery: take overlap_frames from the source tail or new head (overlap_side), blend with the chosen overlap_mode (cut or a crossfade), enforce the start_frames_rule (keeping next-pass start frames at 8n+1), and optionally tweak the overlap via math_operation. What's different from using the ExtensionModule directly is the automation:
use_planner_preset(default true) - the node readsplanner_payloadand uses the planner's recommended preset and overlap instead of the widget values. The planner'srecommended_extension_preset(e.g.lossless_refresh_24fps) becomes the effective stitch config.refresh_payload- on reanchor segments, the refresh policy's overrides take charge:reanchor_overlap_mode(filmic_crossfade),reanchor_safe_mode, andreanchor_start_frames_rulereplace the manual settings. So a reanchor segment gets a softer blend and correct frame rule automatically, while continuity segments use the continuity preset.
The presets available (custom, target_extension_ltx2, lossless_refresh_24fps, videoclip_audio_24fps, monologue_audio_24fps, cut_bestofk_*, micro_crossfade_3) are the same family as the ExtensionModule.
The inputs and outputs that matter
You wire in: source_images (footage so far), new_images (the new segment), plus planner_payload and refresh_payload from the chain. overlap_frames (default 9) and overlap_mode (default cut) are the manual knobs - mostly overridden by the planner.
Outputs you'll use: extended_images (the growing clip), start_images (next pass's conditioning), source_images_passthrough, plus overlap_frames_out, calculated_frames, extension_frames INTs, the continuity_payload/contract/linx plumbing, and report.
Installing it
Ships in IAMCCS-nodes under IAMCCS/Ltx2 Helper Modules. Manager → "IAMCCS" → install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/IAMCCS/IAMCCS-nodes.git
Restart ComfyUI. No models; relies on the same ExtensionModule code already in the pack.
Common issues
The default overlap_mode is cut - hard join - which is right for cleanly-matching segments but will show a seam if your two chunks drift in color. Turn on a crossfade or, better, let a reanchor segment handle it via the refresh payload. Second: because use_planner_preset defaults on, your manual preset/overlap_frames are ignored whenever a planner_payload is connected - if you're tuning by hand and nothing changes, that's why; disconnect the payload or flip the toggle. And remember the 8n+1 rule travels with the start frames - if the next encode fails, check that start_frames_rule isn't set to none on a reanchor segment where the refresh override didn't apply.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| source_images | IMAGE | — | |
| overlap_frames | INT | 91–256 | — |
| overlap_side | COMBO | source | 2 options: source, new_images |
| overlap_mode | COMBO | cut | 5 options: cut, linear_blend, ease_in_out, filmic_crossfade, perceptual_crossfade |
| enable_math | BOOLEAN | true | — |
| math_operation | COMBO | a-b | 8 options: none, a-b, a-1, a+b, a*b, a/b, +2 |
| safe_mode | COMBO | none | 2 options: none, native_workflow_safe |
| start_frames_rule | COMBO | none | 3 options: none, ltx2_round_down, ltx2_nearest |
| preset | COMBO | lossless_refresh_24fps | 10 options: custom, target_extension_ltx2, lossless_refresh_24fps, lossless_refresh_strong_24fps, videoclip_audio_24fps, monologue_audio_24fps, +4 |
| use_planner_preset | BOOLEAN | true | — |
| new_imagesopt | IMAGE | — | |
| planner_payloadopt | STRING | {} | — |
| refresh_payloadopt | STRING | {} | — |
| parent_contractopt | IAMCCS_SUPERNODE_CONTRACT | — | |
| linxopt | IAMCCS_SUPERNODE_LINX | — | |
| math_value_bopt | INT | 10–256 | — |
Outputs (10)
| Name | Type | Description |
|---|---|---|
| continuity_payload | STRING | — |
| contract | IAMCCS_SUPERNODE_CONTRACT | — |
| linx | IAMCCS_SUPERNODE_LINX | — |
| source_images_passthrough | IMAGE | — |
| start_images | IMAGE | — |
| extended_images | IMAGE | — |
| overlap_frames_out | INT | — |
| calculated_frames | INT | — |
| extension_frames | INT | — |
| report | STRING | — |