Nodes/ComfyUI-MiniMaxH3-Context-Loop/MiniMax H3 Pixel Upscale Current Scene (Experimental)
ComfyUI Node

MiniMax H3 Pixel Upscale Current Scene (Experimental)

This node hands you the frames

By ethanfel·Created 30 days ago·Updated about 19 hours ago· 383
MiniMax H3 Pixel Upscale Current Scene (Experimental)
  • 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 with backend=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.
Categoryconditioning/minimax/context_loop/upscale

Inputs (2)

NameTypeDefaultDescription
stateH3_CHAIN_UPSCALE_STATEUpscale Adapter state with backend=pixel. Source checkpoints and scene clocks remain unchanged.
video_vaeVAEMiniMax H3 video VAE to decode one saved clean video latent, including its repeated RAW prefix.

Outputs (9)

NameTypeDescription
stateH3_CHAIN_UPSCALE_STATEVerified current state for conditioning, Segment Save and Loop End.
imagesIMAGEOne complete RAW scene. Upscale/refine these frames without changing their count; Segment Save removes the repeated head exactly once.
source_audioAUDIODelivered 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).
promptSTRINGOriginal saved scene prompt.
seedINTOriginal saved scene seed.
clip_indexINTOne-based scene index.
raw_framesINTExpected RAW frame count.
trim_framesINTRepeated head frame count removed by Segment Save.
statusSTRINGDecode route and exact RAW/delivered clock.