Features
Every user-visible feature, grouped by subsystem.
Upscaling engine
30+ ONNX models
Real-ESRGAN family (x4plus / x2plus / anime), SwinIR (M/L), HAT (S/M/L), EDVR-M, RealBasicVSR, AnimeSR v2, Anime Compact, RIFE frame-interp (v4.7/v4.8/v4.9), FSRCNN, Waifu2x.
4 hardware backends
NVIDIA CUDA + TensorRT, Intel OpenVINO, AMD ROCm, CPU-only. Auto-detected on service startup, routed per-model based on benchmark history.
5 processing strategies
Real-time (per-frame passthrough), Frame-by-Frame (batch of N frames), Batch (multi-segment), Multi-Frame (temporal), Real-Time AI (throttled queue).
Pre-processing cache
Upscaled frames persist to disk keyed by (file hash, model, scale). Replaying a processed video costs zero GPU cycles.
Stream-copy codec path
When you only want filters applied without re-encoding, stream-copy mode keeps the original video bitstream and copies audio 1:1.
Hardware-accel encoder defaults
12 codec options, each with tuned parameters — libsvtav1 -preset 6 -crf 30, libaom-av1 -cpu-used 4, NVENC -cq per H/HEVC/AV1, QSV global_quality.
In-player quick menu
Tabbed overlay
[Models · Filters · Realtime] opens from the Upscaler button next to subtitles. Non-modal — keeps playing while you tune.
Live CSS filter sliders
Brightness · Contrast · Saturation — change the <video> element's CSS filter at 60fps, no server round-trip.
15 preset looks
Cinematic · Vintage · Vivid · Sepia · Cyberpunk · Teal & Orange · Drama · Soft Glow · Sharp HD · Retro Game · Pastel · Noir · Night Vision · Thermal · Custom.
Live status strip
Active-dot + state (ACTIVE/STANDBY/IDLE/DISABLED) + mode (Server/WebGL) + FPS + active model — polls every 500ms while menu is open.
Per-model state icons
Ready · Download · Busy · Error — with inline spinner during load. Menu stays open so you see progress.
Auto-Mode (optional)
Plugin picks model + filter per video based on genre tags. Session-override leaves saved prefs untouched.
Docker AI service
Operator dashboard
Grafana/Linear/Vercel-inspired UI at :5000. Sticky topbar, 4 tabs (Overview/Models/Hardware/API), KPI tiles with tabular-num typography, inline SVG latency sparkline.
OpenAPI explorer
Built-in endpoint browser — every route shown with method+path+tags, pulled from live /openapi.json.
Log streaming console
SSE-based log tail inside the UI — tail the service without docker logs.
Model catalog browser
Live table of the 30+ models with search + status filter, one-click download/load/unload.
Hardware panel
Per-provider chips sourced from /hardware + /gpus. Tells you exactly what Onnxruntime sees.
Live metrics
/metrics endpoint (Prometheus-compatible) with per-model latency, queue depth, VRAM usage.
Library scan & batch processing
Scheduled nightly task
Scan & Upscale Library runs via Jellyfin's scheduler. Daily trigger configurable in standard Jellyfin UI.
Select libraries
Chip-based picker lets you target specific Jellyfin virtual folders — no more "scan everything every night".
Progress-aware
Per-item progress surfaced via Jellyfin's standard scheduled-task UI ([42/70] Processing: ...).
Skip already-upscaled
Output files named *_upscaled.mp4 are detected on re-scan — no duplicate work.
Face restoration (v1.6.1.7+)
GFPGAN v1.4 / CodeFormer
Both models shipped, switchable via config. CodeFormer gives sharper faces; GFPGAN is more forgiving on blurry sources.
Haar-cascade detection
OpenCV face detection runs before the restoration pass. Min face size and max-faces-per-frame configurable.
Feathered alpha-blend
Restored faces are blended back into the upscaled frame with configurable feather width — no hard edges.
Resolution guard
Skip faces below a threshold so you don't waste compute on tiny distant heads.
Comparison view
- Side-by-side before/after extracted directly from FFmpeg — not poster images.
- Works over SMB / network shares via Jellyfin
IMediaEncoderpath resolution. - Pick any model and any filter preset to compare against the raw source.
Internationalisation
The operator-facing UI (both plugin settings and Docker console) ships with six languages out of the box:
EnglishDeutschFrançais中文Русский日本語