rocksdanister/lively · error · DepreciatedException

libmpvExt depreciated player selected.

Error message

libmpvExt depreciated player selected.

What it means

Thrown by WallpaperPluginFactory when Settings.VideoPlayer == LivelyMediaPlayer.libmpvExt, another deprecated external-libmpv backend. Same DepreciatedException mechanism as error 17; it blocks video wallpaper playback.

Source

Thrown at src/Lively/Lively/Factories/WallpaperPluginFactory.cs:85

                                lpFactory.CreateLivelyPropertyFolder(model, display, arrangement, userSettings),
                                GetWebView2UserDataDir(arrangement, display, isWindowed),
                                userSettings.Settings.ApplicationTheme,
                                userSettings.Settings.AudioVolumeGlobal,
                                GetWebView2Scale(display, isWindowed),
                                userSettings.Settings.VisualizerAudioDeviceId);
                    }
                    break;
                case WallpaperType.video:
                    //How many videoplayers you need? Yes.
                    switch (userSettings.Settings.VideoPlayer)
                    {
                        case LivelyMediaPlayer.wmf:
                            return new VideoWmfProcess(model.FilePath, model,
                                display, 0, userSettings.Settings.WallpaperScaling);
                        case LivelyMediaPlayer.libmpv:
                            throw new DepreciatedException("libmpv depreciated player selected.");
                        case LivelyMediaPlayer.libmpvExt:
                            throw new DepreciatedException("libmpvExt depreciated player selected.");
                        case LivelyMediaPlayer.libvlc:
                            throw new DepreciatedException("libvlc depreciated player selected.");
                        case LivelyMediaPlayer.libvlcExt:
                            return new VideoLibVlcPlayer(model.FilePath,
                                model,
                                display,
                                lpFactory.CreateLivelyPropertyFolder(model, display, arrangement, userSettings),
                                userSettings.Settings.ApplicationTheme,
                                userSettings.Settings.AudioVolumeGlobal,
                                userSettings.Settings.VideoPlayerHwAccel);
                        case LivelyMediaPlayer.mpv:
                            return new VideoMpvPlayer(model.FilePath,
                                model,
                                display,
                                lpFactory.CreateLivelyPropertyFolder(model, display, arrangement, userSettings),
                                userSettings.Settings.VideoPlayerHwAccel,
                                isWindowed: isWindowed,
                                userSettings.Settings.VideoTargetColorSpaceMode);

View on GitHub (pinned to c1036feb66)

Solutions

  1. Switch VideoPlayer to wmf, mpv, or libvlcExt.
  2. Sanitize persisted settings on load: remap any deprecated value to a supported default.
  3. Catch DepreciatedException at the launch boundary and surface a 'player no longer available, choose another' dialog.

Example fix

// before
case LivelyMediaPlayer.libmpvExt:
    throw new DepreciatedException("libmpvExt depreciated player selected.");

// after — remap to mpv at settings-load time instead
static LivelyMediaPlayer Sanitize(LivelyMediaPlayer p) => p switch {
    LivelyMediaPlayer.libmpv or LivelyMediaPlayer.libmpvExt => LivelyMediaPlayer.mpv,
    _ => p,
};
Defensive patterns

Strategy: fallback

Validate before calling

var player = userSettings.Settings.VideoPlayer;
if (player is LivelyMediaPlayer.libmpvExt or LivelyMediaPlayer.libmpv or LivelyMediaPlayer.libvlc)
{
    userSettings.Settings.VideoPlayer = LivelyMediaPlayer.mpv;
    await userSettings.SaveAsync();
}

Type guard

static bool IsSupportedVideoPlayer(LivelyMediaPlayer p)
    => p is LivelyMediaPlayer.wmf or LivelyMediaPlayer.mpv or LivelyMediaPlayer.libvlcExt;

Try / catch

try { return factory.CreateVideoPlayer(model, display, arrangement); }
catch (DepreciatedException ex) when (ex.Message.Contains("libmpvExt"))
{ userSettings.Settings.VideoPlayer = LivelyMediaPlayer.mpv; return factory.CreateVideoPlayer(model, display, arrangement); }

Prevention

When it happens

Trigger: Loading a video wallpaper with VideoPlayer set to libmpvExt — the factory's libmpvExt case throws.

Common situations: Carried-over settings from a version that shipped libmpvExt; manual settings edit; the external mpv build was removed from the app.

Related errors


AI-assisted analysis of rocksdanister/lively@c1036feb66 (2026-08-13). Data as JSON: /api/errors/05d61412edc57eca. Report an issue: GitHub.