DEV Community

Cover image for A Linux video player with NVIDIA VFX VSR support (real-time upscaling + frame interpolation, built with an AI coding agent)
zhangmq
zhangmq

Posted on Originally published at zhangmq.github.io

A Linux video player with NVIDIA VFX VSR support (real-time upscaling + frame interpolation, built with an AI coding agent)

Short version of a recent write-up — no full article here, just the pitch.

I wanted RTX VSR-class upscaling on Linux, where NVIDIA only opens it to Windows. So an AI coding agent and I built a video player around the NVIDIA Video Effects SDK: real-time AI upscaling + RIFE frame interpolation, wired into a patched libmpv as custom VF filters, with a Qt frontend.

Highlights:

  • The models behind RTX VSR, working in userspace on Linux — the VSR effect from NVIDIA's Video Effects SDK, no driver-level path (that one is Windows-only)
  • mpv-vsr: a standalone mpv CLI carrying the same AI filters — drop-in compatible with existing mpv workflows (scripts, yt-dlp, external tools)
  • Everything after decode stays on the GPU — CUDA-Vulkan interop, no per-frame CPU round-trips
  • One TensorRT engine file covers RTX 30/40/50 for frame interpolation

Links:

Full disclosure: this was developed with heavy AI assistance (Claude Code driving a DeepSeek model) — I directed and verified. Needs an NVIDIA GPU (RTX 20+ for upscaling, RTX 30+ for interpolation), driver 570+, Qt 6.11+. Hobby project, expect rough edges — feedback welcome!

Top comments (2)

Collapse
 
reidmarlow profile image
Reid Marlow

This is the kind of agent-built project I trust more when the constraints are visible. Keeping decode, VSR, RIFE, and presentation on the GPU is the hard engineering part. The AI-assistance note is useful too, because the repo still has to prove the frame path with actual latency and sync behavior.

Collapse
 
alexshev profile image
Alex Shev

The interesting part is not just adding VSR, it is making the playback path feel normal while AI enhancement is doing real work underneath. For a video player, the product test is latency and predictability: can users scrub, resize, and switch sources without the AI layer becoming the thing they notice first?