Nodes/AMD Video Upscaler/AMD AMF Video Upscale (Advanced)
ComfyUI Node

AMD AMF Video Upscale (Advanced)

Backends, fallbacks, sharpness

By Yasei-no-otoko·Created 2 months ago·Updated 19 days ago· 1
AMD AMF Video Upscale (Advanced)
  • images
  • images
resize_modescale
scale2.00
width1920
height1080
divisible_by2
backendauto
fallback_policyerror
sr_algorithmsr1-0
sharpness-1.00
keep_ratiofalse
fillfalse
ffmpeg_pathffmpeg
timeout_seconds120

The friendly AMD Video Super Resolution node hides a hardcoded decision: ffmpeg on PATH, AMF auto-selected, fail loudly if VideoSR is missing, 120-second timeout, and no way to say otherwise. AMD AMF Video Upscale (Advanced) is the same engine with every one of those knobs exposed. If the main node works, you don't need this one. If the main node doesn't work - or you want to actually control what happens - this is where you land.

It lives in the same AMD Video Upscaler pack (Yasei-no-otoko/ComfyUI-AMD-Video-Upscaler) and is exactly what its display name says: the advanced variant of the AMF hardware upscaler.

The knobs that matter

Most of the fourteen inputs are things you'll touch once, so here's the short list:

  • backend - auto (default, probe and pick), amf_sr (require sr_amf), amf_vpp (AMF VPP bicubic scaling), or cpu_lanczos (CPU fallback). This is the big lever: it decides whether you get true VideoSR output or a plain hardware/CPU scale.
  • fallback_policy - what happens when the chosen backend fails: error (default - fail loudly, no silent downgrade), amf_vpp_bicubic, or cpu_lanczos. The default is a deliberate design choice: silently returning a non-VideoSR result when the AMD path is broken would be worse than an error you actually notice.
  • sr_algorithm - sr1-0 (default, conservative) or sr1-1 (newer, and it switches to an RGBA AMF surface because AMD documents SR1.1 as not supporting NV12/P010). Also bicubic, bilinear, point if you want the filter without the AI-ish label.
  • sharpness - -1 means "use the AMF/FFmpeg default"; otherwise 0.0 to 2.0 gets passed straight to sr_amf. Start at -1, nudge up only if output looks soft.
  • ffmpeg_path - the escape hatch. If ffmpeg.exe isn't on PATH, point this at the full path (C:\Tools\ffmpeg\bin\ffmpeg.exe) and the node stops caring about PATH.
  • timeout_seconds - 120 default, up to 1800. Big batches on slow iGPUs do run long; the node chunks internally to ~16MP output pixels per run, but a full video can still exceed 120s.

Resize controls work like you'd expect: resize_mode picks between scale (a scale float, 0.125–8x) and target_dimensions (width/height ints). divisible_by (default 2) rounds the output up to a multiple - keep it at 2 for valid NV12 AMF surfaces, which is exactly what the default is for. keep_ratio and fill map to sr_amf's own flags.

How it works

One images tensor in, one images tensor out, both RGB, so it slots into the standard video component workflow (Get Video Components → this node → Create Video) with no conversion in between. Internally it builds an FFmpeg filtergraph per backend - format=nv12,hwupload,sr_amf=... for AMF, scale=...:flags=lanczos for the CPU path - and runs ffmpeg as a subprocess with -init_hw_device amf. That's the whole trick, and it means the mechanism is inspectable: set timeout_seconds high and read the error text when it fails.

Install and the gotchas

Same pack install as the sibling nodes - ComfyUI Manager (search "AMD Video Upscaler"), or clone into custom_nodes:

cd ComfyUI/custom_nodes
git clone https://github.com/Yasei-no-otoko/ComfyUI-AMD-Video-Upscaler.git

Restart, then search for AMD AMF. No pip dependencies, but you need Windows 10/11, an AMD driver with AMF runtime, and an FFmpeg build with --enable-amf (the author tests the gyan.dev 8.1.1-full_build). Verify before blaming anything:

ffmpeg -hide_banner -filters | Select-String -Pattern 'sr_amf|vpp_amf'
ffmpeg -hide_banner -hwaccels | Select-String -Pattern '^amf$'

Where people get burned with the advanced node specifically:

  • sr1-1 on unsupported hardware. Older GPUs and some drivers reject it; switch to sr1-0. This is the most common "it worked yesterday" break.
  • AMF minimums. Inputs and outputs must be at least 32×32, and sr_amf refuses to downscale - if you're shrinking, use amf_vpp or cpu_lanczos.
  • auto + error can look like a broken node. auto only picks amf_sr when sr_amf actually exists; if your build lacks it you get an error telling you exactly that. Read it - it's telling you to either fix the build or set a fallback policy.

If you can't tell whether your setup even supports this, run the pack's diagnostics node first. It'll tell you if sr_amf and the AMF hwaccel are there before you start debugging filter graphs.

Categoryimage/upscaling

Inputs (14)

NameTypeDefaultDescription
imagesIMAGE
resize_modeCOMBOscale2 options: scale, target_dimensions
scaleFLOAT2.000.125–8
widthINT19202–16384
heightINT10802–16384
divisible_byINT22–64
backendCOMBOauto4 options: auto, amf_sr, amf_vpp, cpu_lanczos
fallback_policyCOMBOerror3 options: error, amf_vpp_bicubic, cpu_lanczos
sr_algorithmCOMBOsr1-05 options: sr1-0, sr1-1, bicubic, bilinear, point
sharpnessFLOAT-1.00-1–2
keep_ratioBOOLEANfalse
fillBOOLEANfalse
ffmpeg_pathSTRINGffmpeg
timeout_secondsINT1205–1800

Outputs (1)

NameTypeDescription
imagesIMAGE