{"record":{"id":"05d61412edc57eca","repo":"rocksdanister/lively","slug":"libmpvext-depreciated-player-selected","errorCode":null,"errorMessage":"libmpvExt depreciated player selected.","messagePattern":"libmpvExt depreciated player selected\\.","errorType":"exception","errorClass":"DepreciatedException","httpStatus":null,"severity":"error","filePath":"src/Lively/Lively/Factories/WallpaperPluginFactory.cs","lineNumber":85,"sourceCode":"                                lpFactory.CreateLivelyPropertyFolder(model, display, arrangement, userSettings),\n                                GetWebView2UserDataDir(arrangement, display, isWindowed),\n                                userSettings.Settings.ApplicationTheme,\n                                userSettings.Settings.AudioVolumeGlobal,\n                                GetWebView2Scale(display, isWindowed),\n                                userSettings.Settings.VisualizerAudioDeviceId);\n                    }\n                    break;\n                case WallpaperType.video:\n                    //How many videoplayers you need? Yes.\n                    switch (userSettings.Settings.VideoPlayer)\n                    {\n                        case LivelyMediaPlayer.wmf:\n                            return new VideoWmfProcess(model.FilePath, model,\n                                display, 0, userSettings.Settings.WallpaperScaling);\n                        case LivelyMediaPlayer.libmpv:\n                            throw new DepreciatedException(\"libmpv depreciated player selected.\");\n                        case LivelyMediaPlayer.libmpvExt:\n                            throw new DepreciatedException(\"libmpvExt depreciated player selected.\");\n                        case LivelyMediaPlayer.libvlc:\n                            throw new DepreciatedException(\"libvlc depreciated player selected.\");\n                        case LivelyMediaPlayer.libvlcExt:\n                            return new VideoLibVlcPlayer(model.FilePath,\n                                model,\n                                display,\n                                lpFactory.CreateLivelyPropertyFolder(model, display, arrangement, userSettings),\n                                userSettings.Settings.ApplicationTheme,\n                                userSettings.Settings.AudioVolumeGlobal,\n                                userSettings.Settings.VideoPlayerHwAccel);\n                        case LivelyMediaPlayer.mpv:\n                            return new VideoMpvPlayer(model.FilePath,\n                                model,\n                                display,\n                                lpFactory.CreateLivelyPropertyFolder(model, display, arrangement, userSettings),\n                                userSettings.Settings.VideoPlayerHwAccel,\n                                isWindowed: isWindowed,\n                                userSettings.Settings.VideoTargetColorSpaceMode);","sourceCodeStart":67,"sourceCodeEnd":103,"githubUrl":"https://github.com/rocksdanister/lively/blob/c1036feb664960722e34bf4309042c247d6a909d/src/Lively/Lively/Factories/WallpaperPluginFactory.cs#L67-L103","documentation":"Thrown by WallpaperPluginFactory when Settings.VideoPlayer == LivelyMediaPlayer.libmpvExt, another deprecated external-libmpv backend. Same DepreciatedException mechanism as error 17; it blocks video wallpaper playback.","triggerScenarios":"Loading a video wallpaper with VideoPlayer set to libmpvExt — the factory's libmpvExt case throws.","commonSituations":"Carried-over settings from a version that shipped libmpvExt; manual settings edit; the external mpv build was removed from the app.","solutions":["Switch VideoPlayer to wmf, mpv, or libvlcExt.","Sanitize persisted settings on load: remap any deprecated value to a supported default.","Catch DepreciatedException at the launch boundary and surface a 'player no longer available, choose another' dialog."],"exampleFix":"// before\ncase LivelyMediaPlayer.libmpvExt:\n    throw new DepreciatedException(\"libmpvExt depreciated player selected.\");\n\n// after — remap to mpv at settings-load time instead\nstatic LivelyMediaPlayer Sanitize(LivelyMediaPlayer p) => p switch {\n    LivelyMediaPlayer.libmpv or LivelyMediaPlayer.libmpvExt => LivelyMediaPlayer.mpv,\n    _ => p,\n};","handlingStrategy":"fallback","validationCode":"var player = userSettings.Settings.VideoPlayer;\nif (player is LivelyMediaPlayer.libmpvExt or LivelyMediaPlayer.libmpv or LivelyMediaPlayer.libvlc)\n{\n    userSettings.Settings.VideoPlayer = LivelyMediaPlayer.mpv;\n    await userSettings.SaveAsync();\n}","typeGuard":"static bool IsSupportedVideoPlayer(LivelyMediaPlayer p)\n    => p is LivelyMediaPlayer.wmf or LivelyMediaPlayer.mpv or LivelyMediaPlayer.libvlcExt;","tryCatchPattern":"try { return factory.CreateVideoPlayer(model, display, arrangement); }\ncatch (DepreciatedException ex) when (ex.Message.Contains(\"libmpvExt\"))\n{ userSettings.Settings.VideoPlayer = LivelyMediaPlayer.mpv; return factory.CreateVideoPlayer(model, display, arrangement); }","preventionTips":["Sanitize persisted settings on load, remapping deprecated players.","Limit the settings UI to currently shipped backends.","Auto-recover on DepreciatedException so users aren't stuck."],"tags":["deprecated","config","video-player","settings","wallpaper"],"backgroundTag":null,"analyzedSha":"c1036feb664960722e34bf4309042c247d6a909d","analyzedAt":"2026-08-13T13:03:12.648Z","schemaVersion":2},"datasetVersion":"2026-08-13T14:17:21.547Z"}