H3 Infinite - Seamless AV Join — Masked AV v1.4
Seamless AV Join v1.4 — The Stitch That Just Works, Because the Seam Was Decided Upstream
- previous_images
- next_images
- previous_audio
- next_audio
- next_handover
- previous_full_images
- previous_handover
- images
- audio
- join_info
Here's the v1.4 philosophy in one node: stop patching the seam at render time, and instead make the seam identical everywhere upstream. H3ContinuousSeamlessJoinV14 joins rendered clips the way v1.2 did, but it leans on the fact that v1.4's Auto Handover defined one shared video boundary - the previous visible clip and the next protected video head both end at the exact same freeze-safe frame. So the join mostly has to trim the duplicated head and do a short context-aligned crossfade, and there's no guessing about where "previous" ends.
That's why the headline controls have inverted from v1.2. Safe Tail Bridge defaults to 0 - it was a fix for frames lost to guide-latent phase quantization, a problem the native-mask path doesn't have. Re-enabling it for a v1.4 chain is explicitly called "legacy-guide A/B compatibility," and the release intentionally accepts the AV-grid snap instead of bridging mismatched motion. Similarly, Luminance Match is off by default and marked as legacy/diagnostic - the brightness seam it used to patch was solved by the masked handover, so the author's advice is to leave it off unless you're deliberately A/B testing an older seam.
What you actually configure
next_head_context_frames- from the Continue v1.4 node'sactual_head_context_frames. This is the one that must not be left dangling.next_output_mode- Stitch Ready for intermediate clips, Final Clip for the last one (keeps its complete landing).video_crossfade_frames- 4 is the default; 0 disables the blend.audio_crossfade_ms- 15 ms de-click; keep it short.luminance_match,luminance_fade_frames,max_luminance_correction_percent,max_safe_tail_bridge_frames- the advanced legacy fallbacks. Defaults (off/0) are right.
The audio story is different in v1.4, and it's the part worth celebrating: independent protected audio-tail carryover already happened inside the Continue node, so by the time decoded next_audio reaches this join, the carried dialogue is baked in and preserved automatically after the 39-frame video head trim. The join doesn't have to invent an audio seam - it just doesn't destroy the one that was protected.
Inputs: previous_images, next_images, next_output_mode, next_head_context_frames, the crossfade/luminance/bridge controls, and optional previous_audio, next_audio, next_handover, previous_full_images, previous_handover. Outputs: images, audio, join_info.
Install
Same pack, same drill:
cd ComfyUI/custom_nodes
git clone https://github.com/HerrgottMargott/Herrgotts-H3-Infinite-Continuation-Suite.git
Restart ComfyUI, reload the UI. Remember the v1.4 caveat that applies to every v1.4 node: you need a current ComfyUI with PR #15375's native H3 AV-mask support, or the masked path won't work at all.
Gotchas
Because the shared boundary is exact and discrete, the handover can sit up to ~16 rendered frames earlier than the detector's ideal visual cutoff - that's intentional conservatism, not a bug; live testing showed recovering those grid-lost frames produced visible motion/alignment errors. If a seam still looks wrong on v1.4, first check that the Continue node's actual_head_context_frames and the join's next_head_context_frames actually match - a mismatch there explains more bad seams than any tuning knob.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| previous_images | IMAGE | Already prepared/combined previous timeline. For the first join, Clip 1 Stitch Ready is fine. | |
| next_images | IMAGE | FULL decoded render of the next clip. Its reused context head is needed for the context-aligned seam. | |
| next_output_mode | COMBO | Stitch Ready | Intermediate next clip = Stitch Ready. Current last clip = Final Clip so its complete ending is preserved. |
| next_head_context_frames | INT | Connect actual_head_context_frames from the next Continue from Latent node. | |
| video_crossfade_frames | INT | 40–16 | Short context-aligned video blend after Safe Tail Bridge. 4 frames is the recommended default; 0 disables the blend. |
| audio_crossfade_ms | FLOAT | 150–100 | Short audio de-click crossfade. 15 ms is the tested default; keep it short to reduce phasing/doubled transients. |
| luminance_match | BOOLEAN | false | Legacy/diagnostic fallback only. Native Masked AV solved the observed brightness seam in live testing; keep this OFF unless deliberately A/B testing an older seam. |
| luminance_fade_frames | INT | 160–96 | Advanced legacy luminance-fade length. Ignored while Luminance Match is off. |
| max_luminance_correction_percent | FLOAT | 10.00–25 | Advanced legacy luminance correction clamp. Ignored while Luminance Match is off. |
| max_safe_tail_bridge_frames | INT | 00–4 | Legacy-guide A/B compatibility only. Keep 0 for v1.4 Native Masked AV; the release intentionally accepts the AV-grid snap instead of bridging mismatched motion. |
| previous_audioopt | AUDIO | — | |
| next_audioopt | AUDIO | — | |
| next_handoveropt | H3_CONTINUOUS_HANDOVER | Required when next_output_mode is Stitch Ready so the next clip's freeze-safe tail is removed. | |
| previous_full_imagesopt | IMAGE | Optional FULL decoded render of the previous individual clip. Connect this together with previous_handover to enable Safe Tail Bridge. | |
| previous_handoveropt | H3_CONTINUOUS_HANDOVER | Previous clip handover metadata. Together with previous_full_images it exposes up to 1-2 safe rendered frames that latent phase alignment had to discard. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| audio | AUDIO | — |
| join_info | STRING | — |