Nodes/ComfyUI-DisPose/Decoder_DisPose
ComfyUI Node

Decoder_DisPose

Decoder_DisPose is the boring node at the end of your DisPose workflow — and that's a compliment

By bombax-xiaoice·Created 2 years ago·Updated about a year ago· 0
Decoder_DisPose
  • pipe
  • latent
  • image
decode_chunk_size1

You drag a workflow for ComfyUI-DisPose into the canvas and you see three nodes: Loader, Sampler, Decoder. Sampler_DisPose does all the dramatic work. Decoder_DisPose just sits there at the end, one wire in, one wire out. Good. That's exactly what a decoder should be - the last node you touch, and the one you never have to think about twice.

What it actually does

DisPose generates video as a latent, not as pixels. After Sampler_DisPose finishes its denoising loop you're holding a stack of latents that no image node can display. Decoder_DisPose is the missing half of that pipeline: it runs the SVD XT 1.1 VAE (which the loader already put inside the pipe) over your latent and returns real, viewable frames.

Mechanically it's the standard SVD decode - divide the latent by the VAE's scaling_factor, call vae.decode, postprocess back into 0–255 RGB - but it does it in chunks. It walks through the latent one decode_chunk_size-sized batch at a time and stitches the results. That chunking exists for one reason: keeping a long clip's worth of frames from blowing your VRAM during decode.

The inputs that matter

Only three, and you can leave two of them alone:

  • pipe - the DisPosePipeline output from (Down)Loader_DisPose. You can't fake this; it carries the VAE.
  • latent - the LATENT output from Sampler_DisPose. This is the one wire you must actually connect.
  • decode_chunk_size (default 1, range 1–64) - frames decoded per chunk. The author's tooltip is refreshingly honest: no quality impact, larger size is slightly faster but consumes more vram. Start at 1; if decode is the slow part of your run (it usually isn't - sampling is), nudge it up and watch VRAM.

Output

One output, image, typed IMAGE - a batch of frames, one per video frame in order. Wire it into VHS_VideoCombine from VideoHelperSuite to write an actual .mp4 (that's what the pack's example workflow does), or into a PreviewImage node if you just want to eyeball the result. You can also route it into a repaint pass - the DisPose README's own advice is to feed the output back through a newer model or a FaceDetailer pass if faces look mushy, and the frames come out of here as clean, sequential images that make that easy.

Installing the pack

The decoder is part of the three-node pack, so you install the whole thing:

cd ComfyUI/custom_nodes
git clone https://github.com/bombax-xiaoice/ComfyUI-DisPose
cd ComfyUI-DisPose && pip install -r requirements.txt

ComfyUI Manager works too - search "ComfyUI-DisPose". Restart ComfyUI afterward. Note the heavy part: this pack pulls down six model components (SVD XT 1.1, SD 1.5, DisPose, MimicMotion, DWPose, CMP), tens of gigabytes in total. (Down)Loader_DisPose auto-downloads whatever's missing on first run, so your first execute will look frozen while it fills the disk. That's normal.

Troubleshooting

The decoder has one failure mode and one knob: if you OOM during decode, drop decode_chunk_size back to 1. Nothing else on this node will surprise you. If you're OOMing in the sampler instead, that's a cpu_offload problem, not a decoder problem - the README's ladder is model offload first, then sequential if you're still stuck.

It's not glamorous, but every frame of every DisPose video you'll ever make comes out of this node. Treat it well.

CategoryDisPose

Inputs (3)

NameTypeDefaultDescription
pipeDisPosePipelineoutput from (Down)Loader_DisPose
latentLATENT
decode_chunk_sizeINT11–64no quality impact, larger size is slightly faster but consumes more vram

Outputs (1)

NameTypeDescription
imageIMAGE