MiniMax H3 Context Latent Resize
Resize a MiniMax H3 AV latent so your clip chain can change resolution mid-story
- latent
- vae
- latent
Some H3 workflows chain clips together by feeding one clip's ending into the next one's start - a "motion context" node slices the last frames and last second of audio out of clip A's latent and pins them at the head of clip B, so a whole scene builds up shot by shot. It works beautifully until you want clip B to be a different resolution than clip A, at which point the chaining node refuses to cooperate, because it can't stitch a 1344×768 latent onto a 2688×1536 one.
Context Latent Resize is the adapter for that join. It takes a saved H3 AV latent, decodes the picture to real pixels, lanczos-resizes them to your new size, and re-encodes with the H3 video VAE - producing a genuine latent at the new resolution that the chaining node will happily accept. The audio stream and the frame count pass through untouched. Marked experimental (beta) by the author, and it's squarely aimed at people doing multi-clip chaining, so if you've never heard of the H3 Motion Context node this isn't your node yet - but it might be later.
Why it can't be done with stock nodes
You'd think Upscale Latent could handle this. Three reasons it can't:
- The chaining pack's Load Latent node emits the video/audio pair as a plain list, and a sampler emits it as a
NestedTensor; the stock upscale nodes fail on either with anAttributeError. - Upscale Latent divides pixel sizes by 8. H3's VAE is 16×, so even with a compatible container you'd land on the wrong grid.
- Resizing the 24-channel video latent directly (plain interpolation) hands the model context it never saw in training - the join comes out soft and can shift colour.
The resize-through-pixels approach is the one that returns a real latent. It costs one VAE round trip on the picture only; the sound stays bit-exact.
The inputs and outputs that matter
latent- the previous clip's AV latent: the output of the chain's H3 Motion Context Load Latent node, or a sampler's AV latent.vae- the H3 video VAE, the same one the Motion Context node takes.width,height- the resolution of the clip you're generating next (defaults 1344×768), multiples of 16. Set them to the size of the empty latent feeding your sampler, and keep the aspect ratio equal to the previous clip's unless you intend to crop.crop-disabledstretches the frames to the new size;centerkeeps the aspect ratio and crops the overflow.latent(output) - the AV latent at the new resolution, in the same container as the input. Wire it intocontext_latent.
If the input already matches the requested size, the node returns it untouched and never loads the VAE into work.
How it's built
Each batch item is encoded separately as a 4-D image batch - a deliberate detail, because the H3 VAE crops spatial axes to multiples of 16 and on a 5-D input that would silently shorten the frame axis and break the 17k+5 grid. The node also sanity-checks the VAE round trip: if the temporal length ever changed, it refuses to build a context that would land at the wrong instant rather than silently misjoining.
Costs and honesty worth knowing: the whole previous clip is decoded to 32-bit pixels on the CPU - about 1.5 GB for 124 frames at 1344×768 - though VRAM stays bounded because the H3 VAE tiles internally. ComfyUI's lanczos path round-trips through 8-bit images, the same hop every other H3 pixel-encoding path makes, far below the VAE's own reconstruction error. And a resolution change is still one lossy join per chain: the pinned frames are a VAE reconstruction of clip A, not its exact numbers. Same-size joins don't need this node and stay bit-exact.
Installing it
Part of ComfyUI-Arisu-Nodes (swqa7697, GPL-3.0, released September 2026), zero runtime dependencies - no pip install, nothing extra downloaded. Needs ComfyUI ≥ 0.30.0 and the H3 video VAE. Manager: Install Custom Nodes → "ComfyUI-Arisu-Nodes", or:
cd ComfyUI/custom_nodes
git clone https://github.com/swqa7697/ComfyUI-Arisu-Nodes.git
Restart; it's under Add Node → Arisu Nodes.
Gotchas
The quirk most likely to trip you up is a feature of the chaining pack, not this node: a latent loaded by Motion Context Load Latent is deliberately not decodable by stock nodes - it's a plain list meant only for context_latent. So don't expect to preview what you resize if it came from there. And the H3 territorial licence still applies - the MiniMax H3 Community License excludes the US, EU, UK, and South Korea from running the local weights. Narrow tool, narrow audience, but for resolution-changing clip chains it's the difference between a hard stop and a clean join.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| latent | LATENT | A MiniMax H3 AV latent: the output of H3 Motion Context Load Latent, or a sampler's AV latent. | |
| vae | VAE | The MiniMax H3 video VAE; the same one the Motion Context node takes. | |
| width | INT | 134416–16384 | Width of the clip being generated next, in pixels. |
| height | INT | 76816–16384 | Height of the clip being generated next, in pixels. |
| crop | COMBO | disabled | disabled stretches the frames to the new size; center keeps the aspect ratio and crops the overflow. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| latent | LATENT | The AV latent at the new resolution, in the same container as the input. Wire it into context_latent. |