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:
- For the first time, a real display-synced video clock: smoother playback, less judder.
- Reboot and shutdown are watchdog-protected: the occasional hang now reboots itself instead of needing a power pull.
- A new default skin,
skin.p3i.estuary. - A pile of interlaced / MBAFF / framerate bugs fixed (no more 100fps 1080i or wrong-speed playback).
- Keyframe-accurate fast seek (on by default).
- Lower RAM use and less heap fragmentation, so the box stays stable under memory pressure.
- A pre-installed addon repo (
repository.p3i) with our helpers and patched inputstreams. - Simpler DV/HDR setup presets, automatic DV L5 active-area detection, and a fix for the projector SDR↔HDR flip.
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 VideoSyncAML locks 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.helper or script.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.
- The shutdown/reboot watchdog is armed again (
meson_wdtstays alive through reboot; systemdRuntimeWatchdogSec), so a kernel hang during restart self-recovers within the watchdog timeout instead of wedging for good. - HPD events are suppressed during reboot and TMDS PHY handling was corrected, which fixes a shutdown deadlock.
- The intermittent reboot hang after screensaver wake (a connman/systemd ordering problem) is mitigated.
- A shutdown watchdog inside Kodi force-exits if
Stop()deadlocks, and Python addon stop/terminate timeouts are now configurable inadvancedsettings.xml. - The CoreELEC Settings addon now wraps every synchronous D-Bus / JSON-RPC call in a timeout (the bluez/connman probes run in timeout-protected threads), so a stuck service can't freeze the Settings UI or delay a reboot. Bluetooth also stops overwriting your audio-output choice at startup.
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. Stock skin.estuary stays 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:
- H.264 MBAFF 1080i no longer plays at the wrong framerate.
- 1080i25 no longer runs at 100fps (a double-doubled fpsrate).
- Hardware-confirmed interlaced content is no longer overridden by a wrong "progressive" guess, and 29.97/25fps progressive is no longer mistaken for interlaced.
- Amlogic deinterlace latency is compensated, which tightens A/V sync on interlaced material.
- Fixed the audio desync and passthrough stutter at the start of x264 B-pyramid playback.
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
- Lower RAM use, no more slow memory creep. glibc's secondary arenas are capped on ARM (
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. - A new zram compressed swap is on by default at 1 GiB. Because zram compresses roughly 3:1 in RAM, that gigabyte of swap costs only about a third of a gigabyte of physical RAM when full, so it stretches the box's usable memory by close to a gigabyte under pressure instead of stalling or OOM-killing. Resize or disable it in
/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
- New DV/HDR pipeline presets: a TV preset that picks the DV type from your display's actual EDID capability, and a Samsung / no-DV preset (HDR10 4:2:2 12-bit). The Player-Led vs Display-LED gating was cleaned up throughout, so settings show and hide sensibly.
- A single 12-bit Deep Color pipeline toggle (on by default; it pins 4:2:2 and forces 12-bit) replaces the old standalone dither setting. It holds the whole pipeline at 12-bit and avoids the 12-bit → 10-bit → 12-bit truncation round-trip, so precision is preserved instead of thrown away and rebuilt. How visible that is depends on the content. The matching kernel param was renamed
xbmc_dv_dither → xbmc_dv_deep_color. - "Auto" no longer forces 4:4:4, and now also covers HDR10-only sinks.
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.override addon, 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_hold parameter) and releasing it once the mode settles.
13. Subtitles
- libass updated to master, with a new ASS-override setting.
- Heavy anime typesetting that used to drop video to ~1fps is fixed by a static-overlay render cache that skips re-rendering signs that haven't changed; animated events still render every frame.
- Oversized glyph atlases are paged across multiple GLES textures, which fixes the white blocks on very large typesetting.
- Linear-light premultiplied alpha for ASS glyphs and bitmap overlays, plus a gray-fringe fix and zoom-dependent filtering for bitmap subs.
- Image-based subtitle scaling (resize and position PGS/VobSub to taste), continuing the PGS colour/tonemap work from T3a.
14. Audio
- New option to transcode to EAC3 when EAC3 passthrough is on (with sink validation).
- New option to ignore stream-carried downmix metadata.
- The volume step cap is raised to 100 (was 90) for finer control.
- Fixed downmix normalization for integer source formats, and the surround mix level from codec metadata is now passed to the resampler.
- Audio setting labels use consistent AC3 / EAC3 naming (no more inconsistent hyphenation).
- (Kernel) Fixed the TrueHD → 2-channel PCM mute on the SPDIF/sysdefault path.
15. Live TV
- A/V sync on passthrough live streams now uses the audio clock and skips SpeedAdjust.
- Fixed the decoded-audio mute on live streams.
- Fixed the long black screen on a live-TV channel change while DV mode is on.
16. Dolby Vision: HDR10+ → DV P8.1 conversion and CMv4.0
- CMv4.0 dynamic metadata is now appended for native DV content through the libdovi API (bit-precise), replacing the old bitstream surgery.
- HDR10+ → DV P8.1 conversion is restored and improved (CMv4.0 blocks included, via the
dovi_generate_from_jsonpath), with source-luminance clamping ported across for proper Player-Led dynamic dimming. - Fixed the purple playback and exit stall on a DV → HDR10 transition.
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
- FSBS / FTAB filename detection (alongside HSBS/HTAB), with correct per-eye DAR for filename-detected and MKV stereo files under FFmpeg 8.
- Reverted the earlier over-correcting viewport-halving changes; stereo aspect is handled correctly on the Amlogic video plane.
20. Storage & USB
- UAS (USB Attached SCSI) opt-in: a new toggle under Hardware → HDD (CoreELEC Settings addon) enables an out-of-tree
uas.ko(blacklisted by default), with a per-device blacklist; the quirks table is backported from v6.6. - The
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:
- Set the AVR's HDMI input Signal Format (the "4K/8K Signal Format" option) to Enhanced. This is the classic Denon/Marantz 4K-black fix.
- Update the AVR firmware.
- To test or work around it, bypass the AVR: run the box straight into the TV and take the audio back over eARC.
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.
Video sync & reference clock
Interlaced / MBAFF / framerate
Live TV
Seeking
Dolby Vision — L5 active-area detection, throttle & subtitle restriction
Dolby Vision — output re-assert after mode switch
Dolby Vision — display-null wedge & toggle flags
Dolby Vision — CMv4.0 / HDR10+ conversion (ported from avdvplus R9 / CPM)
Dolby Vision — multi-stream / SW decode / misc
HDR10+
Subtitles
Audio
12-bit pipeline / DV+HDR settings & presets
3D / stereoscopic
Skin
Skin infolabels
Stability
Build / addons
xbmc / Kodi (212 commits)
Kernel (linux-amlogic, 31 commits)
CoreELEC (distro & packages)
CoreELEC Settings Addon
Addon repository (repository.p3i)
🎬 xbmc / Kodi
FBIO_WAITFORVSYNC_64), fix fallback precision
TimeOfNextVblank
m_RefreshRate on mid-Run fps change
video_rate exceptions for interlaced and H.264 content on Amlogic
CalcFrameRate from halving fps for demuxer-flagged interlaced
xbmc_override_l5_* / xbmc_force_l5_override namespace; runtime-promote visibility; short-circuit detect when set
/sys/class/display/mode=null in round-trip sites
FLAG_TOGGLE_FRAME in aml_dv_off; force-clear after toggle-wait timeout
cmv29_payload_end_bit)
dovi_generate_from_json for HDR10+ → P8.1, including CMv4.0 metadata in the RPU
xbmc_dv_hdr10plus_conv to match avdvplus
PTS_US64 marker into the DV FEL RPU (DT-DL only)
aml_dv_off; sync EGL creation with DV pipeline restoration
hdmitx20)
ass_render_frame for unchanged static overlays
eac3passthrough is enabled, with sink validation (+ German translation)
audiooutput.volumesteps cap to 100 (was 90)
prefer.12bit to Display-LED
skin.p3i.estuary (by vlix; stock skin.estuary kept in the manifest as a fallback)
/config not /attr
Stop() deadlocks
advancedsettings.xml
[depends][target] Bump to FFmpeg 8.1 (@U3knOwn)
.mka files (@the-black-eagle)
repository.p3i and service.p3i.sb in the default manifest
🐧 Kernel (linux-amlogic, amlogic-4.9-20)
osd_fb: drop the VD1 gate from FBIO_WAITFORVSYNC_64 (real vsync for the new video clock)
hdmitx20: add hdr10plus_vsif_hold to suppress VSIF during mode switches; fix it blocking VSIF cleanup on stop; fix VS10 non-IPT config reporting a stale DV EOTF
amvecm: gate per-vsync PQ work on CSC_FLAG_BYPASS_PQ for native DV
amdolby_vision: L5 active-area injection from Kodi-detected values
amdolby_vision: separate xbmc_override_l5_* from xbmc_detected_l5_*; xbmc_force_l5_override (truly unconditional) for service.p3i.override
amdolby_vision: respect OSD/subtitle gating for detected L5 injection; separate sysfs for L5 subtitle suppression
amdolby_vision: rename xbmc_dv_dither → xbmc_dv_deep_color
amdolby_vision: port VSVDB source-luminance clamping + Player-Led metadata pre-processing from avdvplus
amdolby_vision: allow source_meta_copy for Player-Led HDR10+ conversion; clamp max mastering luminance to 9997 nits
amdolby_vision: filter variable-length L8 blocks; remove the xbmc_dv_hdr10plus_conv dependency; remove duplicate pre-control_path blocks; per-frame metadata debug
hdmitx: 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 over
auge: enable audio DDR arbiter and HBR QoS tuning
usb-audio: add HyperX Cloud II Wireless quirk
hw_dump debug command + gate dump behind debug_dolby
📦 CoreELEC (distro & packages)
cmv29_payload_end_bit for bit-precise CMv4.0; rebuild prebuilt with dovi_generate_from_json
kodi capped glibc arenas on ARM (MALLOC_ARENA_MAX=8) for heavy-Python RAM; busybox bump vm.min_free_kbytes to 32 MB
/storage/.config/zram.conf
uas.ko package + boot/hot-plug rebind plumbing; per-device blacklist via /storage/.config/uas-blacklist.txt; +5 unusual_uas.h entries backported from v6.6
pannal/udevil (a restored alpharde fork over IgnorantGuru 0.4.4); never overwrite mount.ntfs
system.conf.d drop-in; enable RuntimeWatchdogSec; mitigate the intermittent reboot hang after screensaver wake (connman); move DefaultTimeoutStopSec to a separate drop-in
repository.p3i fetch + inputstream.ffmpegdirect (Piers) override; pre-install service.p3i.sb; backport CBCS for HLS+ClearKey in inputstream.adaptive
RTL8152-aml bump to v2.21.4-1; rust toolchain 1.93.1 + cargo-c 0.10.22; avahi autogen fix and wireguard-linux-compat checksum refresh (@SamuriHL)
⚙️ CoreELEC Settings Addon
start_service and audio-device enumeration when BT is disabled
bluez/connman checks inside timeout-protected threads; add a 2s timeout to the get_audio_devices call
🧩 Addon repository (`repository.p3i`)
repository.p3i (served at p3irepo.pm4k.eu), bundling override addon zips + regenerated manifests
inputstream.ffmpegdirect 22.2.5.1 (Piers, FFmpeg 8.1)
inputstream.adaptive 21.5.18-p3i.1.2 — CBCS backport (HLS SAMPLE-AES + ClearKey on Kodi 21.3)
service.p3i.sb 0.1.0 → 0.1.6 — seamless-branching LAV auto-switcher: SB/SB.txt marker (per-filename/glob), prefix-match codec gate, toast on switch. SETTINGS.md
service.p3i.override 0.1.0 → 0.1.8 — per-folder override.ini engine; subtitle-settings catalog; one-parent-folder walk; L5 override flows to TV (0,0,0,0 valid). SETTINGS.md
plugin.video.themoviedb.helper 6.15.6-p3i.1 — skip SQLite VACUUM while a player is active; restore vacuum/delete interval guards
script.embuary.helper 2.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)
c517968d46 DV: bypass VS10 for SDR BT.2020 content to preserve gamut
5b90f408e8 Settings: improve help text for CoreELEC/DV settings
c10a6bbf73 Settings: Fix description for Reduce color banding (VS10) not representing the default
3d5e68c206 Revert MAT packer Reset on seek for standard passthrough path
66041244fa Settings: Default refresh rate change delay to 2.5s
45b589f6af HDR10+: hold VSIF during mode switches to fix intermittent black screen
adaebdb09d DV: re-enable L5 active area subtitle restriction with stream-level fix
ba13ba2231 DV: fix L5 active area subtitle distortion — use margins instead of rect
84203e490b HDR10+: fix VSIF hold sysfs path (hdmitx20, not amhdmitx)
e19262996a DV: track actual subtitle presence for L5 suppression
2781436f7d DV: fix L5 active area subtitle distortion — use position offset
f8d45730f1 DV: fix HDR10 OSD peak brightness slider not applying
80c54338ba DV: fix long black screen on live TV channel change with DV mode ON
7cf78bbbc8 DV: disable style margins when L5 active area overrides subtitle position
97fdafd950 DV: add option to apply user subtitle position with L5 active area
01083915bf DV: fix L5 active area — track per-frame, handle top alignment, clamp
12a6237355 DV: handle PM4K invisible overlay for L5 OSD detection
ebb236463b Make Python addon stop/terminate timeouts configurable via advancedsettings.xml
4897023d03 DV: cache PM4K seek dialog ID for L5 OSD detection
4b4e7a021b [depends][target] Bump to ffmpeg 8.1 — @U3knOwn
3e92d1e4b0 DV: skip redundant sysfs writes for L5 subtitle and OSD flags
f617d90237 DV: sync EGL creation with DV pipeline restoration (minimal fix)
c6da3465b9 DV: fix L5 active area restriction for top-aligned subtitles
c66ebf5afb DV: reduce per-frame overhead in L5 and OSD handling
b1983d025b DV: fix subtitle alignment corruption in L5 active area handling
ac5bd9af38 DV: apply L5 forceBottomAlign override per-frame in RenderImage
e3c3d99675 DV: use INSIDE_ACTIVE_AREA margins for L5 subtitle restriction
13e870354e DV: compensate font scale for L5 active area margins
a59da9dbf5 DV: restore HDR10+ to DV P8.1 conversion sysfs write
9cfcdf7fd2 DV: include CMv4.0 metadata in HDR10+ to P8.1 RPU
2feaebb522 DV: honor user position and margin in L5 active area when enabled
f35ae5749d DV: disable xbmc_dv_hdr10plus_conv sysfs write, match avdvplus
919fd5f520 DV: hide L5 subtitle restriction settings in Player-Led mode
debf11c5e0 DV: clamp image-based subtitles to L5 active area
aa0c7db945 DV: use style MarginV instead of renderer margins for L5 restriction
3130d5e832 DV: update restrict setting description for PGS subtitle support
7b4eb92c8f DV: signal image subtitle presence for L5 suppression
c103d3cc66 DV: restructure L5 settings with parent toggle and subtitle signal mode
6afa3d3b98 Add shutdown watchdog to force-exit if Stop() deadlocks
5f4c01c60b DV: gate CreateNewWindow IPT restore on playback-active flag
3de31d1da4 DV: update restrict setting description for PGS subtitle support
a84242cee9 Use ffmpeg to read more tags from mka files — @the-black-eagle
5f0e71b25d DV: scale text subtitle margin relative to active area height
28ca0372af DV: add proportional padding when clamping image subs to L5 active area
8be699db6d DV: reset L5 state on playback stop
8409175d36 DV: add CMv4.0 dynamic append for native DV content
f1a73e7667 DV: fix CMv4.0 setting description — applies to all profiles
04e2493029 DV: cache display params for CMv4.0 append decision
b2ca587ed0 DV: fix CMv4.0 Auto mode always appending on first frame
239a35c461 DV: skip redundant off/on cycle in aml_dv_start when already in IPT
5b72b8c5e6 DV: update CMv version string dynamically, not just on first frame
ee47eb3333 DV: prefix appended CMv4.0 version string with "V"
5b4660a797 RenderManager: handle fps-only change without full reconfigure
d2f8038cec AMLCodec: abort blocked AddData write loop on flush
9ef5f7cb21 Subtitles: fix gray fringe on bitmap subs and add zoom-dependent filtering
4d88803c81 DV: move synchronous IPT restore before early return in CreateNewWindow
ea14c24c9a DV: skip display_auto_now in aml_dv_off during DV_MODE_ON IPT restore
c8292d7ae7 DV: trigger display mode re-write after IPT restore in early-return path
f03b29c114 DV: force VPP reconfiguration in aml_dv_off via display mode re-write
181f808b3c Subtitles: update libass to master, add ASS override setting
cbb53869d1 DV: add L5 active area detection via FFmpeg border scan
65e98e71c8 DV: ignore unreliable L/R borders in active area detection
4b9816a4a4 DV: fix double percent in active area detection log output
370ae4c1a5 DV: use majority consensus for active area detection, not unanimity
b551f631db DV: fix detection not running when g_application.CurrentFile() is empty
e27ede46b7 DV: add diagnostic logging for active area detection start path
1bb164993e DV: restrict subtitles for pre-cropped frames via display letterbox
af9c4f6531 DV: fix off-by-one in AR snap border computation
3adbb9cad5 DV: retry dark frames in active area detection
01fcf25655 DV: improve active area detection robustness
17885aac29 DV: add early exit and P7 FEL note to setting description
66abcef550 DV: add diagnostic logging for detection codec/decode failures
a643c42eec DV: fix detection decode loop for multi-stream remuxes (Profile 7)
1b8acf0704 DV: use symmetric fallback when one T/B border has consensus
615bc17f34 DV: early exit detection when T/B consensus reached
f11adbfd1d DV: decode only keyframes for active area detection
7667810c4c DV: use contrast-based frame skip instead of absolute brightness
e34ce1b730 DV: adaptive scan threshold for dark DV content
ecc039d1f1 DV: require symmetric L/R for pillarbox detection
a3ce4656f7 DV: dynamic T/B consensus threshold and corroboration
9a871ec393 DV: skip CMv4.0 append only for CMv2.9 4+ L2 trims
71902a2c13 DV: improve active area detection robustness and pre-cropped handling
a25e2afc4b DV: start active area sampling at 0% to catch fullscreen intros
1fe1a20714 DV: require minimum usable samples for active area detection
6a04c57a2e DV: tighten minimum usable sample threshold to 6/7
be6ece1e6f DV: fix variable AR check for frames with one-sided false bar reading
baa0374109 DV: expose active area detection state to skin
7fee2bb82e AE: fix downmix normalization not applied for integer source formats
db2f410b8d AE: pass surround mix level from codec metadata to resampler
ecb3fbf89d AE: transcode to EAC3 when eac3passthrough is enabled, with sink validation
75101244b2 AE: update German translation for EAC3 transcode setting
e113d1599b VP: fix wrong framerate for H.264 MBAFF interlaced content
8babfb6474 DV: gate L5 active area detection on native DV content, skip P9
f4c3638daa VP: don't override hardware-confirmed interlace with progressive fallback
ad6ce814b8 VP: fix video_rate exceptions for interlaced and H.264 content on Amlogic
21527d77dc VP: compensate Amlogic deinterlace pipeline latency for interlaced content
6209e73cac DV: add cancel flag and optional I/O throttle for active area detection
b3affc3f65 DV: disable L5 detection by default, add SMB warning to description
cfcc98049e DV: add Inactive (5) and Running (6) detection states for skin
d89cd65a2d DV: use bit-precise CMv4.0 append via libdovi cmv29_payload_end_bit
47996ba69f DV: log when I/O throttle is active for detection diagnostics
90815a93e7 DV: make throttle setting a child of detect active area
b2eaca4a57 DV: abort active area scan early when source L5 appears
329c8c8986 fix live TV passthrough A/V sync: use audio clock, skip SpeedAdjust
06bfb4a486 DV: fix detection state stuck on Running for BDMV/ISO sources
1b9218203e DV: use libdovi API for CMv4.0 append, remove bitstream surgery
40322a45c0 DV: skip active area detection for BDMV/DVD disc sources
e4f0e572e8 VP: require positive progressive confirmation for interlace fallback
f18d3b3235 fix live TV decoded audio mute: extend sync fix to all live streams
f9fdaf2016 DV: use libdovi dovi_generate_from_json for HDR10+ to P8.1 conversion
f5dcf28fe5 DV: manage DV pipeline for SW-decoded content via GLES renderer
46d126bfb4 DV: flush decoder to extract buffered frames during detection
fc3a874b45 fix 3D SBS/TAB/FP: always halve viewport in stereo modes
abef20093c fix 3D SBS/TAB aspect ratio on Amlogic hardware video plane
554662bc00 fix 29.97/25fps progressive wrongly treated as interlaced
1f73afeae2 VP: don't let transient DI progressive clear demuxer interlace flag
e00f1ff398 VP: block progressive fallback entirely for demuxer-flagged interlaced
6d55dfb317 DolbyVision: Implement C++ options filler for VSVDB colour space setting — @Sebastiiii
7d874c2d1c DVDDemuxFFmpeg: distinguish independent DV streams from dependency layers
b1bbad9ae5 VP: block CalcFrameRate from halving fps for demuxer-flagged interlaced
709d043146 DV: skip L5 detection for MPEG-TS and stalled decoders
b9b7bb7cf7 DV: fix purple playback and exit stall on DV → HDR10 transition
63ce9ad29e BitstreamConverter: inject PTS_US64 marker into DV FEL RPU (DT-DL only)
39865d1a9d PlayerProcessInfo: expose DV DT-DL vs ST-DL as a skin infolabel
4c77c613c4 Subtitles: premultiply alpha in linear light for bitmap overlays
51bbacad82 Subtitles: linear-light PMA for ASS glyph rendering (GLES)
b2c7b77da2 Settings: clarify OSD base brightness applies to text-based subtitles
2fb8794f5f Settings: default VS10 12-bit dither off; warn about TV detail enhancement
9785411af4 guilib: gate 2-loop label scroll cap on smartredraw
9f5daefcae Settings: add 12-bit Deep Color pipeline toggle, drop standalone dither
c358e769f7 Settings: add TV preset for DV/HDR pipeline
3cdeed7700 Settings: gate L5 children on Display-LED and drop preset L5 auto-enable
49cfc9ef62 DV: gate CMv4.0 append on Display-LED only
f2704cc630 Settings: TV preset picks DV type by actual EDID capability
d83899a39e Settings: scope preset prefer.12bit to Display-LED only
61d8cd1a79 DV: note L5 reference video limitation in detect active area help
ce53ecea6d DV: gate VSVDB children re-show on DV group visibility
08d047b3b0 Settings: enable force.modes in Samsung/Auto-no-DV preset branch
293554adaa Settings: Samsung/no-DV preset uses HDR10 422 12-bit, not LLDV
74116119c0 Settings: extend Auto for HDR10-only sinks, never auto-pick 4:4:4
d5f859ef92 Revert "fix 3D SBS/TAB aspect ratio on Amlogic hardware video plane"
a853ebcf8a Revert "fix 3D SBS/TAB/FP: always halve viewport in stereo modes"
05964980ce PlayerProcessInfo: expose HDMI wire format as skin infolabel
d39150de49 DVDDemuxFFmpeg: fix per-eye DAR for stereo MKV under ffmpeg 8
280a410eda PlayerProcessInfo: prettify HDMI wire format
6886c379c5 BaseRenderer: drop SBS per-eye ratio divide that over-corrects FSBS
8b090d7cde DV: skip L5 subtitle signal when text subs sit inside active area
f2d73e7488 DV: update L5 signal mode help for margin-aware text sub check
7917f65cc4 DV: use calibrated subtitle baseline for L5 signal overlap check
c7dc3dc933 AE: add setting to ignore stream-carried downmix metadata
0e8fb4145e Settings: clarify 12-bit pipeline help covers 8/10-bit content too
355b979804 PlayerProcessInfo: read HDMI wire format from /config, not /attr
ca40d5adb2 DV: decouple VPP 12-bit preservation from wire EDID gate for tunnel modes
50adf48985 VideoSyncAML: drive clock from real vsync, fix fallback precision
3ee620b8dc VideoReferenceClock: re-enable thread so VideoSyncAML actually runs
cb67e3bf82 VideoReferenceClock: keep synthesized vblank interval in double precision
74f408d677 Settings: gate vsync reference clock behind a CoreELEC toggle
3007dc5e77 VideoReferenceClock: extend double-precision vblank interval to TimeOfNextVblank
f0356a5c42 VP: fix audio desync + passthrough stutter at start of x264 B-pyramid playback
4d8527a40d VP: extend over-doubled framerate fix from H.264 to all interlaced codecs
0767b6e5b0 VideoRefClock: diagnostic logs for videodebug-overlay frame skipping
232c2d5e27 VideoSyncAML: refresh fps each loop, recover from mid-Run mode switches
b6eed0cbf5 VP: scope stream-start reorder artefact gate to H.264 video
350120bc6d Settings: 12-bit Deep Color toggle pins 4:2:2 + forces 12bit over user CD
bd3f9ce8fa DV: make Deep Color EDID gate CS-aware to avoid broken signals
926c5bd38c VideoSyncAML: don't catch up across kernel-ts blackouts
22c97c995d VideoRefClock: refresh m_RefreshRate on mid-Run fps change
56fbeac67f 3D filename detection: match FSBS/FTAB in addition to HSBS/HTAB
1827af0e78 VideoPlayer: apply per-eye DAR for filename-detected stereo files
d0b24bb05d VP: add CoreELEC fast (keyframe-accurate) seek toggle
a66803e1c9 VP: fix 1080i25 playing at 100fps when fpsrate is double-doubled
e4901eb22d AML: skip refresh-change delay when HDMI mode isn't actually changing
1f16c7e349 3D: force window rebuild on quit-stereo-on-stop so kernel flag clears
59026563fd Settings: raise audiooutput.volumesteps cap to 100 (was 90)
6cb119cd33 VP: stop playback on broken-source stalls and seek wedges
5bdf3774ef addons: trust repository.p3i in default manifest
f983ec3dc2 addons: trust service.p3i.sb in default manifest
72daca6f5a VP: re-read LAV mode setting on each passthrough codec Open
8287eadb31 DV: live re-push of L5 sysfs flags on setting change
5e7ac9ed6c DV: per-folder L5 active-area override channel
cdcc495b8b DV: short-circuit L5 active-area detect when override is set
da6cd5657f DV: allow empty default on L5 override setting
82888ee8ff DV: runtime-promote L5 override visibility (unblock JSON-RPC writes)
cd2b837c85 DV: present L5 override to TV via xbmc_force_l5_override sysfs
c4f833a41f DV: stop detect before pushing L5 override sysfs values
7732d11e37 DV: switch L5 override to xbmc_override_l5_* sysfs namespace
eaa7c5d3d7 DV: log full kernel + cached state at every DV transition
7e8bd175e6 DV: extend state dump with InfoFrame/colorimetry params
9c3eceb04e DV: clear HDR10/VSVDB InfoFrame injection flags on dv_off
0de23bbd48 DV: log HDMI TX link state + add vsync-stall snapshot
1cac9d582b DV: clear FLAG_TOGGLE_FRAME in aml_dv_off
0594cd12e5 DV: force-clear FLAG_TOGGLE_FRAME after toggle wait timeout
124051fbff DV: never re-assert /sys/class/display/mode=null in round-trip sites
a21b606a20 VideoPlayer: gate PTS-offset reset on external subtitle presence
56e7abff2e AMLCodec: minimal vmap for non-interlace DV
ab954a287a DV: open VS10 on auto-played next item
5456d4741e VideoSync: opt-in stall fallback to legacy timing
635f2fbf86 VideoSync: nest fallback setting under usedisplayasclock
96e2dfe8f7 Subtitles: skip ass_render_frame for unchanged static overlays
ec1bd7e98c Subtitles: split oversized libass glyph atlas across GLES textures
2e31637b14 DV: opt-in re-assert of VS10/HDR output after resolution switch
b4f94bb271 DV: extend re-assert to DoVi (IPT) output + avoid resolution re-trigger loop
5417d94c2c VP: don't drop deliberate resume seeks during startup (fastseek regression)
961a1a730b DV: make active-area detect I/O throttle cache-aware
bed05a0cd9 Audio: normalise AC3/EAC3 naming in settings strings
239fcde5a2 DV: default active-area detect I/O throttle to on
04993770cb DV: abort active-area scan mid-read when playback buffer goes critical
e287260247 DV: honor container default flag for multi-video-stream DV files
07ac8cd8b5 skin: default to skin.p3i.estuary
f539fe4842 hdmitx: add hdr10plus_vsif_hold parameter to suppress VSIF during mode switches
f178b75a87 hdmitx: fix VS10 non-IPT config sysfs reporting stale DV EOTF
45cc1b453f hdmitx: fix hdr10plus_vsif_hold blocking VSIF cleanup on stop
bc1df3b935 meson_wdt: keep watchdog armed during reboot to recover from kernel hangs
e9643b1e2f meson_wdt: cancel hrtimer auto-ping when userspace takes over watchdog
d6204c84a7 amdolby_vision: clamp max mastering luminance to 9997 nits
dfc45f86e3 amdolby_vision: add Player-Led metadata pre-processing from avdvplus
e16c57dc55 amdolby_vision: remove duplicate pre-control_path blocks
f9bf2f463e hdmitx: suppress HPD events during reboot to prevent shutdown deadlock
e558f6748c hdmitx: only disable TMDS PHY on halt/poweroff, not reboot
47e55465e4 amdolby_vision: add per-frame metadata debug output after control_path
cde900ed91 amdolby_vision: allow source_meta_copy for Player-Led HDR10+ conversion
8447222bc4 Revert "hdmitx: only disable TMDS PHY on halt/poweroff, not reboot"
94d6d7bc78 amdolby_vision: port VSVDB source luminance clamping from avdvplus
a7fa38397f amdolby_vision: remove xbmc_dv_hdr10plus_conv dependency, match avdvplus
cd35ee2342 DV: add separate sysfs for L5 subtitle suppression
fb4689e707 DV: filter variable-length L8 blocks in source_meta_copy
5891351ce9 DV: cache provider name comparisons as booleans
ca4e854208 DV: add L5 active area injection from Kodi-detected values
d3782fec4d DV: respect OSD/subtitle gating for detected L5 injection
15ae7010c6 DV: add hw_dump debug command for blackout diagnosis
7e7eaf9646 DV: gate dump_buffer behind debug_dolby
575f946a15 hdmitx: don't force I2S-8ch source for 2-ch PCM in aout notify
63ee744534 amdolby_vision: rename xbmc_dv_dither → xbmc_dv_deep_color
fd07f44359 usb-audio: add HyperX Cloud II Wireless quirk
b75792bc2f osd_fb: drop VD1 gate from FBIO_WAITFORVSYNC_64
f20cbf6f03 amdolby_vision: xbmc_force_l5_override for service.p3i.override
274a426e5d amdolby_vision: force_l5_override is truly unconditional
61aaaed51c amdolby_vision: separate xbmc_override_l5_* from xbmc_detected_l5_*
76ac2df92f auge: enable audio DDR arbiter and HBR QoS tuning
0d7f64a381 amvecm: gate per-vsync PQ work on CSC_FLAG_BYPASS_PQ for native DV
434e103872 Update FFmpeg and dependencies to 8.1 — @jamal
0b7fcbe942 [systemd] Enable shutdown/reboot watchdog via system.conf.d drop-in
b92490619c [systemd] Enable RuntimeWatchdogSec to ensure watchdog is active
6c54f13ec6 [systemd/connman] Mitigate intermittent reboot hang after screensaver wake
ec04ca603e [systemd] Move DefaultTimeoutStopSec to separate drop-in
832277f9e0 libass: update to master (fadc390583, post-0.17.4)
6ec3a583e2 ffmpeg: enable EAC3 encoder
119788157e libdovi: add cmv29_payload_end_bit for bit-precise CMv4.0 append
278f19c148 libdovi: upgrade to 3.3.2
c33b73ce83 libdovi: upgrade to 3.3.3 (main post-merge), drop cmv29 patch
76e5b343e2 libdovi: rebuild prebuilt with dovi_generate_from_json support
446ef91255 FFMPEG: Update mvc patch to upstream
92cd61d00f [Amlogic-ng] Add out-of-tree uas.ko package
27600b532c uas: append 5 unusual_uas.h entries backported from v6.6
df1ad14616 busybox: bump vm.min_free_kbytes to 32 MB
52dd4b6386 [Amlogic-ng] Add zram compressed-swap package
4ef20dc9f8 zram: fix systemd ordering cycle with local-fs.target
fec6af07db p3i: add repository.p3i fetch + inputstream.ffmpegdirect Piers override
d47a489f87 p3i: backport CBCS for HLS+ClearKey in inputstream.adaptive
70306c16fb RTL8152-aml: bump package to 84834745 (v2.21.4-1)
2be8159e51 uas: add boot and hot-plug rebind plumbing
9e06e9e5a7 uas-rebind: per-device blacklist via /storage/.config/uas-blacklist.txt
2eb06b93ad kodi: pre-install service.p3i.sb from p3i repo
a06e07667b udevil: switch to maintained udevil-ng source — @SamuriHL
f529f0c8d3 zram: read user override from /storage/.config/zram.conf
c1f5a579c2 wireguard-linux-compat: refresh snapshot checksum — @SamuriHL
f9e8f2100b avahi: run autogen.sh from PKG_BUILD — @SamuriHL
f35ad8bc33 rust: bump toolchain to 1.93.1 + cargo-c v0.10.22
565b78e6e5 udevil: point source at pannal/udevil
518924c8ef udevil: never overwrite mount.ntfs
4773a1a60c kodi: cap glibc arenas on ARM (MALLOC_ARENA_MAX=8) for heavy-Python RAM
161e8d2dea skin.p3i.estuary: bundle as default skin, packed from source
5e04eca2e0 Skip audio device enumeration when Bluetooth is disabled
22dc8486c7 Add 2s timeout to get_audio_devices JSON-RPC call
1dd5f70754 Move system_has_bluez/connman checks inside timeout-protected threads
e9934bd83b Add timeouts to all synchronous D-Bus and JSON-RPC calls
88d7b15d9f Skip bluetooth start_service when BT is disabled
5a6f097f02 Initialize bluetooth module when user enables BT at runtime
df8c77c4e7 bluetooth: stop overwriting user audio selection at startup
e4b9b1dbc1 Add UAS opt-in toggle under Hardware → HDD
0c7ccc9d9e UAS InfoText: document per-device blacklist file
438a328 Add inputstream.ffmpegdirect 22.2.5.1 (Piers, built against FFmpeg 8.1)
0b2f566 README: note that the repo is pre-installed on p3i firmware
27b1649 inputstream.adaptive 21.5.18-p3i.1.2: backport CBCS for HLS+ClearKey
0996208 Add service.p3i.sb 0.1.0: seamless-branching LAV auto-switcher
8c50714 service.p3i.sb 0.1.1: add toast notification on LAV switch
e990b5e service.p3i.sb 0.1.2: SB/SB.txt marker file + new icon
7f4f7c2 service.p3i.sb 0.1.3: fix codec detection (VideoPlayer.AudioCodec)
8ef12f6 service.p3i.sb 0.1.4: bump toast timeout to 5s for HDMI mode switches
cc9a054 service.p3i.sb 0.1.5: prefix-match codec gate (truehd_atmos, eac3_atmos)
4b521ee repository.p3i 0.1.1: bump to flush stale client caches
30e8fcf service.p3i.override 0.1.0: new opt-in per-folder override.ini addon
a1879df service.p3i.sb 0.1.6: per-filename listing in SB/SB.txt marker
bba6223 repository.p3i 0.1.1: add missing root-level zip
38c39e8 service.p3i.override: SETTINGS.md examples section
c56e5e8 service.p3i.override 0.1.1: walk one parent folder
3e4548f gitignore: drop accidentally-committed pycache from override addon
e8ce5b4 service.p3i.override 0.1.2: catalog all subtitle settings
364e6cf service.p3i.override 0.1.3: distinct gear icon
2f62592 service.p3i.override 0.1.4: update addon.xml description
9746982 service.p3i.override 0.1.5: stop deferring to PlexMod4Kodi
ec73f53 repository.p3i 0.1.2: regenerate manifests + bundle service.p3i.override zips
966e443 service.p3i.override: document that L5 override also disables detect
f3164d6 service.p3i.override 0.1.6: log JSON-RPC error on SetSettingValue fail
2f5b5ff service.p3i.override 0.1.7: document CMv4 visible-dependency caveats
deceeb0 service.p3i.override 0.1.8: L5 override now flows to TV; 0,0,0,0 valid
3898368 Add plugin.video.themoviedb.helper 6.15.6-p3i.1
0a8cd1a Add script.embuary.helper 2.0.8-p3i.1: skip background grabber during playback
c2afc9e embuary.helper: add 2.0.9-p3i.1 (matrix base) alongside 2.0.8-p3i.1
277b3a3 service.p3i.sb: add SETTINGS.md (marker file + settings reference)
Installation
Note
On a dirty upgrade your current skin is kept; the new skin.p3i.estuary default 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:
- vlix —
skin.p3i.estuary, the new default skin - CPM / avdvplus (R9) (@cpm-code) — DV CMv4.0 append + HDR10+ → P8.1 RPU lineage
- Sebastiiii (Team-MediaPortal) — VSVDB colour-space options filler
- the-black-eagle — extra tag reading for
.mkafiles - U3knOwn / Jamal — FFmpeg 8.1 bump (Kodi + CoreELEC)
- samurihl — avahi and wireguard-linux-compat (CoreELEC)