VOID PQ5 Sampler
The node that actually regenerates your video
- model
- encoded_video
- encoded_quadmask
- prompt_embeds
- negative_prompt_embeds
- settings
- latents
Everything before this node has been preparation - masks, prompts, embeddings. This is the payoff: the node that runs the CogVideoX-based VOID inpainting pipeline and produces the latents your regenerated video will come from. If you've built the full VOID graph, this is where the machine actually turns on and the GPU starts earning its keep.
It's the densest node in the pack, but the shape is familiar if you've used any image-to-image sampler: take the encoded input (video + mask), the prompt embeddings, a handful of sampling controls, and get latents back. The one thing it doesn't do is decode - VOID PQ5 Decode Video handles that, because in the two-pass workflow you want to feed pass-1's video back in as the pass-2 input, and keeping latents separate makes that plumbing clean.
How it works
It calls the pipeline with use_trimask=True, passing the encoded video, the encoded quadmask, and both prompt embeddings. The model family's config flags (zero-out the mask region, VAE mask handling, whether to skip the UNet for the first pass) come from the loaded model bundle, not from this node's inputs - so the pipeline behavior is tied to what VOID PQ5 Load Model built. A few validation checks run before sampling: video and mask must have identical frame counts, and the mask resolution must be divisible by 8. Both throw clear errors.
The inputs that matter
model,encoded_video,encoded_quadmask,prompt_embeds,negative_prompt_embeds- all wires from the encode/load stage. The frame-count mismatch error between video and mask is the classic here; see the quadmask node's gotchas.num_inference_steps(INT, default 50) - sampling steps.guidance_scale(FLOAT, default 1.0) - remember, this model family is tuned around low/zero CFG; it's not SD's 7.strength(FLOAT, default 1.0) - how much of the source video's latents survive. 1.0 = full regeneration; for pass 2 you typically lower this so the refinement stays close to pass 1.seed(INT, default 42) - reproducibility.settings(optionalPQ5_SETTINGS) - if connected, overrides the four direct sampling inputs with the bundle's values.
Output: a single latents (PQ5_LATENTS) → VOID PQ5 Decode Video.
Install & gotchas
Pack standard (Manager → "ComfyUI-NetflixVoid", or clone into custom_nodes). No downloads of its own; needs the loaded pipeline, and heavy VRAM/CPU-offload behavior comes from the model bundle.
This is the slow node. A 5B transformer at 384×672 over ~50 steps is minutes of sampling, even with the float8/offload defaults. Expect it, and don't read a queue that never ends as a crash. Two things to keep in sync across the graph: guidance between this node and VOID PQ5 Encode Prompt (they encode whether CFG is on), and the length settings between the video and quadmask encoders. If you changed strength for pass 2, that belongs here (or in a settings bundle), not on pass 1.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| model | PQ5_MODEL | — | |
| encoded_video | PQ5_VIDEO_TENSOR | — | |
| encoded_quadmask | PQ5_MASK_TENSOR | — | |
| prompt_embeds | PQ5_PROMPT_EMBEDS | — | |
| negative_prompt_embeds | PQ5_PROMPT_EMBEDS | — | |
| num_inference_steps | INT | 501–300 | — |
| guidance_scale | FLOAT | 1.00–30 | — |
| strength | FLOAT | 1.000–1 | — |
| seed | INT | 420–2147483647 | — |
| settingsopt | PQ5_SETTINGS | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| latents | PQ5_LATENTS | — |