MiniMax H3 R38 Upscaled Chunk Accumulator
Parking upscaled chunks to disk so the master only assembles when it's ready
- cine_linx
- native_visible_frames
- upscaled_frames
- motion_state
- frames
- master_ready
- report
A long H3 shot refined through latent upscale is generated in pieces - you cannot hold a multi-thousand-frame master in VRAM while you refine segment 7 of 20. So IAMCCS parks each refined, decoded segment to disk and assembles the full master only when the last segment lands. This node is that parking lot and that assembler, and it's the R38 equivalent of a video checkpoint.
When upscale is enabled, every segment's visible frames get written as a .pt file under ComfyUI/output/minimax_h3_shotboard/r38_latent_upres/<render_id>/segment_XXXXX.pt. Early segments return with master_ready = False. On the final segment it verifies every part is on disk (missing one → hard error listing the gaps), then loads and stitches them with overlap crossfades where the plan joins chunks, and returns the assembled master with master_ready = True.
How it works
- Reads the shot plan off
cine_linx. If latent upres isn't enabled, this node is a transparent bypass - native frames straight through,master_ready = False, report says "bypassed". - When enabled, its
upscaled_framesinput is lazy: the node first checks the plan, and only requests the expensive upscale branch if upscale is genuinely on. No upscale run happens in native mode. - Trims the context head off each decoded chunk (the
trim_head_frames, or the motion-context trim if a native AV context is active), trims overlap ifjoin_trim_framessays so, and saves. - Assembly crossfades overlapping seams with a linear alpha ramp so joins don't show a hard cut. That's the detail that keeps a 20-chunk master from looking like 20 glued-together clips.
- Final step: if RTX wasn't requested, it does an exact center-crop to
delivery_width/delivery_height; if RTX was requested it keeps the intermediate master because the RTX stage expects the un-cropped frames.
Inputs
Required: cine_linx, native_visible_frames, current_segment, total_segments, trim_head_frames, resolved_render_id, delivery_width, delivery_height. Optional: upscaled_frames (lazy), join_trim_frames, motion_state.
current_segment / total_segments / resolved_render_id are forceInput - they come from the run queue, not from typing.
Outputs
frames- this segment's chunk (early), or the full assembled master (last segment).master_ready- the boolean the downstream delivery router watches.report- status including the park path or assembly summary.
Install
Pack install (git clone https://github.com/IAMCCS/IAMCCS-nodes.git), MiniMax H3 support, the upscaler checkpoint, and - for the crossfade-free native path - nothing extra.
Where people get burned
- "R38 cannot assemble upscaled master; missing segments" - usually a crash or manual interruption mid-run, or someone deleted the
.ptpark directory. The node is strict by design: it will not assemble a partial master. - The
.ptfiles are real state. Restarting ComfyUI mid-run is fine (they're on disk), but clearingoutput/minimax_h3_shotboard/r38_latent_upreswhile a chain is queued guarantees a missing-segment error. - Wire
delivery_width/delivery_heightfrom the Control node, don't hard-type them; a mismatch with the plan silently center-crops wrong. - It's an output node in the "returns results" sense but writes
.pt, not video. The actual MP4 comes from the delivery/editor stages aftermaster_readygoes true.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| cine_linx | IAMCCS_SUPERNODE_LINX | — | |
| native_visible_frames | IMAGE | — | |
| current_segment | INT | — | |
| total_segments | INT | — | |
| trim_head_frames | INT | — | |
| resolved_render_id | STRING | — | |
| delivery_width | INT | — | |
| delivery_height | INT | — | |
| upscaled_framesopt | IMAGE | — | |
| join_trim_framesopt | INT | 0 | — |
| motion_stateopt | IAMCCS_H3_MOTION_CONTEXT | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| frames | IMAGE | — |
| master_ready | BOOLEAN | — |
| report | STRING | — |