MiniMax H3 Pixel Upscale Current Scene (Experimental)
This node hands you the frames
- state
- video_vae
- state
- images
- source_audio
- prompt
- seed
- clip_index
- raw_frames
- trim_frames
- status
Here's the trap with upscaling a MiniMax H3 video inside a chain workflow: the usual route wants to decode the whole run, build a target-resolution latent, and pass that through a second diffusion pass. That's expensive, and it puts every scene in VRAM at once. The MiniMax H3 Pixel Upscale Current Scene node (experimental) takes the other road - it decodes one saved scene as plain images, so you can upscale it with any ordinary IMAGE upscaler and refine it in the pixel domain, scene by scene.
It belongs to the pixel-upscale variant of this pack's deferred upscale pipeline. You pick a saved generated lineage in Checkpoint Manager, run it through the Upscale Adapter with backend=pixel, and this node becomes the scene reader inside that loop: it gives you the current scene's frames, its original prompt and seed, and the delivered audio, without a full-chain video allocation or a guessed scale multiplier anywhere.
How it works
The pack saved each rendered scene to disk as a clean MP4 checkpoint, and H3 checkpoints carry a quirk: the video stream includes a repeated RAW head - continuation context frames that get trimmed at assembly time. This node decodes the saved clean video through the H3 video VAE and hands you the complete RAW scene at its original frame count, plus a separate readout of the delivered audio. It returns raw_frames (what you got) and trim_frames (how many of the repeated head frames Segment Save will strip exactly once at the end). The one rule that bites people: don't trim or re-time those frames yourself - the downstream Segment Save expects the full RAW count.
The source_audio output is recovered separately from the video stream. It's for preview only. Don't wire it into recovered_audio (which expects RAW audio) or into Assemble's source_audio (which expects the whole-run source track). Segment Save already preserves the delivered audio on its own.
Inputs and outputs
Just two inputs:
state- current Upscale state from the Upscale Adapter withbackend=pixel.video_vae- the MiniMax H3 video VAE used to decode the saved latent. Not the audio VAE.
Outputs beyond state: images (one complete RAW scene - feed these to your upscaler), source_audio, prompt, seed, clip_index, raw_frames, trim_frames, and a status string describing the decode route and clock. The usual chain: images → an IMAGE upscaler → MiniMax H3 Pixel Upscale Conditioning → image refiner.
How to install
Via ComfyUI Manager (search "MiniMax H3 Context Loop") or by cloning:
cd ComfyUI/custom_nodes
git clone https://github.com/seitanism/ComfyUI-H3-Motion-Context-MultiRef.git
git clone https://github.com/ethanfel/ComfyUI-MiniMaxH3-Context-Loop.git
Restart ComfyUI after cloning both. You need your own H3 model, text encoder, and video/audio VAEs - none are bundled - plus a current ComfyUI with native MiniMax H3 Add Guide support. This particular experimental route also assumes you have the extra packs the workflow catalog lists (the example uses DLSS5 for upscaling and an H3-aware USDU guider), but this node itself only needs the VAE and the saved checkpoint.
Common issues
- "Pixel Current Scene requires Upscale Adapter backend=pixel" - you've fed it state from a latent-backend profile. Switch the adapter's backend to
pixel. - Shape mismatch errors ("expected N RAW RGB frames at WxH") - you're using the wrong VAE, or something upstream trimmed frames. Use the matching H3 video VAE and don't trim here.
- It's labelled experimental for a reason: the external GPU upscaler + USDU refinement path hasn't had full real-world testing yet. Start with one short scene before committing a long run.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| state | H3_CHAIN_UPSCALE_STATE | Upscale Adapter state with backend=pixel. Source checkpoints and scene clocks remain unchanged. | |
| video_vae | VAE | MiniMax H3 video VAE to decode one saved clean video latent, including its repeated RAW prefix. |
Outputs (9)
| Name | Type | Description |
|---|---|---|
| state | H3_CHAIN_UPSCALE_STATE | Verified current state for conditioning, Segment Save and Loop End. |
| images | IMAGE | One complete RAW scene. Upscale/refine these frames without changing their count; Segment Save removes the repeated head exactly once. |
| source_audio | AUDIO | Delivered saved scene audio, or None for a silent source. For preview only: Segment Save preserves this audio automatically. Do not wire it to recovered_audio (RAW) or Assemble source_audio (whole run). |
| prompt | STRING | Original saved scene prompt. |
| seed | INT | Original saved scene seed. |
| clip_index | INT | One-based scene index. |
| raw_frames | INT | Expected RAW frame count. |
| trim_frames | INT | Repeated head frame count removed by Segment Save. |
| status | STRING | Decode route and exact RAW/delivered clock. |