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?