p3i T1
This is the initial release of p3i, directly based off of U3k B11, with a lot of improvements, most notably:
UI rendering improvements
I was able to discover a whole bunch of performance issues within the guilib code of Kodi, many of them existed for years, or even decades. Changes have been made to specific compositing, message queueing, as well as efficiency across a wide range of GUI controls.
All in all, the guilib changes result in:
- faster UI rendering (especially complex UIs, such as PM4K and skins)
- more efficient invalidation of controls across the board
- less CPU usage during transitions and texture loading
- significantly less CPU usage when idle while showing certain types of UIs
This can be very roughly summarized as (vs. other builds/stock Kodi):
┌─────────────────────────────────────────┬───────────────────────────────────────────────┐
│ Scenario │ Estimated Improvement │
├─────────────────────────────────────────┼───────────────────────────────────────────────┤
│ Idle with scrollbar visible │ 60-80% reduction in GUI CPU usage │
├─────────────────────────────────────────┼───────────────────────────────────────────────┤
│ Idle with images/buttons (no scrollbar) │ 30-50% reduction in GUI CPU usage │
├─────────────────────────────────────────┼───────────────────────────────────────────────┤
│ Active scrolling │ 20-40% reduction in per-frame processing │
├─────────────────────────────────────────┼───────────────────────────────────────────────┤
│ Image cross-fade transitions │ ~80% reduction in dirty region overhead │
├─────────────────────────────────────────┼───────────────────────────────────────────────┤
│ Complex UIs with many controls │ 30-50% reduction due to message deduplication │
└─────────────────────────────────────────┴───────────────────────────────────────────────┘
Those fixes will be pull requested towards Kodi upstream, so everybody can benefit.
There's more to be done here, this "just" fixes the most obvious ones.
Other notable changes
-
"Low latency audio mode" backported from Kodi 22 (via thexai and subsequent commits/PRs)
This adds a new setting under System/Audio called "Low latency mode", enabled by default. It significantly reduces the time audio streams take to "resume" when playback is resumed, vs. the video stream. If you encounter any issues, try disabling this first. -
Fixed BT/Wi-Fi pairing in the "CoreELEC Settings"-Addon
Since U3k B9's Python upgrade, BT and Wi-Fi pairing stopped working. Due to a very old dbus library used by that addon, which isn't supported anymore and doesn't work with Python 3.13, I decided to rewrite a big part of it to utilize the newer dbussy/ravel library. This also reduces the time it takes to actually reboot when hitting the "Reboot" option in the exit menu. -
VideoPlayer: Fix seeking to resume point with LAV filters
This fixes the issue where seeking to a resume point would incorrectly
jump back to position 0 when LAV Full mode is active.Based on commit 7d47c17 from avdvplus/xbmc (cpm-code).
-
VideoPlayer: Sync to later start time to fix AV desync
This prevents AV desync that can occur when video starts later than
audio, particularly noticeable with LAV filter chain.Based on commit 31c65c3 from avdvplus/xbmc (cpm-code).
VC-1 fixes have not been included in this release, as we've found last-minute compatibility issues. Expect them in T2.
LAV Filters & PM4K
As with U3k B11, LAV filters are included as an option for fixing audio issues (under Settings/System/CoreELEC, bottom). By default this is set to Off, as during testing these fixes weren't necessary (anymore). If you tend to watch seamless branching titles, you can set this to "LAV SB". If you're a user of the latest PM4K beta, the addon will take care of automatically enabling LAV SB for affected seamless branching titles, so you can leave this at Off. "LAV Full" isn't necessary or recommended, but can be beneficial in certain scenarios, and should be fully compatible with PM4K's Alternate Seek functionality.
Installation
1. Dirty
Drop the update tar into your CoreELEC update folder and reboot - this can be used as a dirty upgrade from CPM A14 or any of the U3k builds. Resetting Settings/System/CoreELEC to defaults after doing this is not necessary but recommended.
2. Flash
Use the provided Flash img.gz to prepare your SD card as you would with any other CoreELEC build.
advancedsettings.xml
If you'd like, you can add the following to your advancedsettings.xml, which further improves UI rendering, but is not strictly necessary:
<gui>
<fronttobackrendering>true</fronttobackrendering>
<geometryclear>false</geometryclear>
</gui>
Thanks
A massive shoutout to everyone involved in this build!
Full Changelog (Kodi core): https://github.com/pannal/xbmc/commits/T1
Full Changelog (CoreELEC-Settings): https://github.com/pannal/service.coreelec.settings/commits/T1