MiniMax H3 · Safe Windowed Pixel → H3 Delivery
Second-pass quality without blowing up the seam
- model
- video_vae
- sampled_latent
- conditioning
- cine_linx
- native_frames
- native_audio
- video_path
- report
IAMCCS_MiniMaxH3PixelRefineR38B is the output node of the R38B "safe windowed refine" route - the variant IAMCCS settled on for adding a stage-2 quality pass over already-rendered H3 footage without risking the seams that killed earlier windowed approaches. It decodes the stage-1 latent to pixels, runs a windowed second-stage refine (the model sees a rolling window of frames - default ~136 with ~22 of overlap - rather than the whole clip at once), and writes each finished segment straight to an MP4 under ComfyUI/output/IAMCCS/MiniMaxH3/R38B/<render_id>/segment_XXXX.mp4.
Why "safe"? The refine machinery is the author's vendored MMH3Tools, whose own docs are unusually candid: the tested, shipped path carries a mask-anchored window through the refine, and the node is full of guard rails that refuse to produce a subtly-broken shot - it refuses an RIFE change (native 24fps preserved), refuses to run before the native checkpoint and R37 latent commit have happened, refuses to overwrite an existing segment, and validates even frame dimensions for the H.264 encoder.
How it works
- Validates state: only
h3_pixel_refine(or off) delivery modes are wired here; RIFE must be off; if the plan enables Face Detailer, the R38B face-windowed variant must have applied it or it errors ("Face Detailer is enabled but not wired"). - Confirms the native checkpoint ran first and the R37 latent was committed - it needs both reports as inputs.
- Unpacks the AV latent, trims the context head, and runs the windowed refine at the stage size - half delivery size if RTX VSR will finish the job, full size otherwise.
- Audio is locked to the native decode (never re-derived from refine windows), so lip-sync survives.
- Streams the refined frames to MP4 per segment, writes metadata, and - with
queue_next_segment- auto-enqueues the next chunk so a full film renders unattended.
Inputs that matter
Required: model, video_vae, sampled_latent, conditioning, cine_linx, native_frames, native_audio, resolved_render_id, native_saved_report, current_segment, total_segments, context_trim_frames, join_trim_frames, and queue_next_segment (default true). The bookkeeping trio (resolved_render_id, native_saved_report, segment counters) all come forceInput from earlier stages - this node is firmly mid-chain on the input side and terminal on the output side.
Outputs
video_path- the segment MP4.report- what the pass did.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/IAMCCS/IAMCCS-nodes.git
MiniMax H3 support in ComfyUI plus the plan's settings do the heavy lifting; the windowed refine tools ship vendored inside the pack (loaded as _iamccs_r38b_mmh3tools, deliberately without running upstream's tokenizer-patching initializer). RTX VSR requires NVIDIA hardware + the RTX runtime if you enable it.
Where people get burned
- Every guard rail is an error message with a fix in it. Read them literally: "R38B must run after the native checkpoint and R37 latent commit", "R38B preserves native 24 fps; RIFE is not wired", "R38B H.264 delivery width and height must be even". These are the author refusing to write a subtly-wrong file, not bureaucracy.
- The no-overwrite rule: a segment MP4 that exists blocks the run. Re-render under a fresh render ID rather than deleting and praying.
- Window settings live in the plan (H3 Settings), not on this node.
window_overlapmust be smaller thanwindow_frames- the node enforces it. - Face Detailer: if you enable it in settings, this node demands the R38B FACE WINDOWS variant ran. There's no silent "skip the face pass" here.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| video_vae | VAE | — | |
| sampled_latent | LATENT | — | |
| conditioning | CONDITIONING | — | |
| cine_linx | IAMCCS_SUPERNODE_LINX | — | |
| native_frames | IMAGE | — | |
| native_audio | AUDIO | — | |
| resolved_render_id | STRING | — | |
| native_saved_report | STRING | — | |
| current_segment | INT | — | |
| total_segments | INT | — | |
| context_trim_frames | INT | — | |
| join_trim_frames | INT | — | |
| queue_next_segment | BOOLEAN | true | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| video_path | STRING | — |
| report | STRING | — |