
Kodi 22 "Piers" RC 1
Team Kodi
Announcing the first release candidate of Kodi 22 "Piers"!
Since leaving beta, we've been focusing on fixing reported issues and polishing new features. Now, we feel like we've reached the final state we want to ship for v22. We're still tracking a few bugs, but these are mostly contained to the shiny new features introduced in v22.
It's been over two years since the initial Kodi 21 "Omega" release, so before diving into the complete changelog, here are a few highlights from Piers.
Better HDR and video playback
Piers brings major HDR improvements across platforms, including HDR overlays and UHD PGS subtitles, improved subtitle colour handling, HDR-to-SDR subtitle tone mapping, and an upgrade to FFmpeg 9.
Blu-ray got a lot smarter
Blu-ray movie and episode detection has been substantially improved, with better playlist matching, episode handling, library integration and disc navigation.
Games got a major upgrade
RetroPlayer gained shader support, new scaling options, better multi-disc handling, RetroAchievements support, a new cheat engine, and OpenGL hardware rendering for 3D games.
Lots more across Kodi
Piers also brings improvements to the video library and Movie Versions, PVR, Android, webOS and Apple platforms, along with new capabilities such as Android deep links, SVG support and the beginnings of WebAssembly support.
And that's just the short version. Here's the complete changelog for RC 1:
Changes since v22 Beta 2
Video
- Upgraded FFmpeg to v9.0.2
- Improved handling of near-standard video frame rates
- Improved stream parameter detection when reopening streams
- Improved detection of PVR, live TV, and other streaming content
- Improved HQ scaler selection for stereoscopic video
- Fixed hangs when opening incomplete or unresponsive video files
- Fixed excessive scanning when seeking past the end of a file
- Fixed playback timing when streams temporarily lack timestamps
- Fixed incorrect cache state detection for real-time streams
- Fixed high CPU usage when a video or audio source starves
- Fixed display latency being lost while paused on hardware-plane renderers
- Fixed pixel format reporting for some hardware decoders
- Fixed handling of malformed NAL units in corrupt streams
- Fixed watched-mode handling while browsing Videos
- Fixed playback shutdown and player-closing races
- Fixed possible crash when closing Kodi during video playback
- Fixed black screen after changing display resolution while paused on GLES
- Fixed stale video widgets after media details change
- Fixed generated video thumbnails using the wrong path
- Fixed video thumbnails and default icons restored from library imports
- Fixed file orientation and centre-mix metadata being lost after settings updates
- Hardened video stacking against malformed and unusual paths
HDR and Subtitles
- Improved HDR PGS subtitle colour handling
- Added support for HDR overlays, including UHD PGS subtitles
- Improved PGS subtitle colour conversion using the video's actual colorimetry
- Added HDR-to-SDR tone mapping for PGS subtitles on Windows
- Fixed HDR PGS subtitle rendering across GLES platforms
- Fixed translucent GUI elements being composited at the wrong opacity over HDR video
- Fixed 3D side-by-side PGS subtitles
- Fixed forced subtitles not replacing subtitles hidden because they matched the audio language
- Fixed subtitle browsing for streams outside configured media sources
- Improved HDR type reporting on DRM PRIME platforms
- Upgraded libass to v0.17.5
Blu-ray and Discs
- Improved Blu-ray movie and episode playlist matching using disc authoring metadata
- Improved Blu-ray episode matching heuristics
- Improved Blu-ray playlist handling and internal cleanup
- Added M2TS aspect-ratio detection
- Added indication of Blu-ray playlists already assigned while using the simple menu
- Fixed refreshing Blu-ray information and missing stream details
- Fixed updating and cleaning library entries containing Blu-ray content
- Fixed import/export of folder stacks containing Blu-ray playlists
- Fixed deadlock while probing optical discs
- Fixed the wrong optical disc being played from the context menu
- Fixed ejecting the wrong optical drive
- Fixed startup crash on Windows when a DVD is already in the drive
- Improved Windows optical-drive state caching and detection
- Avoided unnecessary volume reads while enumerating Windows optical drives
- Delayed Windows disc probing until the required services are initialized
- Fixed discs opened through their own VFS protocol not being classified as video
Audio
- Added audio-stream switching to PAPlayer
- Improved recovery when an HDMI receiver temporarily disappears
- Fixed ALSA error recovery
- Improved XAudio device capability handling across device re-enumeration
- Fixed a VideoPlayer audio regression that could affect playback when the sink had nothing to wait on
- Added additional AudioEngine bitstream-packer test coverage
Music and Audiobooks
- Added ReplayGain support for Matroska audio
- Restored Nero chapter metadata support for audiobooks
- Fixed artist discography information being lost in several update paths
- Fixed ID3 tag reading from MP2 files
- Improved music GUI performance by loading tags and artwork only when required
- Simplified music scraping job scheduling
PVR
- Fixed EPG timestamps so they remain valid beyond 2038
- Fixed MySQL/MariaDB EPG searches omitting programmes on the final day of a date range
- Fixed a five-second suspend delay when no PVR client is enabled
- Fixed missing PVR add-ons blocking callers while reporting an error
- Improved retrieval of video-library metadata for recording folders
- Improved language-code documentation used by PVR providers
Games
- Added a cheat engine to RetroPlayer
- Added hardware rendering for game clients with Game API 8.2.0
- Expanded RetroAchievements with Encore mode, on-screen indicators, and leaderboards
- Improved RetroAchievements login error messages
- Added support for game add-ons to explicitly identify their platforms
- Added disc state to savestates and the rewind buffer
- Improved game launching from My Games to avoid blocking the UI
- Improved launching of plugin-provided games using their resolved paths
- Fixed major RetroPlayer stuttering
- Fixed rewind buffer sizing
- Fixed savestate selection after deleting a savestate
- Fixed black screen after selecting Reset from the in-game OSD
- Fixed paused-frame caching with DMA-backed video memory
- Fixed DirectX shader input and resource handling
- Fixed GLSL shader failure handling
- Fixed GLES software-frame texture handling
- Fixed in-game menu actions operating on the wrong item
- Avoided unnecessary add-on repository access when the required emulator is already known
- Changed rewind to default to Off
- Improved the game OSD layout in Estuary
- Fixed controller capture dialog headings disappearing while listening for input
Library and Sources
- Improved video scraping performance
- Improved video database episode lookup performance
- Improved audio-language display in the video library
- Improved Video Versions presentation in Estuary
- Improved media flag and version stream-detail ordering
- Added Year as a fallback when Premiered information is unavailable
- Fixed play status for archive contents played from Videos > Files outside a configured source
- Fixed directory artwork being lost when file lists are replaced
- Fixed library import saving broken thumbnails or default icons
- Fixed video widgets not refreshing after media details change
- Improved multi-path source enumeration without unnecessary progress dialogs
- Fixed top-level
special://locations being lost from navigation history - Added the Profile directory as an accessible source on all platforms
- Improved video NFO export of default version information
UI
- Fixed excessive CPU use when progress dialogs are opened from background threads
- Fixed Page Up/Down movement in fixed lists with a custom focus position
- Fixed panel scrollbar page sizing
- Fixed focus restoration occurring before a window has finished initializing
- Fixed widget directory jobs being incorrectly reused with different options
- Fixed a crash caused by concurrent GUI info-label access
- Fixed windows losing their identity when their XML file is unavailable
- Fixed the default focus in the media source dialog
- Fixed the default icon for video extras
- Added support for enabled resource-font add-ons registering their own fonts
- Added
Player.SeekStepValuefor skins - Added a localized label for the Donate button in System Settings
Skinning
- Redesigned Estuary media flags with improved context and grouping icons
- Improved Stream Selection flag consistency
- Improved Video Versions presentation
- Improved the game OSD layout
- Polished the add-on settings dialog for expanded game add-on settings
- Improved version stream-detail ordering
- Added Year fallback where Premiered metadata is unavailable
Add-ons and Python
- Fixed script add-on arguments being lost during execution
- Fixed
Addons.ExecuteAddonwait handling - Fixed script waiting after modal add-on installation
- Fixed add-on search crashes
- Fixed Python
getControl()handling of skin toggle buttons - Fixed ownership of objects returned in Python lists
- Fixed Python containers returning
noneincorrectly in several cases - Added support for bytes where Python APIs expect strings
- Restored
xbmc.__version__to 3.1.0 - Added HDR detail information to Python
VideoStreamDetail - Added script execution duration to Python invoker logging
- Modernized Python binding generation to use SWIG directly
JSON-RPC
- Improved
Files.GetDirectoryto return library metadata when available - Fixed playlist position remaining stale after its playlist is cleared
- Fixed
JSONRPC.SetConfigurationdropping configuration namespaces it did not enumerate
Network and UPnP
- Fixed a race and possible use-after-free while refreshing network interfaces
- Fixed SMB shares becoming unreachable when a hostname resolves to a loopback address
- Fixed SMB seeking after a connection reset
- Improved network ping fallback on systems without permission to open ICMP sockets
- Fixed playback to UPnP renderers that do not send ConnectionManager events
- Fixed a UPnP file-server path traversal vulnerability
- Removed finite-field Diffie-Hellman cipher suites from Kodi's web server
- Stopped TLS record contents from appearing in Curl debug logging
- Fixed AirPlay photo-cache cleanup unnecessarily opening archive files
- Updated libmicrohttpd from v1.0.1 to v1.0.10
- Changed FFmpeg dependency builds to use OpenSSL so
SSL_CERT_FILEis respected
Peripherals and Input
- Improved CEC standby handling when Kodi is not the active HDMI source
- Improved Xbox gamepad detection before the joystick add-on has completed discovery
- Added immediate peripheral discovery wakeups when Xbox gamepads appear or generate early input
- Fixed duplicate Xbox actions from a single key press
Profiles
- Added the Profile directory as a source on all platforms
- Added the profile directory to Android local sources
Android
- Added support for Kodi deep links
- Updated launcher and Play Store icons
- Fixed stale Android VIEW intents being replayed after process recreation
- Fixed a MediaCodec lifetime race
- Fixed BACK unexpectedly exiting Kodi with Android predictive-back handling
- Fixed IME focus restoration
- Fixed APK assets being marked ready before extraction completes
- Fixed content providers opening files before remote-access permission is checked
- Fixed MediaCodec EGL renderer capability reporting
- Improved HDR PGS subtitle rendering
- Fixed custom application-package names not reaching generated build information
Windows and Xbox
- Improved Xbox controller discovery and responsiveness
- Fixed duplicate controller actions
- Fixed Kodi startup with a DVD already inserted
- Improved optical-drive state handling and eject behaviour
- Fixed temporary files losing their filename suffixes
- Improved XAudio device capability persistence
Linux
- Improved Wayland display names using modern output descriptions
- Fixed saved monitor selection with modern Wayland output naming
- Fixed Wayland window geometry after toggling decorations
- Fixed a GBM device-loss lifetime issue
- Fixed black video after changing resolution while paused on GLES
- Improved CPU temperature detection on additional SoCs
- Improved ALSA error recovery
- Improved UPower detection
- Added fallback to the
pingutility where unprivileged ICMP sockets are unavailable - Added Russian translations to the Linux desktop entry
- Fixed DMA buffer cleanup when initialization fails
- Fixed X11 windowing code incorrectly accessing EGL state from a GLX context
- Fixed fullscreen transitions where no renderer is available to clear the screen
- Fixed Debian package generation and documented creating DEB packages
macOS, iOS and tvOS
- Added supported JIT execution on macOS
- Fixed non-browsable macOS volumes appearing as normal storage
- Fixed macOS shutdown after
applicationShouldTerminatehas already been answered - Improved iOS App Store compliance
- Fixed iOS simulator Python builds
- Fixed Python dependency checks on tvOS
- Improved Apple platform compiler and dependency build flags
- Updated embedded Apple builds to Xcode 26.3
webOS
- Switched webOS audio output from ALSA to PulseAudio
- Fixed audio on webOS 26
- Fixed broken icons on webOS 4 and older by using GLES 2
- Improved HDR PGS subtitle rendering
WebAssembly
- Added initial generic WebAssembly compatibility support
- Added the WebAssembly platform runtime skeleton
- Abstracted HTTP access needed by scrapers and metadata providers
- Added renderer support for opting out of GLES texture swizzling
Developers
- Raised the minimum required CMake version to 3.20
- Improved SWIG detection and added an internal SWIG build option
- Fixed SonarQube builds with newer SWIG
- Improved dependency download retries, including empty downloads
- Improved Windows Ninja toolchain initialization
- Disabled MSBuild node reuse to prevent locked build files
- Improved Apple dependency and compiler configuration
- Fixed nested dependency builds losing the project source directory
- Improved Clang-Tidy integration and excluded generated sources
- Fixed CPack runtime dependencies for newer libbluray and libCEC packages
- Improved Python module installation through pip where supported
- Fixed generated Python stub installation
- Removed the deprecated UWP
/awaitbuild flag - Improved Debian package generation
- Improved CI and test reliability across Windows, networking, RetroPlayer, Python, media sources, and the internal web server
- Improved Doxygen parameter documentation
- Refreshed repository CODEOWNERS
- Removed obsolete OpenGL roadmap documentation
- Completed migration of runtime GL-extension checks to the enum-based API
- Removed several obsolete or unused internal code paths
Known issues
- If Kodi is provided without our patched TagLib 2.3.1, Matroska tagging is degraded back to v21
- On Linux, HDR video playback may make some GUI/OSD elements too transparent, washed out, or fuzzy
Download link
If cutting-edge software is your thing, you can get RC 1 from here. Select your platform of choice, and look in the "Prerelease" section. Please share your experiences back with us so we can really get going on those bugs. And take a backup first!