github JJDizz1L/NuvioLinux v0.1.20-alpha-5
0.1.20-alpha-5

2 hours ago

Nuvio Linux 0.1.20-alpha-5 — render-pipeline upgrade + interaction fixes

This release rebuilds the desktop playback pipeline end-to-end and fixes three
long-standing interaction bugs. All packages are built from the same source
(render-pipeline-upgrade merged to dev), verified per-format before upload.

Render pipeline

  • Direct-write frames: mpv now writes video straight into Skia pixel memory
    (stride-aware via GL_PACK_ROW_LENGTH / SW_STRIDE), deleting the per-frame
    CPU copy (~800 MB/s at 4K24) and one of three per-slot allocations.
  • Event-driven frame pump: the frame producer sleeps until mpv signals a new
    frame (bounded 50 Hz pull) instead of polling at ~1000 wakeups/s — roughly a
    93% reduction in timer wakeups per playing surface, with cadence still locked
    to video FPS (verified 24.0 fps on 24 fps content, both AMD and NVIDIA).
  • Playback-quality telemetry: under NUVIO_MPV_DEBUG=1 the per-second line
    now reports mpv-fps, measured bitrate, decoder drops, mistimed/delayed
    frames; decoder transitions (vaapivaapi-copy, etc.) are logged
    unconditionally the moment they happen.
  • Compatibility Rendering toggle (Settings → Playback → Decoder): forces the
    software render path while keeping decode on the GPU (auto-copy) — a last
    resort for broken GPU driver stacks.

Fixes

  • Preferred audio/subtitle tracks now apply reliably on slow-opening
    sources: selection retries key on mpv FILE_LOADED and re-apply opportunistically
    until they latch, instead of giving up after ~3 s from player open
    (previously the container-default track — e.g. French on MULTI releases —
    played for the whole session).
  • Volume slider / seek / track switching latency: queued mpv commands now
    apply within ~1–2 ms instead of waiting up to 250 ms in the event loop;
    slider drags no longer trail the pointer audibly.
  • Cursor idle-hide: hero/trailer preview surfaces no longer fight the main
    player over the window cursor — the idle timeout is deterministic even while
    previews play.

Notes

  • If your ~/.config/mpv/mpv.conf sets alang=…, mpv's own default selection
    masks Nuvio's per-track selection; language preferences are applied by the app
    after load either way.
  • Dolby Vision HEVC sources that fail zero-copy import now fall back to
    vaapi-copy automatically (existing behavior, verified on RDNA4 with this release).

All commits since 0.1.20-alpha-4

521cf7d fix(player): cursor idle-hide ownership — passive surfaces opt out @JJDizz1L
c5ec5da perf(player): wake event loop on queued commands — immediate apply @JJDizz1L
8ec773a fix(player): apply preferred audio/subtitle tracks whenever tracks appear @JJDizz1L
a9a0671 feat(player): Compatibility Rendering toggle — SW render + copy-back decode (render-pipeline phase 4) @JJDizz1L
c7010d2 feat(player): event-driven frame pump via mpv update callback (render-pipeline phase 2) @JJDizz1L
0d8d8e0 feat(player): direct-write render into Skia pixel memory (render-pipeline phase 1) @JJDizz1L
f1ab550 feat(player): playback-quality telemetry + decoder transition logging (render-pipeline phase 3) @JJDizz1L

Don't miss a new NuvioLinux release

NewReleases is sending notifications on new releases.