p3i T4a
T4a is a focused follow-up to T4. It is mostly bug-fixes and a batch of new audio and Dolby Vision tuning, on top of everything T4 already shipped. If you are coming from T3b or earlier, read the T4 notes first — this release builds straight on them.
The headline changes:
- A whole new set of audio controls: AC3/EAC3 dynamic range compression, DTS/DTS-HD/DTS:X dialnorm defeat, a finer centre-channel boost, LFE downmix up to 300%, and LAV Full is now the default passthrough sync mode.
- Fixed decoded AC3/EAC3 jumping louder after a seek and staying that way (the decoder's range compression was switched off on the first seek).
- A new toggle (on by default) that gives audio the same DDR-bus priority as video, closing a rare split-second HDMI dropout under heavy 4K/Dolby Vision decode.
- Several playback glitches gone: the post-seek picture freeze, the pause/resume video wedge, and the green flash at the start of playback and on seeks.
- The display-synced video clock now recovers from a vsync stall on its own (no more black-screen-with-audio), and its on/off toggle is finally live — in T4 the setting needed a reboot to take effect once it had been on for a single playback.
- New seek-back recall for embedded text subtitles: the line that should be on screen at the seek target shows up right away, instead of staying blank until the next event.
- More Dolby Vision tuning: an adjustable SDR target brightness for DV/HDR tone-mapped to SDR via VS10 (it used to come out dim), a CMv4.0→CMv2.9 down-convert for older DV TVs, a Smart CMv4.0 mode (now the default on Display-LED), and auto-letterbox for cropped DV.
- Dual-track Dolby Vision .mp4 files now play the right stream instead of just the enhancement layer.
- Skin reloads now announce themselves, giving add-ons the hooks to avoid the UI freeze a background skin update could otherwise cause (upstreamed to Kodi).
- On a 4K display, the GUI desktop now defaults to 1080p instead of 2160p50/60, sidestepping an HDMI link-budget sync issue some AVR chains hit in the menus (your saved screenmode and the video whitelist are unaffected).
- Under the hood: FFmpeg 8.1.2, zram swap-in tuning, and a refreshed default skin.
Highlights
Roughly ordered by how many people each change affects, and how visible it is.
1. Audio: a batch of new controls and fixes
The biggest cluster of new work in T4a. Most of this came straight out of reporter requests.
- Fewer HDMI audio dropouts under heavy decode. On Amlogic the audio DMA shares a DDR-bus port that sits below the display and the video decoder in priority, so a peak 4K/Dolby Vision frame can briefly saturate memory bandwidth, starve the small audio FIFO, and make the AVR throw a split-second dropout. A new "Prioritise audio on the system DDR bus" toggle (Settings/System/Audio, on by default) raises that port to super-urgent for all audio — the same priority the display reader and video decoder already have, so audio is lifted to match video, not ahead of it. Audio is a fraction of a percent of DDR bandwidth, so it costs video playback effectively nothing. This is the clean, user-controllable replacement for the kernel-side DDR-arbiter tuning T4 experimented with (now reverted).
- Dynamic range compression for decoded AC3/EAC3. A new "Dynamic range compression (AC3/EAC3)" slider (Settings/System/Audio, 0–100%, default 100% = unchanged). Decoded AC3/EAC3 always had FFmpeg's full compression baked in with no way to dial it back from the GUI; now you can. Pull it down for a flatter, more faithful track, or leave it at 100% for the old behaviour. It is a no-op for codecs that carry no FFmpeg DRC control (DTS/AAC).
- Fixed decoded AC3/EAC3 getting louder after a seek. This is the one vlix and Daffietje kept hitting: a track started out correctly compressed, then on the first seek stepped up to its full uncompressed level and stayed there for the rest of playback (not a runaway climb — one jump, then sustained). FFmpeg's decoder flush quietly zeroes the compression scale on every seek; T4a re-applies it after each flush, so the level stays put. (Long-standing FFmpeg behaviour, not a p3i regression — it was just never adjustable before the new DRC setting above.)
- DTS dialnorm defeat for passthrough. A new "DTS dialogue normalisation defeat" toggle (Settings/System/Audio, on by default) forces dialnorm to 0 dB in DTS, DTS-HD HRA/MA and DTS:X passthrough bitstreams, so your AVR plays them at full reference level instead of the attenuation the stream carries. It joins the AC3/EAC3/TrueHD defeats already in the build, and only touches packings it recognises — a CRC self-check leaves anything unexpected alone. Validated against eac3to on real DTS-HD MA streams.
- Finer centre-channel boost. The centre-channel downmix boost now steps in 0.5 dB increments (0–30 dB) instead of whole dB, on a slider.
- LFE in the downmix can now go up to 300% for extra bass, up from the previous 100% ceiling. And in the "Front L/R" LFE target, the LFE now folds in at the same −3 dB as the default downmix, so the slider means the same thing in both modes and the bass stays balanced with the surrounds. The downmix matrix in that mode also honors the centre boost, the surround mix levels from the stream, and normalization — all of which it used to silently ignore.
- LAV Full is now the default passthrough audio sync mode (the setting is renamed from "Audio Fixes mode" to "Passthrough audio sync mode"). It is the validated path for the hardened TrueHD MAT packer and the vsync clock-sync work, and it gives the tightest lip-sync. The setting's help now spells out the options: LAV Full (recommended default), LAV SB (for seamless-branch discs only), and Off (stock Kodi). The TrueHD packer also picked up a few correctness fixes (negative-padding carry, counter unwrap, and a 96/192 kHz seamless-branch padding fix).
- Extra HDMI PCM layouts (4.0/5.0). Adopting CPM/avdvplus's approach, the Amlogic HDMI driver can advertise exact 4.0 / 5.0 channel allocations for multichannel PCM output, so the AVR reports the real layout instead of a padded 5.1. A new "Extra HDMI PCM layouts" toggle (Settings/System/Audio, default off) enables it; it takes effect on the next playback, no reboot. G12B/SC2-class boxes.
Note
Because LAV Full is now on by default and there are several new audio settings, reset Settings/System/Audio after upgrading so the new options appear. If a particular setup doesn't get along with LAV Full, set Passthrough audio sync mode → Off to get stock Kodi behaviour back.
2. Fewer playback glitches: freezes, wedges and the green flash
A run of fixes for things that interrupted playback. These affect everyone, not just a particular content type.
- Post-seek picture freeze fixed. On some seeks the picture would freeze (audio carried on, the screen black-flashing every few seconds) and only another seek would recover it. The root cause was an ancient upstream bug: when neither stream had a real timestamp yet right after a seek, Kodi pinned its master clock to 0, starved the decoder of buffers, and fell into a reset loop. T4a waits for a real timestamp (a few frames, bounded to 2 s) instead of pinning to 0.
- Pause/resume video wedge fixed. Pausing high-bitrate 4K HEVC could wedge the video for ~17 s on resume (audio and the clock kept running, video fell behind then fast-forwarded to catch up). T4a detects that wedge directly and clears it with a quick internal re-seek, so playback resumes cleanly in about 2 s.
- The green flash is masked. That brief green rectangle/flash on the video plane at the start of playback and on seeks is an inherited Amlogic decode-restart race. A new "Mask green flash on video restart" toggle (Settings/System/CoreELEC, on by default) holds the output black through the decode restart until the first real frame lands. For the rare stream that still shows a torn green frame right at the seek edge, an opt-in sub-setting adds a one-or-two-frame settle (off by default, since it costs a few tens of milliseconds per seek and most streams don't need it).
- Green OSD on Back→replay fixed. Replaying a Profile-7 FEL Dolby Vision title without stopping first could show ~6 s of black video with a green OSD; the drain now returns immediately when nothing has been fed since the codec reset.
3. Embedded text subtitles: seek-back recall
The new feature here is seek-back recall for embedded text subtitles (ASS/SRT/mov_text/WebVTT), mostly off reports from nissel. Image-based subtitles (PGS/VobSub/DVB) and external subtitle files are unaffected.
- The line active at a seek target is recalled. A subtitle that should be on screen at the seek target is normally muxed before the keyframe the demuxer lands on, so it would otherwise not appear until the next line — sometimes a long wait with a large GOP. T4a caches the selected text subtitle as it plays and re-emits the right line at the target. This costs no extra I/O and is always on. For seeking into never-played territory there's an optional file-fallback (
coreelec.subtitles.recallfromfile, default off) that reads the active line from the file, carefully budgeted so it can't stall playback. - And lines no longer go blank after a backward jump. This part was a T4-era regression: with libass updated to master in T4, it pruned upcoming lines against a stale pre-seek clock and deleted events it would never re-read, so subtitles could go blank for ~30 s (proportional to the size of the jump). The libass track is now flushed on each seek and that faulty pruning is gone, so lines re-render correctly.
4. Dolby Vision: brightness, conversion and cropping tuning
- Adjustable VS10→SDR brightness (issue #59). DV/HDR content tone-mapped to SDR through VS10 looked dim next to the GUI and native SDR files, because the kernel hardcodes the SDR target to 100 nits. A new VS10 SDR target luminance slider (100–500 nits, default 100 = unchanged) lets you map for your panel's real SDR brightness.
- CMv4.0 → CMv2.9 down-convert for older DV TVs. Some older CMv2.9-only DV TVs black-screen (no OSD) on CMv4.0 content because they fail to fall back. A new opt-in setting strips the CMv4.0 extension blocks from each frame, leaving a clean CMv2.9 stream the older set can lock onto. It is the inverse of T4's CMv4.0 append and mutually exclusive with it.
- A "Smart" CMv4.0 append mode, now the default. On top of the existing Off/Always append modes, Smart decides per frame: it appends CMv4.0 where it helps, but bypasses it (and lets the TV use the native CMv2.9 dynamic metadata) when the frame's actual peak already sits comfortably above your display's capability, with an adjustable headroom threshold. It is now the default on Display-LED setups (the Always default and the auto-preset both move to Smart).
- Auto-letterbox for cropped DV. Cropped DV encodes (bars removed, e.g. 3840×1600) could show grey letterbox bars when the DV trim carries a high positive lift. T4a synthesizes the active-area geometry from the coded aspect and issues correct DV L5 metadata for the TV to handle the bars. It's pure geometry (the border detector is never engaged), gated to non-16:9 native DV, on by default, and a manual L5 override still wins. It's now its own setting, independent of the other L5 controls.
- VS10 SDR8/SDR10 output defaults back to Bypass. VS10's SDR→SDR path measurably clips whiter-than-white detail, and the smoother pacing it once seemed to lend is now provided by the real vsync clock instead. VS10 SDR stays available as an opt-in.
5. Dolby Vision: multi-track .mp4 files play the right stream
A dual-track dual-layer (DT-DL) Profile-7 Dolby Vision .mp4 carries its base and enhancement layers on two separate tracks. Kodi only knew how to combine them in MKV files, so an .mp4 ended up playing only the enhancement layer (and mislabelling itself "ST-DL"). T4a recognises the enhancement layer by its Dolby Vision config and combines the two correctly, while still leaving genuinely independent DV streams alone. (This complements T4's multi-video-track work, which let you select the extra streams in the first place.)
6. Dolby Vision: stability fixes
A set of fixes for hangs, color corruption and a settings glitch, mostly from on-device reports.
- Back→replay deadlock fixed. Hitting Back and replaying a DV title could freeze the picture on a lock-ordering deadlock between the DV-core lock and the GUI graphics lock. The locking is reworked, the DV-core sysfs is serialized behind a single recursive mutex, and a watchdog now names the blocked path instead of failing silently.
- DV→DV switch color corruption (gray/green) when one title was switching while another played in the background: the stale title's stop handler no longer reconfigures the DV core over the live stream. (For most setups the green-flash hold from highlight 2, on by default, also covers the brief blip this could leave.)
- "Reset to default" no longer needs two clicks. The DV/HDR TV preset used to stay on Manual after the first reset and only land on Auto on the second; a deferred recompute was flipping it back. It now sticks on the first click.
- VS10 no longer corrupts software-decoded video. VS10 conversion is a hardware-video-layer feature. On the occasional stream the Amlogic decoder declines (small MPEG-4/XVID, decoded in software), engaging it pushed plain SDR pixels through the DV core and turned the picture magenta/yellow. T4a recognises the software-decode path and keeps VS10 in Bypass there, and the live VS10 toggle now declines the conversion modes on such content (with a brief toast) — so the corruption can't happen.
- A GUI-path HDMI link watchdog and extra transition instrumentation went in to chase the remaining AVR-side blackout reports.
7. The display-synced video clock: a live toggle, stall recovery, tighter sync
T4 introduced the first real display-synced video clock. T4a hardens it on several concrete fronts.
- The "use display as clock" toggle is now live. In T4 the CoreELEC setting was read only once, at the first player startup — so after it had been on for a single playback, flipping it (on or off) silently did nothing until you rebooted. T4a applies it immediately (a brief A/V glitch is possible if you flip it mid-playback). The clock thread also only runs during video playback now, instead of polling the framebuffer the whole time Kodi sits idle in the GUI.
- Recovers automatically from a vsync stall. This is the one you'd actually notice: if the kernel's vsync wait stalls (a VPP reconfig on a seek, a mode switch, a wedged sink), the clock used to ride it down and the picture could go black for seconds with audio still playing, recovering only on stop. It now drops to legacy timing within ~750 ms and probes its way back as soon as vsync returns.
- Frame-accurate A/V corrections at matched rates. An inverted gate meant the frame-quantized clock corrections were running exactly when they shouldn't and disabled when they should. With the real vsync clock now driving things, the upstream behaviour is restored: on matched rates (24@24, 25@50, 60@60) an A/V correction becomes one clean frame dup/drop instead of an arbitrary clock lurch, and lip-sync under LAV Full is held to a tighter window.
8. Add-ons can survive a skin reload
A skin reload (usually a background skin-addon auto-update that calls ReloadSkin) tears down and rebuilds every window. An add-on sitting in a modal window at that moment (PM4K, for instance) can be left spinning over a destroyed window with nothing to react to, and the UI freezes until a full Kodi restart. T4a fires GUI announcements around the reload (OnSkinUnloading, then OnSkinLoaded, or OnSkinLoadFailed on the dead-end paths) that an add-on can subscribe to, so it can close or restart its own windows in time. The add-on has to implement these to benefit; it isn't automatic, and one that ignores them can still freeze. But the hooks are now there. A failed reload of a non-default skin also falls back cleanly to the default instead of leaving nothing loaded. The change is upstreamed to Kodi as xbmc/xbmc#28431.
9. 3D MVC subtitle depth
3D MVC (frame-packed Blu-ray) PGS subtitles used to render flat, at zero depth. T4a carries the per-stream 3D subtitle plane through to the decoded picture, so the subtitle now sits at the correct stereoscopic depth.
10. New default skin, refreshed
skin.p3i.estuary (vlix's Estuary variant, the default since T4) moves from 8.8.8 to 8.8.15 with a batch of presentation work:
- Codec logos on the startup toast and info: configurable layout and position, dark-themed variants, and an option (on by default) to keep them inside the DV active area so they don't land in the letterbox bars — using the new resolution-independent aspect class the player now exposes.
- A richer Player Process Info: new video-output detail (including Player-Led DV/HDR10), a subtitle section that scrolls long names, an audio-channel-layout fix, and info for the new CMv4.0 → CMv2.9 feature.
- A new option to hide the progress bar on pause and/or on seek.
- CoreELEC power-button and calibration icons.
- Fixed overlapping music-video media flags.
11. The p3i addon repository keeps growing
The pre-installed repository.p3i (served at p3irepo.pm4k.eu) picked up:
inputstream.ffmpegdirectandinputstream.adaptivere-versioned under a666.<upstream>-p3i.1epoch so they cleanly update over the stock add-ons.script.module.jurialmunkey0.2.35, the dependency for ourplugin.video.themoviedb.helperbuild.- A texture-packed variant of
skin.p3i.estuaryfor faster repo installs.
12. The GUI desktop defaults off 2160p50/60
A 2160p50/60 desktop doesn't make the menus any sharper — Kodi renders the GUI at 1080p or below and hardware-scales it — but it does drive the HDMI link to its 594 MHz ceiling (4:2:2/12-bit deep colour). A marginal AVR/repeater chain, or a near-limit cable in a long run, can fail to lock onto that and keep dropping sync while you sit in the menus. So when your display's native mode is 2160p50/60, T4a now points the desktop at the 1080p entry at the same refresh rate by default. This only changes the out-of-the-box default: an explicitly chosen 2160p50/60 screenmode still wins, the mode stays in the list for manual selection, and the whitelist still switches to 2160p50/60 for genuine 50/60fps 4K video. The Resolution / Refresh rate / Whitelist help text was reworded to explain the trade-off.
13. Under the hood
- FFmpeg 8.1 → 8.1.2. A point release rolling up the PixelSmash fix plus the usual demux/decode hardening (mpegts, matroska, mov, hevc/h264, swscale). No API/ABI change; all our patches re-verified with zero rejects.
- zram swap-in tuning. With zram swap active, the kernel's read-ahead (
page-cluster) is set to 0 — zram has no seek cost, so read-ahead only added decompression latency. Overridable via/storage/.config/zram.conf. (Closes #63.) - Reverted the experimental audio DDR arbiter / HBR QoS kernel tuning T4 introduced, in favour of the user-controllable DDR-priority audio toggle (highlight 1).
- libdovi gained the
dovi_rpu_remove_cmv40_metadataprimitive (source-patch + prebuilt rebuild) behind the new CMv4.0→CMv2.9 down-convert.
Known issues
Denon / Marantz AVRs: black screen or "no signal" on HDMI mode switches
This is not new in T4a, 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 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. The only reliable recovery is to power-cycle the AVR (sometimes the TV too).
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. Because the trigger is downstream of the box, no setting in the build fixes it. 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.
Changelog
The complete per-component commit list since T4. Click any section to expand.
Audio
Playback robustness
Green flash / decode restart
Video sync & reference clock
Subtitles
Dolby Vision — brightness / conversion / cropping
Dolby Vision — multi-track
Dolby Vision — stability
Stability / GUI
xbmc / Kodi (82 commits)
Kernel (linux-amlogic, 3 commits)
CoreELEC (distro & packages, 7 commits)
CoreELEC Settings Addon
skin.p3i.estuary (23 commits, up to the published 8.8.15)
Addon repository (p3i_repo, 12 commits)
🎬 xbmc / Kodi
drc_scale on every seek — the "louder after seek" fix)
VC_EOF from drain when nothing was fed since codec_reset (green OSD on FEL replay)
right_left stereo-mode typo in SetVideoRect
SYNC_DISCON gate under LAV Full + vsync clock sync
coreelec.amlogic.usedisplayasclock
OnStop while another playback is active; take the restore decision inside the DV-core lock
OnSkinLoadFailed so add-ons can react to ReloadSkin instead of freezing (upstreamed as xbmc/xbmc#28431)
🐧 Kernel (linux-amlogic, amlogic-4.9-20)
auge/hdmitx: optional precise HDMI channel allocation for extra PCM layouts (4.0/5.0), behind extra_pcm_layouts
auge: carry the 4.0/5.0 PCM layouts inside the 6-channel container (canonical slots + SND_CHMAP_NA) so they play in the right speakers (avdvplus's approach)
📦 CoreELEC (distro & packages)
vm.page-cluster=0 while zram swap is active (overridable via /storage/.config/zram.conf); closes #63
dovi_rpu_remove_cmv40_metadata and rebuild the prebuilt (for the CMv4.0 → CMv2.9 down-convert)
inputstream.ffmpegdirect / inputstream.adaptive as 666.<upstream>-p3i.1
🎨 skin.p3i.estuary (by vlix, 8.8.8 → 8.8.15)
🧩 Addon repository (`repository.p3i`)
inputstream.ffmpegdirect 666.22.2.5-p3i.1 and inputstream.adaptive 666.21.5.18-p3i.1 (epoch-versioned to update cleanly over stock)
script.module.jurialmunkey 0.2.35 (TMDBHelper 6.15.6 dependency)
skin.p3i.estuary 8.8.9 → 8.8.15.2, plus an XBT-packed repo variant + pack tool
📜 Full commit history (all repos, T4 → HEAD)
f3552ec703 AEStreamInfo: DTS / DTS-HD / DTS:X dialnorm defeat
9ab052126c DV: default CMv4.0 append to Smart
7967c1410f DV: make auto-letterbox L5 a standalone setting, independent of L5
69d5135de0 WinSystemAmlogic: default the GUI desktop off 2160p50/60 to fit the HDMI link budget
7b2c69831f AESinkALSA: write the extra-PCM-layouts knob for the AML PCM device, not only HDMI
71e526799b AMLUtils: block VS10 conversion on software-decoded video (no VD1 layer)
57e8cb877e AESinkALSA: GUI toggle to prioritise audio on the system DDR bus
66b3c867d3 AESinkALSA: GUI toggle for extra HDMI PCM layouts (4.0/5.0)
eead872006 PackerMAT: rate-correct seamless-branch default padding at 96/192 kHz TrueHD
bf7d684bf1 DVDDemuxFFmpeg: combine DT-DL MP4 Dolby Vision instead of playing the EL alone
dd9ab3819d VideoPlayer: actually drop the re-read duplicate of a reinjected subtitle
e38c645060 DolbyVision: stop the deferred VSVDB recompute flipping the TV preset after a reset
5b2beba576 VideoPlayer: don't pin the master clock to 0 on an all-NOPTS post-seek sync
c1addb6aee Audio: normalise EAC3 naming in DRC settings strings
bbb47cad4f VideoPlayer: temp diagnostic for doubled subtitles on seek-back
01965a9087 VideoPlayer: recover the Amlogic video feed/drain wedge via reseek
304aca458f Subtitles: stop pruning libass events - stale post-seek clock deletes upcoming lines
9bdfe6111f Subtitles: don't re-arm the libass render cache on an empty track
d19255934f docs: update embedded-sub seek-back recall spec to as-built
53e0b8639f VideoPlayer: log bracketing events when subtitle seek-recall fallback finds nothing
bd2e1f1288 Settings: update subtitle seek-recall fallback help to match its bounded-read behavior
852839f74a VideoPlayer: fix subtitle seek-recall file fallback never running
998d450aec AESinkALSA: drive precise HDMI channel allocation for extra PCM layouts (4.0/5.0)
3837177203 VideoPlayer: clear libass track on flush so subtitles re-render after a backward seek
43455e19d1 Settings: rewrite Whitelist help text to describe actual behavior
abc78ace2c VideoPlayer: recall embedded text subtitles after seek
c550d3e692 docs: Add "DV L5 Auto-Letterbox for Cropped Content" and "Embedded text-subtitle seek-back recall" specs
6b674d9477 AMLCodec: gate the seek-edge settle behind a sub-setting (default off)
e2c318d13b AE: raise LFE downmix level cap to 300%
1a80f50f9c AMLCodec: close the green seam at the seek edge with a vsync settle
62c3d3f02a VideoPlayer: invalidate libass render cache on embedded subtitle flush
1968445e4a AMLCodec: simplify the green-flash hold setting to a boolean
b4c861c090 AE: allow LFE downmix level up to 200% for extra bass
bcdbbffa12 AMLCodec: mask green-flash on decode restart with a video hold
d07d0d1269 AE: apply -3 dB (1/sqrt2) to LFE in the "Front L/R" downmix target
7354e490e9 AE: re-apply AC3/E-AC3 DRC after flush (ffmpeg wipes drc_scale on seek)
89386ed30b AE: clarify DRC vs downmix-normalization in setting help texts
5962ede573 AE: reset the stream limiter on flush
ab92788a04 VideoPlayer: carry 3D MVC subtitle depth into the video picture for PGS subs
9c14aae9a6 AE: add GUI setting for AC3/E-AC3 decoder dynamic range compression
efe82907f8 AMLCodec: fix right_left stereo mode typo in SetVideoRect
f94331fff5 Merge pull request #27 from SamuriHL/fix/smart-cmv4-use-l1-frame-peak
1452f4b962 DV: Smart CMv4.0 — add per-frame LOGDEBUG trace; clarify LOGINFO
3d59cf17c1 DV: Smart CMv4.0 — react to VSVDB_MAX_LUM setting changes
b93133bc7c DV: Smart CMv4.0 — use L1 frame peak (source_max_pq was mastering peak)
a089cec49f AE: default Passthrough audio sync to LAV Full; relabel setting
68c7896c54 AE: PackerMAT — avoid nullptr pointer arithmetic in FillDataBuffer padding split
574cd12fac AE: LAV TrueHD relatch — carry negative MAT padding, fix counter-unwrap off-by-one
c5bbdbabd8 DV: add Smart CMv4.0 append mode (per-frame nits-aware bypass)
5976b8bd26 AE: use a slider for the centre boost setting, not a number spinner
e37c90b4fb VP: corroborate broken-file detection with source read progress
d376368921 AE: honor downmix levels and normalization in LFE-redirect matrix
17a00af4da AE: allow 0.5 dB steps for centre channel downmix boost
c55110b5c7 Settings: default VS10 SDR8/SDR10 output back to Bypass
8890953081 AMLCodec: return VC_EOF from drain when nothing was fed since codec_reset
525be7a657 DV: defer VSVDB payload writes out of settings callbacks (settings-lock ABBA)
15aa22c590 DV: fix Back->replay ABBA deadlock between DV-core lock and gfx context lock
4d4d897971 GUI: announce OnSkinLoadFailed when a skin reload leaves nothing loaded
f7f9e7695d VideoPlayerAudio: tighten SYNC_DISCON gate under LAV Full + vsync clock sync
b4e5b82fc0 RenderManager: re-enable vsync clock sync at matched rates, gated on ref clock
ed16954824 DV: take the GUI-IPT restore decision inside the DV-core lock
ae4022f851 DV: instrument DV-core lock convoys and video-plane blanking writes
c9ed3e6a5e VideoSyncAML: re-anchor dead-reckoning ledger on primary→legacy handoff
3eca5bfb19 VideoSyncAML: auto-recovering stall fallback instead of multi-second black
cf8a1b1448 GUI: announce skin (un)load so addons can survive ReloadSkin
fdcbef9ae8 VideoReferenceClock: gate thread lifetime on video-playback state
bcf391928d VideoReferenceClock: live-toggle coreelec.amlogic.usedisplayasclock
dd4f81c348 DV: expose resolution-independent active-area aspect class to skins
89658d2659 docs: correct CMv4.0 strip control type to toggle in spec/plan
aa077595db DV: fix CMv4.0 strip setting invisible - use control type=toggle
c1f9abc232 docs: record CMv4.0 strip mutual-exclusion moved from enable-dep to C
5f336e644c DV: fix CMv4.0 append greying/lock from strip mutual-exclusion
2f2680eaa7 DV: surface auto-letterbox L5 offsets in player process info
9968dbf2db DV: add auto-letterbox L5 for cropped (non-16:9) native DV content
8d54c5cefa DV: fix CMv4.0 strip return-check to match libdovi 0/-1 contract
bbab9ad508 DV: add CMv4.0->CMv2.9 down-convert setting for old DV TVs
922ed540f1 docs: implementation plan for CMv4.0->CMv2.9 down-convert setting
813abd3d73 docs: design spec for dynamic CMv4.0->CMv2.9 down-convert setting
736271789f DV: serialize all DV-core sysfs mutations with a recursive mutex
123ad70121 DV: don't restore GUI IPT on OnStop while another playback is active
c6973d39bc DV: add adjustable VS10 SDR-output target luminance (issue #59)
145ad8bc79 DV: add GUI-path HDMI link-state watchdog (aml_hdmi_link_probe)
b79b0c1a05 auge: carry extra HDMI PCM layouts (4.0/5.0) in the 6-channel container
f082ab883c Revert "auge: enable audio DDR arbiter and HBR QoS tuning"
72a8d7d515 auge/hdmitx: optional precise HDMI channel allocation for extra PCM layouts (4.0/5.0)
87782a6e66 ffmpeg: bump 8.1 -> 8.1.2 (PixelSmash + security/robustness backports)
b993e69431 Merge remote-tracking branch 'origin/coreelec-21_local'
c052731372 zram: set vm.page-cluster=0 while zram swap is active
0413c97736 libdovi: rebuild arm prebuilt with dovi_rpu_remove_cmv40_metadata
9890b1d2ef libdovi: rebuild arm prebuilt with dovi_rpu_remove_cmv40_metadata
e08be13a1e libdovi: add source-patch for dovi_rpu_remove_cmv40_metadata
e9fa1a0875 p3i: vendor-version inputstream.{ffmpegdirect,adaptive} as 666.-p3i.1
ab431aa Update changelog and bump to 8.8.15
4e046d0 PPI: scroll long subtitle name
68694ee PPI: video output new info, Player-Led DV/HDR10
8fe6434 PPI: fix audio channels default layout
e7dadd7 Update changelog and bump to 8.8.14
d51aa7a Settings to hide progress bar on pause and/or on seek
9b04cd5 Fix codec logos active area handling
383c71b Update changelog and bump to 8.8.13
afb3949 Merge pull request #6 from pannal/pr-fix-music-video-flags
8088c01 Add ProRes in video codec variables
b315305 Fix overlapping music videos media flags
8baea1e PPI: new info for 'Convert CMv4.0 to CMv2.9' feature in DV Metadata
aa7a5cc Add dark codec logos to startup toast
a83dfde Update changelog to 8.8.12
def16a2 Bump to 8.8.12 for active-area codec-logo setting
81d50eb Codec logos: slide startup-flash logos into the DV active area by aspect class
3ba74cc Codec logos: add 'keep inside active area' setting (default on)
5bdd147 Bump to 8.8.11 (PPI subtitle section update)
7f68898 PPI: update subtitle section
961eb48 Bump to 8.8.10 (include vlix's CE icons for repo distribution)
186a451 Add CE power button and calibration logo icons
030ae77 Bump to 8.8.9 for repo distribution of codec-logo settings
68fa2df Codec logos: add layout + position skin settings
15c20b5 Publish skin.p3i.estuary 8.8.15.2 (re-cut from 8.8.15 source, excludes stray 9b6997c)
3ce26f6 Track packed media XBT in tree to match the published zip
687d191 Publish skin.p3i.estuary 8.8.15.1 (TexturePacker XBT + CE overlay)
05132fe Publish skin.p3i.estuary 8.8.15 (PlayerProcessInfo updates)
bcc84c5 Publish skin.p3i.estuary 8.8.13.1 (XBT-packed repo variant) + pack tool
1ca9c18 Publish skin.p3i.estuary 8.8.13
fdc5e02 Publish skin.p3i.estuary 8.8.12 (codec-logo active-area setting)
60e08f4 Add script.module.jurialmunkey 0.2.35 (TMDBHelper 6.15.6 dependency)
9a108cf inputstream.ffmpegdirect 666.22.2.5-p3i.1, inputstream.adaptive 666.21.5.18-p3i.1
4e90aa8 Publish skin.p3i.estuary 8.8.11 (PPI subtitle section update)
90f683a Publish skin.p3i.estuary 8.8.10 (CE power button + calibration logo icons)
92eccf3 Publish skin.p3i.estuary 8.8.9 (codec-logo layout/position settings)
Installation
Note
Coming from T4, a dirty upgrade keeps your skin and settings; the bundled skin.p3i.estuary and the p3i addons update with the build. Coming from before T4, 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–T4) 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 audio settings (and to pick up the LAV Full default).
Resetting Settings/Player/Subtitles might be necessary for you to see the 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 audio settings (and to pick up the LAV Full default).
Resetting Settings/Player/Subtitles might be necessary for you to see the 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 seek-louder audio bug, the post-seek freeze and pause/resume wedge, the vanishing and doubled subtitles, the two-click TV-preset reset, and the audio-mix requests — and to the upstream projects this builds on: avdvplus (DV metadata handling), LAV, libdovi, libass and FFmpeg.
Full Changelog (Kodi core): https://github.com/pannal/xbmc/commits/T4a
Full Changelog (CoreELEC-Settings): https://github.com/pannal/service.coreelec.settings/commits/T4a
Full Changelog (Kernel): https://github.com/pannal/linux-amlogic/commits/T4a
Full Changelog (CoreELEC): https://github.com/pannal/CoreELEC/commits/T4a
Addon repo: https://github.com/pannal/p3i_repo
Contributors
Sources and contributors whose work landed in T4a:
- vlix —
skin.p3i.estuaryupdates (codec logos, info), and the LFE / DRC audio reports and requests - SamuriHL — Smart CMv4.0 L1-frame-peak fix (PR #27), LAV Full validation
- manuelh — centre-channel boost and Front L/R LFE downmix requests (#58)
- Daffietje — decoded-AC3 seek-louder report
- nissel — embedded-subtitle seek-recall reports
- ADAlvarez — two-click TV-preset reset and cropped-DV reports
- CPM / avdvplus (R9) (@cpm-code) — DV CMv4.0 / metadata lineage, and the 4.0/5.0 HDMI PCM-layout approach
- LAV / dovi_tool / libdovi / libass / FFmpeg — upstream projects