MiniMaxH3 Continuity • Segment Decode
Segment Decode Decodes More Than It Keeps, and That's the Point
- latent
- vae
- audio_vae
- context
- images
- audio
MiniMax H3's video VAE doesn't decode a latent one frame at a time - it works in 17-frame chunks with a bit of overlap, so the only reliable way to get the new part of a continuation right is to give the decoder a run-up and then throw the run-up away. MiniMaxH3 Continuity • Segment Decode is that trade made explicit: it decodes a window, then slices out only the frames and samples that are actually new.
If you're on the default Full timeline path you don't need this node. If you switched the Director to Output → New segment only, you need it, and it's the last thing between your latent and Enhanced Video Combine.
What it does with the window
It takes latent (Segment Prepare's render_latent, optionally spatially upscaled first), the native H3 video vae, the native H3 32 kHz audio_vae, and the matching context - that's Segment Prepare.segment_context, not the Guide's original continuity context. Get that wrong and the offsets won't line up.
Before decoding anything it checks that you actually connected H3's VAEs. Not "a VAE that loads" - the specific temporal layout (17 frames / 5 tokens, the drop and overlap settings) and the specific audio side (40 Hz latents, 800 samples per latent, 32 kHz output, and the exact BigVGAN decoder topology). If ComfyUI ever changes H3's decoder, this node refuses rather than guessing where to crop. That's the kind of paranoia I want in a node that's cutting audio.
Then: decode the full render window, keep crop_frames starting at the plan's frame offset. Audio gets cut at cumulative 32 kHz sample boundaries derived from the global timeline, with no whole-take loudness normalization - which is exactly why a chain of segments doesn't get louder or quieter at each seam. There's a small allowance of up to 267 samples at the end: the 40 Hz audio grid can undershoot the video endpoint by less than that, and it pads only that remainder rather than repeating source audio.
In Full timeline mode the node short-circuits to plain core VAE Decode and VAE Decode Audio, so the same wiring behaves identically in both modes.
What comes out
images is an IMAGE batch of just the new visible frames, at 24 fps. audio is the synchronized AUDIO clip, carrying an h3_segment_interval marker describing where it sits on the global timeline. Wire them into Enhanced Video Combine (or whatever exporter you use) and send the exporter's filename to Publish Export alongside Prepare's ticket.
Installing it
This ships in the same pack as the rest of the H3 continuity machinery:
cd ComfyUI/custom_nodes
git clone https://github.com/darksidewalker/ComfyUI-DaSiWa-Nodes
cd ComfyUI-DaSiWa-Nodes
pip install -r requirements.txt
Or find DaSiWa-Nodes in ComfyUI Manager. No extra model files beyond the H3 set you already need - the H3 video and audio VAEs and the model itself. av>=18 in the requirements is what this pack uses to probe and mux media, so it does need to install cleanly even though this node itself is pure PyTorch. The rest of that file (nvidia-vfx, llama-cpp-python, transformers) belongs to other nodes in this large, kitchen-sink pack; the DaSiWa handle is more famous on Civitai for Wan 2.2 workflows, so people install this expecting a small utility pack and get a lot more than that.
Where people get burned
"Segment decoding requires the validated native H3 video temporal layout." You're feeding it a VAE that isn't the H3 video VAE - a Wan VAE, a frame-interpolation checkpoint, or an older H3 export. Reconnect the loader the Director is using.
"Do not connect the raw sampler or stored delta." That's the latent tooltip and it's literal. The sampler output has no plan; the stored delta has no run-up. Only Segment Prepare.render_latent carries both.
Keep context intact through the upscaler. If you upscale between Prepare and Decode, pass segment_context straight through - don't rebuild it, don't substitute the Guide's context. The decode node recomputes the expected plan from the source frame count and refuses when it differs ("Segment render latent length differs from Segment Prepare"), which is a better outcome than a silently offset crop.
Memory. Segment mode bounds decode and export, not sampling. If you were hoping this would make an hour-long chain fit on a small card, it won't - peak VRAM during sampling is unchanged, and audio encoding still scales with the window.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| latent | LATENT | Segment Prepare.render_latent, optionally spatially upscaled; do not connect the raw sampler or stored delta. | |
| vae | VAE | Native MiniMax H3 video VAE. Other temporal layouts are rejected. | |
| audio_vae | VAE | Native MiniMax H3 32 kHz audio VAE. In New segment only, audio is cropped at cumulative sample boundaries without whole-clip loudness normalization; Full timeline decodes exactly like VAE Decode Audio. | |
| context | DF_H3_CONTINUITY_CONTEXT | The matching Segment Prepare.segment_context; retain it unchanged through optional Upscale. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| audio | AUDIO | — |