Extensions/AMD Video Upscaler
ComfyUI Extension

AMD Video Upscaler

ComfyUI nodes for AMD AMF VideoSR/HQ video upscaling through FFmpeg sr_amf.

By Yasei-no-otoko·Created 2 months ago·Updated 16 days ago· 1
Yasei-no-otoko/ComfyUI-AMD-Video-Upscaler
Nodes
On cloudLocal install
Stars1
Updated16 days ago
Readme

ComfyUI AMD Video Upscaler

ComfyUI custom nodes for AMD AMF VideoSR / HQ upscaling through FFmpeg's sr_amf filter.

This project does not call the private Radeon Software "Video Upscaling" playback toggle directly. AMD exposes that feature as an Adrenalin UI feature for video playback, not as a documented frame-processing SDK. The programmable backend here is AMD Advanced Media Framework (AMF), using the public FFmpeg sr_amf filter.

Nodes

  • AMD Video Super Resolution: the main node. Its images, resize_type, quality, and upscaled_images interface matches RTX Video Super Resolution from Comfy-Org/Nvidia_RTX_Nodes_ComfyUI.
  • AMD AMF Video Upscale (Advanced): exposes explicit AMF algorithm, backend, fallback, sharpness, aspect-ratio, FFmpeg path, and timeout controls.
  • AMD AMF Video Upscaler Diagnostics: checks the FFmpeg binary, AMF hwaccel, sr_amf, vpp_amf, and optionally runs a tiny AMF smoke test.

Video Files

Video files are supported with the same component workflow used by the Nvidia RTX node:

Load Video -> Get Video Components -> AMD Video Super Resolution -> Create Video -> Save Video

Connect audio and fps directly from Get Video Components to Create Video. This keeps the source audio and frame rate while only the IMAGE frame batch passes through the upscaler. See example_workflows/amd_amf_video_upscale_video.json for a ready-to-load workflow.

Requirements

  • Windows 10 or Windows 11.
  • AMD Radeon driver with AMF runtime support.
  • An FFmpeg build compiled with AMF filters. The tested local build is ffmpeg 8.1.1-full_build-www.gyan.dev with --enable-amf.
  • ComfyUI with PyTorch and NumPy available.

Check your FFmpeg build:

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

Expected filters:

sr_amf   AMF HQ video upscaling
vpp_amf  AMF video scaling and format conversion

Install

Clone into ComfyUI's custom_nodes directory:

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

Restart ComfyUI, then search for AMD AMF or AMD Video.

If ffmpeg.exe is not on PATH, set the node's ffmpeg_path input to the full path, for example:

C:\Tools\ffmpeg\bin\ffmpeg.exe

Backend Behavior

Both upscale nodes work with RGB ComfyUI image tensors and return an RGB image tensor. This is intentionally compatible with ComfyUI's standard video component nodes and the Nvidia RTX node's video workflow.

The compatible node maps Nvidia's four quality values to FFmpeg AMF algorithms:

  • LOW: bilinear
  • MEDIUM: bicubic
  • HIGH: Video SR1.0 (sr1-0)
  • ULTRA: Video SR1.1 (sr1-1)

The default is ULTRA, matching the Nvidia node. Use the advanced node with sr1-0 when a driver or GPU does not support SR1.1.

Backends:

  • auto: use sr_amf when available.
  • amf_sr: require FFmpeg sr_amf.
  • amf_vpp: require FFmpeg vpp_amf bicubic scaling.
  • cpu_lanczos: use FFmpeg CPU Lanczos scaling.

Fallback policy:

  • error is the default. The node fails if AMF VideoSR is unavailable or fails.
  • amf_vpp_bicubic falls back to AMD AMF VPP bicubic scaling.
  • cpu_lanczos falls back to FFmpeg CPU Lanczos scaling.

The default avoids silently returning a non-VideoSR result when the AMD path is not available.

AMF VideoSR Options

  • sr_algorithm: sr1-0, sr1-1, bicubic, bilinear, or point.
  • sharpness: -1 uses AMF/FFmpeg default. Values 0.0 to 2.0 are passed to sr_amf.
  • resize_mode: scale by multiplier or target dimensions.
  • divisible_by: output dimensions are rounded up. The default 2 keeps NV12 AMF surfaces valid.

Use sr1-0 as the conservative default. sr1-1 exists in current FFmpeg/AMF builds, but users should validate quality and compatibility on their hardware. When sr1-1 is selected, this node uses an RGBA AMF surface path because AMD documents VideoSR1.1 as not supporting NV12/P010 input/output formats.

Limitations

  • Input is converted through 8-bit RGB rawvideo and NV12 AMF surfaces. This is intended for practical image/video-frame upscaling, not HDR or high-bit-depth preservation.
  • Alpha channels are not supported.
  • AMF support depends on GPU, driver, and FFmpeg build.
  • The node invokes FFmpeg as a subprocess. This keeps the package pure Python and ComfyUI-Manager friendly, but it is not zero-copy.
  • Non-Windows support depends on the user's FFmpeg AMF build and AMF runtime availability.

Publishing

This repository includes Comfy Registry metadata in pyproject.toml and a publish workflow at .github/workflows/publish_node.yml.

Before publishing to the registry:

  1. Create or confirm the Comfy Registry publisher id.
  2. If the publisher id is not yasei-no-otoko, update [tool.comfy].PublisherId.
  3. Add REGISTRY_ACCESS_TOKEN as a GitHub Actions repository secret.
  4. Push a version tag, or run the publish workflow manually.

Development

Run local checks from the repository root with the same Python used to launch ComfyUI:

python -m compileall .
python -m pytest -q -c tests\pytest.ini tests

Run a live backend check:

@'
from amd_video_upscaler import probe_ffmpeg, run_smoke_test
print(probe_ffmpeg("ffmpeg"))
print(run_smoke_test("ffmpeg"))
'@ | python -

References

  • AMD AMF SDK: https://gpuopen.com/advanced-media-framework/
  • AMD AMF GitHub repository: https://github.com/GPUOpen-LibrariesAndSDKs/AMF
  • AMD AMF FFmpeg guide: https://github.com/GPUOpen-LibrariesAndSDKs/AMF/wiki/FFmpeg-and-AMF-HW-Acceleration
  • ComfyUI Registry publishing docs: https://docs.comfy.org/registry/publishing
  • Reference NVIDIA node repository: https://github.com/Comfy-Org/Nvidia_RTX_Nodes_ComfyUI