Release T4 #58
Replies: 10 comments 40 replies
-
|
The initial images (named |
Beta Was this translation helpful? Give feedback.
-
|
Thank you very match! When using S/PDIF output, there is no option to select Stereo 2.0 output so that downmix works in the audio settings. As I understand, in T4 this will work in any case, but only for TrueHD? What about all other multichannel formats: DTS, DTS-HD MA, DTS:X, E-AC3, AC3? I tested it, and it seems that with S/PDIF, downmix works for all formats except DTS. I would like to request an option in the audio settings to force 2.0 output when using S/PDIF and USB S/PDIF in future updates. It would also be useful to be able to manually change bit depth, while still keeping it on Auto by default. |
Beta Was this translation helpful? Give feedback.
-
|
will it work on (dune)homatics box r4k plus? |
Beta Was this translation helpful? Give feedback.
-
|
"13.Image-based subtitle scaling (resize and position PGS/VobSub to taste), continuing the PGS colour/tonemap work from T3a" T4/T3b color wrong,And some subtitles are delayed Has the same subtitle bug as ce22 Even more serious is that some external subtitles simply display the same subtitle without any variation. |
Beta Was this translation helpful? Give feedback.
-
|
Just tried T4 as dirty install over AVDVPLUS on AM6B+. Playback of interlaced film material is outstanding, I don't see the deinterlacing artefacts present in other builds/AMlogic devices. However, with my FEL mkv titles (also sourced from my own rips) I'm encountering situations where playback grinds to a halt, and eventually crashes, and I have to pull the power to get back. I've tried various settings to fix this but no luck yet. Is there a mechanism for submitting a log when the device has become unresponsive? Are there plans to build this from CE22? CE22 supports LLDV with CMv4. |
Beta Was this translation helpful? Give feedback.
-
|
Gigantic THANKS! Wow - transformative. The UGOOS AM6B+ is just transformed. What an upgrade! Just puts closed source software to shame what the open source community produces.
Such an upgrade! |
Beta Was this translation helpful? Give feedback.
-
|
Audio: USB DAC, HDMI (2.0), HDMI Multi It seems to me that matrix normalization for stereo is not working with the AAC-LC 5.1 codec. TV series: American Horror Story I also noticed that the Ukrainian AC3 2.0 track becomes significantly louder after some time, even though I do not press anything. The same thing happens if I skip forward 10 seconds or jump between chapters. It seems to me that, in this title, matrix normalization is initially applied to the 2.0 track, but then it resets itself. When seeking, it resets immediately. When I enabled "Reset PTS offset on seek = On", the AC3 2.0 track started playing louder immediately and maintained the same volume level after seeking. Interestingly, the movie A Simple Plan (1998) behaves in a similar way. The Ukrainian AC-3 2.0 track shows the same behavior. However, when using direct HDMI passthrough output, the volume does not change when "Reset PTS offset on seek = Off". It is louder from the start (without the "normalization"). Please fix this in future updates if possible. Thank you. |
Beta Was this translation helpful? Give feedback.
-
|
Hello! I would like to ask if those who experienced problems with the T4 release did so by updating or by doing a clean install.? |
Beta Was this translation helpful? Give feedback.
-
|
Not sure if this is the best place for a feature request, but would it be possible to add functionality to the next release to increase the granularity level for the "Boost centre channel when downmixing" audio functionality? It is currently in 1dB increments. I'd suggest to allow 0.5dB increments. Also regarding the "Include LFE in stereo downmix" audio functionality, does a slider value of 50% mean that 50% of the LFE channel gets mixed into the left channel and 50% of the LFE channel gets mixed into the right channel, for an additive combination of 100% with both speakers combined? |
Beta Was this translation helpful? Give feedback.
-
|
Player MPC-BE x64 on PC have option - Stereo crossfeed (headphones) This is a really cool feature, and it can be super useful for people who watch movies in headphones. The soundstage in movies with headphones is actually built around the listener instead of being inside the head. Please consider this feature for future updates. |
Beta Was this translation helpful? Give feedback.




Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
p3i T4
T4 is our biggest release since the U3k line. About ten weeks of work across Kodi, the kernel, the CoreELEC distro and a new addon repository. It is also the first build to ship our own pre-installed addon repo (
repository.p3i), the seamless-branching helper, the per-folder override engine, and a new default skin.The headline changes:
skin.p3i.estuary.repository.p3i) with our helpers and patched inputstreams.Tip
Navigatable release notes
Highlights
Roughly ordered by how many people each change affects, and how visible it is.
1. Smoother playback: a real vsync video clock
This is the big one. The Ugoos AM6B+ has simply never played video this cleanly. Until T4 there was no working display-synced clock at all: the VideoSync thread was stubbed out, so Kodi ran free and hoped the frames landed. Now
VideoSyncAMLlocks onto the kernel's real HDMI vsync (FBIO_WAITFORVSYNC_64), the reference-clock thread actually runs, and all the vblank math stays in double precision, so the legacy fallback no longer rounds to whole milliseconds.You can see it right away. Pacing is rock-steady, slow pans stop stuttering, and the judder that used to creep into 24p is gone. It rides through a mid-playback mode or fps switch without a hitch, and it never tries to "catch up" after a kernel-timestamp blackout. For the rare sink that doesn't get along with it, a CoreELEC toggle (Settings/System) with an opt-in fallback to legacy timing lets you drop right back.
One thing to do for the full benefit: if you run
plugin.video.themoviedb.helperorscript.embuary.helper, switch to our variants from the p3i addon repository. The stock versions run heavy background work (SQLite VACUUMs, fanart grabbing) that can still cause intermittent stutter during playback; our forks hold that work off while a video is playing.2. Reboot / shutdown recovers itself
A restart can still stall now and then, but it no longer leaves you staring at a black box that only a power pull will fix. If something wedges, the watchdog forces a reboot and the box comes back on its own.
meson_wdtstays alive through reboot; systemdRuntimeWatchdogSec), so a kernel hang during restart self-recovers within the watchdog timeout instead of wedging for good.Stop()deadlocks, and Python addon stop/terminate timeouts are now configurable inadvancedsettings.xml.3. A new default skin
The build now ships and defaults to
skin.p3i.estuary, vlix's Estuary variant, packed from source at build time. Stockskin.estuarystays installed as a fallback, so nothing breaks if you switch back.Its standout feature is a comprehensive Player Process Info overlay. Where stock Estuary shows only a few codec lines, vlix's lays the whole playback picture out in one place: the video and audio decoder, the deinterlace method, the Amlogic pixel format and VS10 mode, the source HDR type, and a full Dolby Vision metadata readout (profile and level, CM/metadata version, L1 min/avg/max nits and PQ, L5 active-area offsets, L6 MaxCLL/MaxFALL, and source min/max luminance), plus live video/audio queue and cache levels, bitrate, and PVR signal stats. If you want to see exactly what the DV/HDR pipeline is doing on a given title, this is the place.
4. Interlaced, MBAFF and framerate fixes
A big cluster of fixes for content that used to play at the wrong speed or drift out of sync:
5. CoreELEC fast (keyframe-accurate) seek
A new fast seek toggle (Settings/System/CoreELEC), on by default, snaps to keyframes for near-instant seeking. A startup-seek regression it introduced (dropped resume seeks) is fixed in the same release, so resume-from-position is reliable.
6. Lower RAM use
MALLOC_ARENA_MAX=8plus trim), which stops the heap fragmentation that let memory use grow over long or heavy sessions. You can override these caps per box in/storage/.config/kodi.conf./storage/.config/zram.conf.vm.min_free_kbytesis also raised to 32 MB for more headroom.7. The p3i addon repository (
repository.p3i)T4 pre-installs our own addon repo, served at
p3irepo.pm4k.eu. Through it we now ship:service.p3i.sbandservice.p3i.override, our two opt-in helper addons (detailed under Per-folder overrides and seamless branching below).inputstream.ffmpegdirect22.2.5.1 (Piers), built against FFmpeg 8.1.inputstream.adaptive21.5.18-p3i.1.2: a CBCS backport so HLS SAMPLE-AES (cbcs) plus ClearKey plays on Kodi 21.3.plugin.video.themoviedb.helper6.15.6-p3i.1: skips the SQLite VACUUM while a player is active, and restores the broken vacuum/delete interval guards.script.embuary.helper2.0.8-p3i.1 / 2.0.9-p3i.1: skips the background fanart grabber during playback to stop microstutter.8. DV/HDR presets and a 12-bit Deep Color pipeline
xbmc_dv_dither → xbmc_dv_deep_color.9. Dolby Vision: automatic L5 active-area detection
A Dolby Vision title carries L5 metadata that marks its active area: where the real picture sits inside any letterboxing. A lot of content ships with that metadata missing or wrong, and the DV pipeline then works off the bad numbers. T4 can measure the true active area itself by scanning frame borders with FFmpeg, and use that in place of the faulty L5. The detector copes with dark scenes, pillarboxing, pre-cropped frames and multi-stream Profile-7 remuxes, decodes only keyframes, bails out early once it reaches consensus, and exposes its state to skins.
It is off by default, because the border scan reads extra data from the file, which can be heavy over a network share (SMB) or on slow storage. When it is on, the scan's I/O throttle is cache-aware and on by default: it waits for the playback buffer before each seek and aborts a long read if the buffer goes critical, so detection no longer stalls playback on slow USB. You can also drive L5 per-folder through the new
service.p3i.overrideaddon, including a fully manual override that flows all the way to the TV. Two caveats: it assumes a single active area for the whole title, so it can't handle mixed-aspect-ratio content such as IMAX Enhanced (where the framing changes from scene to scene); and it only works while the black bars are still part of the video frame, since there is nothing to scan once a title has been cropped to its active area.10. Dolby Vision: subtitle enhancements
On letterboxed Dolby Vision content, subtitles can land down in the black bars, where some displays push them off-screen or crop them. The "Restrict subtitles to DV active area" option was in the menu before but did nothing (the code path was hardcoded off through T3b); T4 makes it actually work and rebuilds it properly, so with it on, subtitles sit on the real picture.
It covers both text and image-based subtitles: text margins are scaled to the active-area height, and PGS/VobSub overlays are clamped into the active area with proportional padding and font-scale compensation. It tracks the active area per frame, handles top-aligned subtitles, and honors your own subtitle position and margin. The active area comes from the title's L5, or from the detector above when that is missing or wrong.
There's also a complementary option, "Set L5 to 0 for subtitles". With it enabled, the build zeroes the L5 active-area signal (instead of moving the subtitle) so the TV shows the full frame and the subtitle stays visible. You pick the policy: off, only while a subtitle track is active, or, new in T4, only while subtitles are genuinely on screen. That last mode is the smart one: it tracks actual on-screen subtitle presence per frame, instead of zeroing L5 for the whole playback just because a track is enabled, and returns to the source L5 the moment the subtitle clears. It also skips the flip when text subs already clear the bars, and for image-based (PGS) subs only signals when they actually extend outside the active area. If you've enabled "Restrict subtitles to DV active area" above, it's best to leave this one off: the two are alternative ways to solve the same problem (one moves the subtitle onto the picture, the other shows the whole frame), so you only want one of them active at a time. All of these L5 options now live in one tidied, nested menu under a single parent toggle, so you can leave the whole thing off if you prefer.
11. Dolby Vision: projector SDR↔HDR flip fix
On a direct-to-projector setup with auto dynamic-range, 4K HEVC/DV titles could flip between SDR and HDR, because the HDR/VSIF was configured at the GUI resolution before the switch to 2160p. T4 adds an opt-in setting to re-assert the VS10/HDR output after the mode switch (it covers both HDR10 and IPT/DoVi output, with a loop guard). It is the in-build version of the manual VS10 mode-toggle people used as a workaround.
12. HDR10+ black-screen fix
The intermittent black screen some TVs throw (e.g. the TCL 646) during an HDMI mode switch is fixed by holding the HDR10+ VSIF across the switch (a new kernel
hdr10plus_vsif_holdparameter) and releasing it once the mode settles.13. Subtitles
14. Audio
15. Live TV
16. Dolby Vision: HDR10+ → DV P8.1 conversion and CMv4.0
dovi_generate_from_jsonpath), with source-luminance clamping ported across for proper Player-Led dynamic dimming.17. Dolby Vision: multi-video-track files
Some Dolby Vision files carry more than one independent video track, for example a colour grade alongside a black-and-white grade (both Profile 5). T4 fixes these on two fronts.
First, Kodi now recognises those extra tracks as real, selectable video streams instead of folding them into the base layer as if they were enhancement layers, so you can actually switch to and play the second stream in the first place. Second, it honors the container's default-track flag, so the grade the file marks as default is the one that plays, instead of always landing on the last track.
18. New skin infolabel: Dolby Vision track type
For skinners and the curious, a new infolabel reports during playback whether a DV title is dual-track (DT-DL) or single-track (ST-DL).
19. 3D / stereoscopic
20. Storage & USB
uas.ko(blacklisted by default), with a per-device blacklist; the quirks table is backported from v6.6.udevildisk mounter no longer overwritesmount.ntfs(it now builds from ourpannal/udevilfork).21. Per-folder overrides and seamless branching
Two small helper addons ship in the repo for people who want finer control. Both are opt-in and off unless you set them up.
service.p3i.overridereads a per-folderoverride.iniand applies Kodi setting overrides for whatever plays out of that folder, with INI sections, fnmatch globs and a one-parent-folder walk. It also carries the live L5 active-area override that flows all the way to the TV. override.ini reference.service.p3i.sbflips CoreELEC's LAV filter into its seamless-branching mode for titles that need it, so the audio stops dropping, and restores it afterwards. It matches a curated IMDb/TMDB list, or you force it per folder or per file with anSB/SB.txtmarker. settings & marker reference.22. Under the hood: FFmpeg 8.1
The whole stack moves to FFmpeg 8.1 (Kodi
depends, the CoreELEC build, and the MVC patch updated to upstream). It underpins the 3D, DV and subtitle work above.Known issues
Denon / Marantz AVRs: black screen or "no signal" on HDMI mode switches
This is not new in T4, and we did not introduce it. It happens on stock (vanilla) CoreELEC too, not just our builds, and goes back well before T4. It is a long-standing AVR-side issue, not a p3i or T4 regression.
On some setups with a Denon or Marantz AVR between the box and the TV, the TV can drop to black or "no signal" around an HDMI mode or format change: a title starting, a resolution or refresh switch, or playback entering or leaving Dolby Vision. We have not been able to pin down exactly what sets it off; it may be any mode switch. It might take one start or a handful before it happens, and the only reliable recovery is to power-cycle the AVR (sometimes the TV too).
We chased this hard during the T4 cycle, and the conclusion is that it is AVR-side, not the box. In every captured failure the box was still putting a valid signal on the wire (correct timing, valid AVR EDID), but the AVR stopped forwarding it to the TV. The same box plays the same content cleanly straight into a TV, and through other AVRs and soundbars. We saw it across Dolby Vision, LLDV and plain SDR/HDR, with and without a resolution change, so it tracks the HDMI re-lock in general rather than any one format.
Because the trigger is downstream of the box, no setting in the build fixes it. (The experimental DV mode-switch signalling we tried did not help and was removed.) What does help is on the AVR side:
VS10 SDR can drop video on some live-TV streams
On some live-TV sources (IPTV Simple Client / inputstream.adaptive and Tvheadend), VS10 SDR conversion sometimes fails to put out video when a stream starts. You get a black screen while the GUI still works: you can open the OSD and the menus, there is just no picture. This is not the HDMI/AVR blackout described above.
Disabling VS10 SDR avoids it entirely. It looks like a timing issue at live-TV start; we are still looking into it, and a fix may land in a later release.
Changelog
The complete per-component commit list. Click any section to expand.
🎬 xbmc / Kodi
Video sync & reference clock
FBIO_WAITFORVSYNC_64), fix fallback precisionTimeOfNextVblankm_RefreshRateon mid-Run fps changeInterlaced / MBAFF / framerate
video_rateexceptions for interlaced and H.264 content on AmlogicCalcFrameRatefrom halving fps for demuxer-flagged interlacedLive TV
Seeking
Dolby Vision — L5 active-area detection, throttle & subtitle restriction
xbmc_override_l5_*/xbmc_force_l5_overridenamespace; runtime-promote visibility; short-circuit detect when setDolby Vision — output re-assert after mode switch
Dolby Vision — display-null wedge & toggle flags
/sys/class/display/mode=nullin round-trip sitesFLAG_TOGGLE_FRAMEinaml_dv_off; force-clear after toggle-wait timeoutDolby Vision — CMv4.0 / HDR10+ conversion (ported from avdvplus R9 / CPM)
cmv29_payload_end_bit)dovi_generate_from_jsonfor HDR10+ → P8.1, including CMv4.0 metadata in the RPUxbmc_dv_hdr10plus_convto match avdvplusDolby Vision — multi-stream / SW decode / misc
PTS_US64marker into the DV FEL RPU (DT-DL only)aml_dv_off; sync EGL creation with DV pipeline restorationHDR10+
hdmitx20)Subtitles
ass_render_framefor unchanged static overlaysAudio
eac3passthroughis enabled, with sink validation (+ German translation)audiooutput.volumestepscap to 100 (was 90)12-bit pipeline / DV+HDR settings & presets
prefer.12bitto Display-LED3D / stereoscopic
Skin
skin.p3i.estuary(by vlix; stockskin.estuarykept in the manifest as a fallback)Skin infolabels
/confignot/attrStability
Stop()deadlocksadvancedsettings.xmlBuild / addons
[depends][target]Bump to FFmpeg 8.1 (@U3knOwn).mkafiles (@the-black-eagle)repository.p3iandservice.p3i.sbin the default manifest🐧 Kernel (linux-amlogic, amlogic-4.9-20)
osd_fb: drop the VD1 gate fromFBIO_WAITFORVSYNC_64(real vsync for the new video clock)hdmitx20: addhdr10plus_vsif_holdto suppress VSIF during mode switches; fix it blocking VSIF cleanup on stop; fix VS10 non-IPT config reporting a stale DV EOTFamvecm: gate per-vsync PQ work onCSC_FLAG_BYPASS_PQfor native DVamdolby_vision: L5 active-area injection from Kodi-detected valuesamdolby_vision: separatexbmc_override_l5_*fromxbmc_detected_l5_*;xbmc_force_l5_override(truly unconditional) forservice.p3i.overrideamdolby_vision: respect OSD/subtitle gating for detected L5 injection; separate sysfs for L5 subtitle suppressionamdolby_vision: renamexbmc_dv_dither → xbmc_dv_deep_coloramdolby_vision: port VSVDB source-luminance clamping + Player-Led metadata pre-processing from avdvplusamdolby_vision: allowsource_meta_copyfor Player-Led HDR10+ conversion; clamp max mastering luminance to 9997 nitsamdolby_vision: filter variable-length L8 blocks; remove thexbmc_dv_hdr10plus_convdependency; remove duplicate pre-control_path blocks; per-frame metadata debughdmitx: don't force an I2S-8ch source for 2-ch PCM in aout notify (fixes TrueHD → 2-ch PCM mute)hdmitx: suppress HPD events during reboot; only disable TMDS PHY on halt/poweroff (then reverted to avoid a deadlock)meson_wdt: keep the watchdog armed during reboot to recover from kernel hangs; cancel the hrtimer auto-ping when userspace takes overauge: enable audio DDR arbiter and HBR QoS tuningusb-audio: add HyperX Cloud II Wireless quirkhw_dumpdebug command + gate dump behinddebug_dolby📦 CoreELEC (distro & packages)
cmv29_payload_end_bitfor bit-precise CMv4.0; rebuild prebuilt withdovi_generate_from_jsonkodicapped glibc arenas on ARM (MALLOC_ARENA_MAX=8) for heavy-Python RAM;busyboxbumpvm.min_free_kbytesto 32 MB/storage/.config/zram.confuas.kopackage + boot/hot-plug rebind plumbing; per-device blacklist via/storage/.config/uas-blacklist.txt; +5unusual_uas.hentries backported from v6.6pannal/udevil(a restored alpharde fork over IgnorantGuru 0.4.4); never overwritemount.ntfssystem.conf.ddrop-in; enableRuntimeWatchdogSec; mitigate the intermittent reboot hang after screensaver wake (connman); moveDefaultTimeoutStopSecto a separate drop-inrepository.p3ifetch +inputstream.ffmpegdirect(Piers) override; pre-installservice.p3i.sb; backport CBCS for HLS+ClearKey ininputstream.adaptiveRTL8152-amlbump to v2.21.4-1;rusttoolchain 1.93.1 + cargo-c 0.10.22;avahiautogen fix andwireguard-linux-compatchecksum refresh (@SamuriHL)⚙️ CoreELEC Settings Addon
start_serviceand audio-device enumeration when BT is disabledbluez/connmanchecks inside timeout-protected threads; add a 2s timeout to theget_audio_devicescall🧩 Addon repository (`repository.p3i`)
repository.p3i(served atp3irepo.pm4k.eu), bundling override addon zips + regenerated manifestsinputstream.ffmpegdirect22.2.5.1 (Piers, FFmpeg 8.1)inputstream.adaptive21.5.18-p3i.1.2 — CBCS backport (HLS SAMPLE-AES + ClearKey on Kodi 21.3)service.p3i.sb0.1.0 → 0.1.6 — seamless-branching LAV auto-switcher:SB/SB.txtmarker (per-filename/glob), prefix-match codec gate, toast on switch. SETTINGS.mdservice.p3i.override0.1.0 → 0.1.8 — per-folderoverride.iniengine; subtitle-settings catalog; one-parent-folder walk; L5 override flows to TV (0,0,0,0valid). SETTINGS.mdplugin.video.themoviedb.helper6.15.6-p3i.1 — skip SQLite VACUUM while a player is active; restore vacuum/delete interval guardsscript.embuary.helper2.0.8-p3i.1 / 2.0.9-p3i.1 — skip the background fanart grabber during playback (microstutter fix)📜 Full commit history (all repos, T3b → T4)
xbmc / Kodi (212 commits)
c517968d46DV: bypass VS10 for SDR BT.2020 content to preserve gamut5b90f408e8Settings: improve help text for CoreELEC/DV settingsc10a6bbf73Settings: Fix description for Reduce color banding (VS10) not representing the default3d5e68c206Revert MAT packer Reset on seek for standard passthrough path66041244faSettings: Default refresh rate change delay to 2.5s45b589f6afHDR10+: hold VSIF during mode switches to fix intermittent black screenadaebdb09dDV: re-enable L5 active area subtitle restriction with stream-level fixba13ba2231DV: fix L5 active area subtitle distortion — use margins instead of rect84203e490bHDR10+: fix VSIF hold sysfs path (hdmitx20, not amhdmitx)e19262996aDV: track actual subtitle presence for L5 suppression2781436f7dDV: fix L5 active area subtitle distortion — use position offsetf8d45730f1DV: fix HDR10 OSD peak brightness slider not applying80c54338baDV: fix long black screen on live TV channel change with DV mode ON7cf78bbbc8DV: disable style margins when L5 active area overrides subtitle position97fdafd950DV: add option to apply user subtitle position with L5 active area01083915bfDV: fix L5 active area — track per-frame, handle top alignment, clamp12a6237355DV: handle PM4K invisible overlay for L5 OSD detectionebb236463bMake Python addon stop/terminate timeouts configurable via advancedsettings.xml4897023d03DV: cache PM4K seek dialog ID for L5 OSD detection4b4e7a021b[depends][target] Bump to ffmpeg 8.1 — @U3knOwn3e92d1e4b0DV: skip redundant sysfs writes for L5 subtitle and OSD flagsf617d90237DV: sync EGL creation with DV pipeline restoration (minimal fix)c6da3465b9DV: fix L5 active area restriction for top-aligned subtitlesc66ebf5afbDV: reduce per-frame overhead in L5 and OSD handlingb1983d025bDV: fix subtitle alignment corruption in L5 active area handlingac5bd9af38DV: apply L5 forceBottomAlign override per-frame in RenderImagee3c3d99675DV: use INSIDE_ACTIVE_AREA margins for L5 subtitle restriction13e870354eDV: compensate font scale for L5 active area marginsa59da9dbf5DV: restore HDR10+ to DV P8.1 conversion sysfs write9cfcdf7fd2DV: include CMv4.0 metadata in HDR10+ to P8.1 RPU2feaebb522DV: honor user position and margin in L5 active area when enabledf35ae5749dDV: disable xbmc_dv_hdr10plus_conv sysfs write, match avdvplus919fd5f520DV: hide L5 subtitle restriction settings in Player-Led modedebf11c5e0DV: clamp image-based subtitles to L5 active areaaa0c7db945DV: use style MarginV instead of renderer margins for L5 restriction3130d5e832DV: update restrict setting description for PGS subtitle support7b4eb92c8fDV: signal image subtitle presence for L5 suppressionc103d3cc66DV: restructure L5 settings with parent toggle and subtitle signal mode6afa3d3b98Add shutdown watchdog to force-exit if Stop() deadlocks5f4c01c60bDV: gate CreateNewWindow IPT restore on playback-active flag3de31d1da4DV: update restrict setting description for PGS subtitle supporta84242cee9Use ffmpeg to read more tags from mka files — @the-black-eagle5f0e71b25dDV: scale text subtitle margin relative to active area height28ca0372afDV: add proportional padding when clamping image subs to L5 active area8be699db6dDV: reset L5 state on playback stop8409175d36DV: add CMv4.0 dynamic append for native DV contentf1a73e7667DV: fix CMv4.0 setting description — applies to all profiles04e2493029DV: cache display params for CMv4.0 append decisionb2ca587ed0DV: fix CMv4.0 Auto mode always appending on first frame239a35c461DV: skip redundant off/on cycle in aml_dv_start when already in IPT5b72b8c5e6DV: update CMv version string dynamically, not just on first frameee47eb3333DV: prefix appended CMv4.0 version string with "V"5b4660a797RenderManager: handle fps-only change without full reconfigured2f8038cecAMLCodec: abort blocked AddData write loop on flush9ef5f7cb21Subtitles: fix gray fringe on bitmap subs and add zoom-dependent filtering4d88803c81DV: move synchronous IPT restore before early return in CreateNewWindowea14c24c9aDV: skip display_auto_now in aml_dv_off during DV_MODE_ON IPT restorec8292d7ae7DV: trigger display mode re-write after IPT restore in early-return pathf03b29c114DV: force VPP reconfiguration in aml_dv_off via display mode re-write181f808b3cSubtitles: update libass to master, add ASS override settingcbb53869d1DV: add L5 active area detection via FFmpeg border scan65e98e71c8DV: ignore unreliable L/R borders in active area detection4b9816a4a4DV: fix double percent in active area detection log output370ae4c1a5DV: use majority consensus for active area detection, not unanimityb551f631dbDV: fix detection not running when g_application.CurrentFile() is emptye27ede46b7DV: add diagnostic logging for active area detection start path1bb164993eDV: restrict subtitles for pre-cropped frames via display letterboxaf9c4f6531DV: fix off-by-one in AR snap border computation3adbb9cad5DV: retry dark frames in active area detection01fcf25655DV: improve active area detection robustness17885aac29DV: add early exit and P7 FEL note to setting description66abcef550DV: add diagnostic logging for detection codec/decode failuresa643c42eecDV: fix detection decode loop for multi-stream remuxes (Profile 7)1b8acf0704DV: use symmetric fallback when one T/B border has consensus615bc17f34DV: early exit detection when T/B consensus reachedf11adbfd1dDV: decode only keyframes for active area detection7667810c4cDV: use contrast-based frame skip instead of absolute brightnesse34ce1b730DV: adaptive scan threshold for dark DV contentecc039d1f1DV: require symmetric L/R for pillarbox detectiona3ce4656f7DV: dynamic T/B consensus threshold and corroboration9a871ec393DV: skip CMv4.0 append only for CMv2.9 4+ L2 trims71902a2c13DV: improve active area detection robustness and pre-cropped handlinga25e2afc4bDV: start active area sampling at 0% to catch fullscreen intros1fe1a20714DV: require minimum usable samples for active area detection6a04c57a2eDV: tighten minimum usable sample threshold to 6/7be6ece1e6fDV: fix variable AR check for frames with one-sided false bar readingbaa0374109DV: expose active area detection state to skin7fee2bb82eAE: fix downmix normalization not applied for integer source formatsdb2f410b8dAE: pass surround mix level from codec metadata to resamplerecb3fbf89dAE: transcode to EAC3 when eac3passthrough is enabled, with sink validation75101244b2AE: update German translation for EAC3 transcode settinge113d1599bVP: fix wrong framerate for H.264 MBAFF interlaced content8babfb6474DV: gate L5 active area detection on native DV content, skip P9f4c3638daaVP: don't override hardware-confirmed interlace with progressive fallbackad6ce814b8VP: fix video_rate exceptions for interlaced and H.264 content on Amlogic21527d77dcVP: compensate Amlogic deinterlace pipeline latency for interlaced content6209e73cacDV: add cancel flag and optional I/O throttle for active area detectionb3affc3f65DV: disable L5 detection by default, add SMB warning to descriptioncfcc98049eDV: add Inactive (5) and Running (6) detection states for skind89cd65a2dDV: use bit-precise CMv4.0 append via libdovi cmv29_payload_end_bit47996ba69fDV: log when I/O throttle is active for detection diagnostics90815a93e7DV: make throttle setting a child of detect active areab2eaca4a57DV: abort active area scan early when source L5 appears329c8c8986fix live TV passthrough A/V sync: use audio clock, skip SpeedAdjust06bfb4a486DV: fix detection state stuck on Running for BDMV/ISO sources1b9218203eDV: use libdovi API for CMv4.0 append, remove bitstream surgery40322a45c0DV: skip active area detection for BDMV/DVD disc sourcese4f0e572e8VP: require positive progressive confirmation for interlace fallbackf18d3b3235fix live TV decoded audio mute: extend sync fix to all live streamsf9fdaf2016DV: use libdovi dovi_generate_from_json for HDR10+ to P8.1 conversionf5dcf28fe5DV: manage DV pipeline for SW-decoded content via GLES renderer46d126bfb4DV: flush decoder to extract buffered frames during detectionfc3a874b45fix 3D SBS/TAB/FP: always halve viewport in stereo modesabef20093cfix 3D SBS/TAB aspect ratio on Amlogic hardware video plane554662bc00fix 29.97/25fps progressive wrongly treated as interlaced1f73afeae2VP: don't let transient DI progressive clear demuxer interlace flage00f1ff398VP: block progressive fallback entirely for demuxer-flagged interlaced6d55dfb317DolbyVision: Implement C++ options filler for VSVDB colour space setting — @Sebastiiii7d874c2d1cDVDDemuxFFmpeg: distinguish independent DV streams from dependency layersb1bbad9ae5VP: block CalcFrameRate from halving fps for demuxer-flagged interlaced709d043146DV: skip L5 detection for MPEG-TS and stalled decodersb9b7bb7cf7DV: fix purple playback and exit stall on DV → HDR10 transition63ce9ad29eBitstreamConverter: inject PTS_US64 marker into DV FEL RPU (DT-DL only)39865d1a9dPlayerProcessInfo: expose DV DT-DL vs ST-DL as a skin infolabel4c77c613c4Subtitles: premultiply alpha in linear light for bitmap overlays51bbacad82Subtitles: linear-light PMA for ASS glyph rendering (GLES)b2c7b77da2Settings: clarify OSD base brightness applies to text-based subtitles2fb8794f5fSettings: default VS10 12-bit dither off; warn about TV detail enhancement9785411af4guilib: gate 2-loop label scroll cap on smartredraw9f5daefcaeSettings: add 12-bit Deep Color pipeline toggle, drop standalone ditherc358e769f7Settings: add TV preset for DV/HDR pipeline3cdeed7700Settings: gate L5 children on Display-LED and drop preset L5 auto-enable49cfc9ef62DV: gate CMv4.0 append on Display-LED onlyf2704cc630Settings: TV preset picks DV type by actual EDID capabilityd83899a39eSettings: scope preset prefer.12bit to Display-LED only61d8cd1a79DV: note L5 reference video limitation in detect active area helpce53ecea6dDV: gate VSVDB children re-show on DV group visibility08d047b3b0Settings: enable force.modes in Samsung/Auto-no-DV preset branch293554adaaSettings: Samsung/no-DV preset uses HDR10 422 12-bit, not LLDV74116119c0Settings: extend Auto for HDR10-only sinks, never auto-pick 4:4:4d5f859ef92Revert "fix 3D SBS/TAB aspect ratio on Amlogic hardware video plane"a853ebcf8aRevert "fix 3D SBS/TAB/FP: always halve viewport in stereo modes"05964980cePlayerProcessInfo: expose HDMI wire format as skin infolabeld39150de49DVDDemuxFFmpeg: fix per-eye DAR for stereo MKV under ffmpeg 8280a410edaPlayerProcessInfo: prettify HDMI wire format6886c379c5BaseRenderer: drop SBS per-eye ratio divide that over-corrects FSBS8b090d7cdeDV: skip L5 subtitle signal when text subs sit inside active areaf2d73e7488DV: update L5 signal mode help for margin-aware text sub check7917f65cc4DV: use calibrated subtitle baseline for L5 signal overlap checkc7dc3dc933AE: add setting to ignore stream-carried downmix metadata0e8fb4145eSettings: clarify 12-bit pipeline help covers 8/10-bit content too355b979804PlayerProcessInfo: read HDMI wire format from /config, not /attrca40d5adb2DV: decouple VPP 12-bit preservation from wire EDID gate for tunnel modes50adf48985VideoSyncAML: drive clock from real vsync, fix fallback precision3ee620b8dcVideoReferenceClock: re-enable thread so VideoSyncAML actually runscb67e3bf82VideoReferenceClock: keep synthesized vblank interval in double precision74f408d677Settings: gate vsync reference clock behind a CoreELEC toggle3007dc5e77VideoReferenceClock: extend double-precision vblank interval to TimeOfNextVblankf0356a5c42VP: fix audio desync + passthrough stutter at start of x264 B-pyramid playback4d8527a40dVP: extend over-doubled framerate fix from H.264 to all interlaced codecs0767b6e5b0VideoRefClock: diagnostic logs for videodebug-overlay frame skipping232c2d5e27VideoSyncAML: refresh fps each loop, recover from mid-Run mode switchesb6eed0cbf5VP: scope stream-start reorder artefact gate to H.264 video350120bc6dSettings: 12-bit Deep Color toggle pins 4:2:2 + forces 12bit over user CDbd3f9ce8faDV: make Deep Color EDID gate CS-aware to avoid broken signals926c5bd38cVideoSyncAML: don't catch up across kernel-ts blackouts22c97c995dVideoRefClock: refresh m_RefreshRate on mid-Run fps change56fbeac67f3D filename detection: match FSBS/FTAB in addition to HSBS/HTAB1827af0e78VideoPlayer: apply per-eye DAR for filename-detected stereo filesd0b24bb05dVP: add CoreELEC fast (keyframe-accurate) seek togglea66803e1c9VP: fix 1080i25 playing at 100fps when fpsrate is double-doublede4901eb22dAML: skip refresh-change delay when HDMI mode isn't actually changing1f16c7e3493D: force window rebuild on quit-stereo-on-stop so kernel flag clears59026563fdSettings: raise audiooutput.volumesteps cap to 100 (was 90)6cb119cd33VP: stop playback on broken-source stalls and seek wedges5bdf3774efaddons: trust repository.p3i in default manifestf983ec3dc2addons: trust service.p3i.sb in default manifest72daca6f5aVP: re-read LAV mode setting on each passthrough codec Open8287eadb31DV: live re-push of L5 sysfs flags on setting change5e7ac9ed6cDV: per-folder L5 active-area override channelcdcc495b8bDV: short-circuit L5 active-area detect when override is setda6cd5657fDV: allow empty default on L5 override setting82888ee8ffDV: runtime-promote L5 override visibility (unblock JSON-RPC writes)cd2b837c85DV: present L5 override to TV via xbmc_force_l5_override sysfsc4f833a41fDV: stop detect before pushing L5 override sysfs values7732d11e37DV: switch L5 override to xbmc_override_l5_* sysfs namespaceeaa7c5d3d7DV: log full kernel + cached state at every DV transition7e8bd175e6DV: extend state dump with InfoFrame/colorimetry params9c3eceb04eDV: clear HDR10/VSVDB InfoFrame injection flags on dv_off0de23bbd48DV: log HDMI TX link state + add vsync-stall snapshot1cac9d582bDV: clear FLAG_TOGGLE_FRAME in aml_dv_off0594cd12e5DV: force-clear FLAG_TOGGLE_FRAME after toggle wait timeout124051fbffDV: never re-assert /sys/class/display/mode=null in round-trip sitesa21b606a20VideoPlayer: gate PTS-offset reset on external subtitle presence56e7abff2eAMLCodec: minimal vmap for non-interlace DVab954a287aDV: open VS10 on auto-played next item5456d4741eVideoSync: opt-in stall fallback to legacy timing635f2fbf86VideoSync: nest fallback setting under usedisplayasclock96e2dfe8f7Subtitles: skip ass_render_frame for unchanged static overlaysec1bd7e98cSubtitles: split oversized libass glyph atlas across GLES textures2e31637b14DV: opt-in re-assert of VS10/HDR output after resolution switchb4f94bb271DV: extend re-assert to DoVi (IPT) output + avoid resolution re-trigger loop5417d94c2cVP: don't drop deliberate resume seeks during startup (fastseek regression)961a1a730bDV: make active-area detect I/O throttle cache-awarebed05a0cd9Audio: normalise AC3/EAC3 naming in settings strings239fcde5a2DV: default active-area detect I/O throttle to on04993770cbDV: abort active-area scan mid-read when playback buffer goes criticale287260247DV: honor container default flag for multi-video-stream DV files07ac8cd8b5skin: default to skin.p3i.estuaryKernel (linux-amlogic, 31 commits)
f539fe4842hdmitx: add hdr10plus_vsif_hold parameter to suppress VSIF during mode switchesf178b75a87hdmitx: fix VS10 non-IPT config sysfs reporting stale DV EOTF45cc1b453fhdmitx: fix hdr10plus_vsif_hold blocking VSIF cleanup on stopbc1df3b935meson_wdt: keep watchdog armed during reboot to recover from kernel hangse9643b1e2fmeson_wdt: cancel hrtimer auto-ping when userspace takes over watchdogd6204c84a7amdolby_vision: clamp max mastering luminance to 9997 nitsdfc45f86e3amdolby_vision: add Player-Led metadata pre-processing from avdvpluse16c57dc55amdolby_vision: remove duplicate pre-control_path blocksf9bf2f463ehdmitx: suppress HPD events during reboot to prevent shutdown deadlocke558f6748chdmitx: only disable TMDS PHY on halt/poweroff, not reboot47e55465e4amdolby_vision: add per-frame metadata debug output after control_pathcde900ed91amdolby_vision: allow source_meta_copy for Player-Led HDR10+ conversion8447222bc4Revert "hdmitx: only disable TMDS PHY on halt/poweroff, not reboot"94d6d7bc78amdolby_vision: port VSVDB source luminance clamping from avdvplusa7fa38397famdolby_vision: remove xbmc_dv_hdr10plus_conv dependency, match avdvpluscd35ee2342DV: add separate sysfs for L5 subtitle suppressionfb4689e707DV: filter variable-length L8 blocks in source_meta_copy5891351ce9DV: cache provider name comparisons as booleansca4e854208DV: add L5 active area injection from Kodi-detected valuesd3782fec4dDV: respect OSD/subtitle gating for detected L5 injection15ae7010c6DV: add hw_dump debug command for blackout diagnosis7e7eaf9646DV: gate dump_buffer behind debug_dolby575f946a15hdmitx: don't force I2S-8ch source for 2-ch PCM in aout notify63ee744534amdolby_vision: rename xbmc_dv_dither → xbmc_dv_deep_colorfd07f44359usb-audio: add HyperX Cloud II Wireless quirkb75792bc2fosd_fb: drop VD1 gate from FBIO_WAITFORVSYNC_64f20cbf6f03amdolby_vision: xbmc_force_l5_override for service.p3i.override274a426e5damdolby_vision: force_l5_override is truly unconditional61aaaed51camdolby_vision: separate xbmc_override_l5_* from xbmc_detected_l5_*76ac2df92fauge: enable audio DDR arbiter and HBR QoS tuning0d7f64a381amvecm: gate per-vsync PQ work on CSC_FLAG_BYPASS_PQ for native DVCoreELEC (distro & packages)
434e103872Update FFmpeg and dependencies to 8.1 — @jamal0b7fcbe942[systemd] Enable shutdown/reboot watchdog via system.conf.d drop-inb92490619c[systemd] Enable RuntimeWatchdogSec to ensure watchdog is active6c54f13ec6[systemd/connman] Mitigate intermittent reboot hang after screensaver wakeec04ca603e[systemd] Move DefaultTimeoutStopSec to separate drop-in832277f9e0libass: update to master (fadc390583, post-0.17.4)6ec3a583e2ffmpeg: enable EAC3 encoder119788157elibdovi: add cmv29_payload_end_bit for bit-precise CMv4.0 append278f19c148libdovi: upgrade to 3.3.2c33b73ce83libdovi: upgrade to 3.3.3 (main post-merge), drop cmv29 patch76e5b343e2libdovi: rebuild prebuilt with dovi_generate_from_json support446ef91255FFMPEG: Update mvc patch to upstream92cd61d00f[Amlogic-ng] Add out-of-tree uas.ko package27600b532cuas: append 5 unusual_uas.h entries backported from v6.6df1ad14616busybox: bump vm.min_free_kbytes to 32 MB52dd4b6386[Amlogic-ng] Add zram compressed-swap package4ef20dc9f8zram: fix systemd ordering cycle with local-fs.targetfec6af07dbp3i: add repository.p3i fetch + inputstream.ffmpegdirect Piers overrided47a489f87p3i: backport CBCS for HLS+ClearKey in inputstream.adaptive70306c16fbRTL8152-aml: bump package to 84834745 (v2.21.4-1)2be8159e51uas: add boot and hot-plug rebind plumbing9e06e9e5a7uas-rebind: per-device blacklist via /storage/.config/uas-blacklist.txt2eb06b93adkodi: pre-install service.p3i.sb from p3i repoa06e07667budevil: switch to maintained udevil-ng source — @SamuriHLf529f0c8d3zram: read user override from /storage/.config/zram.confc1f5a579c2wireguard-linux-compat: refresh snapshot checksum — @SamuriHLf9e8f2100bavahi: run autogen.sh from PKG_BUILD — @SamuriHLf35ad8bc33rust: bump toolchain to 1.93.1 + cargo-c v0.10.22565b78e6e5udevil: point source at pannal/udevil518924c8efudevil: never overwrite mount.ntfs4773a1a60ckodi: cap glibc arenas on ARM (MALLOC_ARENA_MAX=8) for heavy-Python RAM161e8d2deaskin.p3i.estuary: bundle as default skin, packed from sourceCoreELEC Settings Addon
5e04eca2e0Skip audio device enumeration when Bluetooth is disabled22dc8486c7Add 2s timeout to get_audio_devices JSON-RPC call1dd5f70754Move system_has_bluez/connman checks inside timeout-protected threadse9934bd83bAdd timeouts to all synchronous D-Bus and JSON-RPC calls88d7b15d9fSkip bluetooth start_service when BT is disabled5a6f097f02Initialize bluetooth module when user enables BT at runtimedf8c77c4e7bluetooth: stop overwriting user audio selection at startupe4b9b1dbc1Add UAS opt-in toggle under Hardware → HDD0c7ccc9d9eUAS InfoText: document per-device blacklist fileAddon repository (repository.p3i)
438a328Add inputstream.ffmpegdirect 22.2.5.1 (Piers, built against FFmpeg 8.1)0b2f566README: note that the repo is pre-installed on p3i firmware27b1649inputstream.adaptive 21.5.18-p3i.1.2: backport CBCS for HLS+ClearKey0996208Add service.p3i.sb 0.1.0: seamless-branching LAV auto-switcher8c50714service.p3i.sb 0.1.1: add toast notification on LAV switche990b5eservice.p3i.sb 0.1.2: SB/SB.txt marker file + new icon7f4f7c2service.p3i.sb 0.1.3: fix codec detection (VideoPlayer.AudioCodec)8ef12f6service.p3i.sb 0.1.4: bump toast timeout to 5s for HDMI mode switchescc9a054service.p3i.sb 0.1.5: prefix-match codec gate (truehd_atmos, eac3_atmos)4b521eerepository.p3i 0.1.1: bump to flush stale client caches30e8fcfservice.p3i.override 0.1.0: new opt-in per-folder override.ini addona1879dfservice.p3i.sb 0.1.6: per-filename listing in SB/SB.txt markerbba6223repository.p3i 0.1.1: add missing root-level zip38c39e8service.p3i.override: SETTINGS.md examples sectionc56e5e8service.p3i.override 0.1.1: walk one parent folder3e4548fgitignore: drop accidentally-committed pycache from override addone8ce5b4service.p3i.override 0.1.2: catalog all subtitle settings364e6cfservice.p3i.override 0.1.3: distinct gear icon2f62592service.p3i.override 0.1.4: update addon.xml description9746982service.p3i.override 0.1.5: stop deferring to PlexMod4Kodiec73f53repository.p3i 0.1.2: regenerate manifests + bundle service.p3i.override zips966e443service.p3i.override: document that L5 override also disables detectf3164d6service.p3i.override 0.1.6: log JSON-RPC error on SetSettingValue fail2f5b5ffservice.p3i.override 0.1.7: document CMv4 visible-dependency caveatsdeceeb0service.p3i.override 0.1.8: L5 override now flows to TV; 0,0,0,0 valid3898368Add plugin.video.themoviedb.helper 6.15.6-p3i.10a8cd1aAdd script.embuary.helper 2.0.8-p3i.1: skip background grabber during playbackc2afc9eembuary.helper: add 2.0.9-p3i.1 (matrix base) alongside 2.0.8-p3i.1277b3a3service.p3i.sb: add SETTINGS.md (marker file + settings reference)Installation
Note
On a dirty upgrade your current skin is kept; the new
skin.p3i.estuarydefault only applies on a fresh flash. To use it on an existing install, switch to it under Settings/Interface/Skin.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, avdvplus and earlier p3i (T1–T3b) builds.
Should hitting reboot result in a black screen (long-standing issue with any build), wait 10 seconds to make sure this wasn't just a fluke, then unplug and re-plug the device's power. The upgrade will commence afterwards.
Reset Settings/System/CoreELEC, reboot.
Caution
Resetting Settings/System/CoreELEC to defaults after doing this is necessary. Not the CoreELEC Settings Addon!
Resetting Settings/System/Audio might be necessary for you to see the new settings.
Resetting Settings/Player/Subtitles might be necessary for you to see the new subtitle settings.
2. Dirty (safe)
Drop the update tar into your CoreELEC update folder, shut down the device, pull the power plug for 30 seconds, replug.
Reset Settings/System/CoreELEC, reboot.
Caution
Resetting Settings/System/CoreELEC to defaults after doing this is necessary. Not the CoreELEC Settings Addon!
Resetting Settings/System/Audio might be necessary for you to see the new settings.
Resetting Settings/Player/Subtitles might be necessary for you to see the new subtitle settings.
3. Flash
Use the provided Flash img.gz to prepare your SD card as you would with any other CoreELEC build.
Thanks
A massive shoutout to everyone involved in this build! Special thanks to the testers and reporters who chased down the DV projector flip, the anime-typesetting stall, the interlaced/MBAFF cases and the reboot hangs, and to the upstream projects this builds on: avdvplus (DV metadata handling), libdovi and libass.
Full Changelog (Kodi core): https://github.com/pannal/xbmc/commits/T4/
Full Changelog (CoreELEC-Settings): https://github.com/pannal/service.coreelec.settings/commits/T4
Full Changelog (Kernel): https://github.com/pannal/linux-amlogic/commits/T4
Full Changelog (CoreELEC): https://github.com/pannal/CoreELEC/commits/T4
Addon repo: https://github.com/pannal/p3i_repo
Contributors
Sources and contributors whose work landed in T4:
skin.p3i.estuary, the new default skin.mkafilesThis discussion was created from the release Release T4.
Beta Was this translation helpful? Give feedback.
All reactions