Nodes/AP Netflix VOID/VOID Latent → Image (AP)
ComfyUI Node

VOID Latent → Image (AP)

Re-decoding without burning another sampling pass

By adampolczynski·Created 5 months ago·Updated 5 months ago· 7
VOID Latent → Image (AP)
  • vae
  • latent
  • image

Here's the thing about VoidSampler: it already returns an IMAGE output, so at first glance this node looks redundant. It kind of is - until it isn't. VoidLatentToVideo takes a LATENT and a VOID_VAE and decodes the latent back to frames without re-running the sampler. Its whole job is to separate the expensive part (the DDIM loop) from the cheap part (the VAE decode) so you can do the cheap part as many times as you like.

When does that actually matter? The realistic case is iterating. Say you've run a 50-step, multi-frame sample and want to inspect the result - the sampler's own image output gives you that. But if you cached the latent, or you're building a workflow where you sample once and want to compare decodes, or you saved the latent to disk mid-graph and want to look at it later, this node is the clean way back to pixels. It's also a nice debugging split: if the decode looks wrong, you can isolate whether the problem is the latent (re-sample) or the VAE/decode path (re-decode this same latent) instead of re-running everything to find out.

Mechanically it's a thin wrapper around the same 3D VAE decode the sampler uses. It reads the LATENT dict, reshapes the frame stack - [B*T, 16, Lh, Lw] - back into a 5D video latent [B, 16, T, Lh, Lw], and pushes it through the CogVideoX VAE to IMAGE. The two inputs are vae (the VOID_VAE from VoidVAELoader) and latent (the latent output of VoidSampler). One output: image.

The one real gotcha hides in that LATENT. VoidSampler tucks its temporal shape into the latent dict as void_T/void_B metadata, and this node reads those to know how to reshape the frame stack back into video form. Feed it a latent that didn't come from VoidSampler - a plain ComfyUI latent from elsewhere - and those keys default to 1, which means it'll treat the whole stack as a single-frame latent and give you a nonsense decode. So the rule is simple: this node pairs with this pack's sampler output, not any arbitrary latent.

Install is the shared pack story - ComfyUI Manager → search "AP Netflix VOID", or git clone https://github.com/adampolczynski/AP_Netflix_VOID into ComfyUI/custom_nodes, then restart. No pip packages; the downloads are the VOID checkpoint, the CogVideoX VAE, and T5-XXL. One honest framing note: in a stock workflow you may never need this node, because the sampler hands you the image directly. It exists for the workflow builders and the debuggers - and for anyone who'd rather pay for one decode than another full sampling pass. Keep it in the back of your mind for when you start restructuring graphs, not for your first run.

CategoryAP/VOID

Inputs (2)

NameTypeDefaultDescription
vaeVOID_VAE
latentLATENT

Outputs (1)

NameTypeDescription
imageIMAGE