Release T4c #100
Replies: 10 comments 10 replies
|
Really great release thanks for all and Pannal of course. 💪 |
|
The CEC changes are amazing. |
|
I'm so jealous of this build, I wish it would work just as well in Homatics Box R 4K Plus (yes, I do use avdvplus). |
|
Hi! Thank you very much for the great update! As I understand it, VC-1 hardware decoding is now working. Accelerate MPEG2 – Never As I understand it, would it be best to use the following settings? Accelerate MPEG2 – HD and up Is that correct? |
|
Another great release. Playback of frame/progressive-interlaced VC-1 is excellent as it looks like the deinterlacer is bypassed? I discussed this a lot with the OSMC guys a long while ago, they introduced a choice between an Auto mode with HW playback that gives very clean progressive playback most of the time, with occasional moire artefacts, but it handles mixed content such as the original Dr Who UK series 5 bluray where the end credits are field-interlaced, so the fast scroll on the end credits is smooth. With T4c there's no switch when the end credits come in so there are artefacts, same as with OSMC with deinterlacing set to off. But main thing is that the main content plays with excellent quality. |
|
Does the settings recommended here for the AMB6+ apply to this build? Any obsolete or new ones? |
|
Thanks for the great upgrade! For me, using Ethernet using a USB adapter unfortunately stopped working after upgrading T4b to T4c. I am using the "uni USB Ethernet Adapter 3.0 1000Mbps LAN Adapter" and it worked flawless with all other installs, but after the upgrade it flashes for a second when connecting it and then stays off with no working connection. Any idea if something could have gotten broken or I can try out something to get the adapter working again? |
|
another subtitle-related observation. I was watching an episode of House of the Dragon on T4c with subtitles enabled, using TV-led DV into an LG C5 (P7 MEL mkv from disc). I'm pretty sure that subtitle brightness was sometimes changing between shots. I won't be able to look at this properly for a while but thought I'd mention it. |
|
Could you check whether black is calculated from reference black when outputting CM 2.9 through CM 4.0? |






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 T4c
T4c is a big one: part stabilization, part new features, on top of T4b, and the most contributor-driven build yet. swmarks rebuilt the CEC and screensaver handling, samtheruby backported the newer CEC kernel driver, fixed SD/VESA display modes and built in-GUI update channels, Sebastiii contributed MKV editions support, an Epson projector profile and DV fixes, and vlix wired the skin's codec logos into the DV pipeline and brought DV profile info to the library. On top of that: VC-1 hardware playback overhauled, a self-healing A/V sync layer for corrupt streams, AC-4 audio decoding, a nasty resume bug, per-frame tone mapping for DV→SDR, and a stack of DV picture fixes.
The headline changes:
override.inican drive them per folder.Tip
Navigatable release notes
Highlights
1. CEC, overhauled
CEC has been a long-running annoyance: phantom wake-ups, stolen inputs, TVs that never got the standby message. T4c attacks it on all three layers (the kernel driver, Kodi, and libcec), with most of the Kodi work by swmarks and the kernel backport by samtheruby.
Other.OnTVStandby,Other.OnCECSourceActivated/Deactivated), so an addon that queues episodes, like PM4K's post-play, can stop auto-playing to a dark panel.2. Update channels, built into the box
Until now, updating a p3i box meant downloading a tar by hand and dropping it into the update folder. samtheruby rebuilt the Settings addon's update module around p3i's own infrastructure: it now serves three channels directly: Release (the GitHub releases), Testing, and Internal (password-gated). Update announcements ship on, automatic updates ship off, so nothing installs behind your back; you pick the channel and the box fetches the build itself. It ships with the T4c image, so this is the last release you install by hand.
3. Video screensavers work properly
If you run a video screensaver (Aerial-style), this whole cluster is for you; all of it is swmarks' work:
4. Playback fixes
5. SD and VESA display modes output correctly
6. VC-1 hardware playback, overhauled
VC-1 (older Blu-ray remuxes) over the hardware decoder has been subtly out of sync for as long as this decoder family has existed, and T4c runs the cause to ground: the Amlogic decoder's VC-1 timestamps are garbage (hundreds of reversals per clip, bursts up to nineteen frames off after a stall), while the frames themselves actually arrive in the right order. The avdvplus build had already dealt with this, and its approach is the basis of our fix:
This is much better, not perfect: a few outliers (mostly ISO rips) still misbehave, and they stay under investigation.
7. Corrupt streams: crash-proof and self-healing
A corrupt download used to be able to crash Kodi or leave A/V sync audibly off until a manual seek, with every internal metric reading clean. T4c hardens both ends:
8. Native MKV editions support
Some Matroska files carry multiple editions (theatrical and extended cuts, or a "just the episode" carve-out of a longer file), and Kodi has never been able to select between them; it always played the default edition. Sebastiii added native support: with the new opt-in setting enabled, opening a multi-edition MKV prompts you to pick the edition, and the demuxer plays exactly that cut. It rests on a custom FFmpeg Matroska patch carried in the CoreELEC tree. Off by default because the edition probe opens the file a second time before playback starts; only enable it if your library actually has multi-edition files. A related fix makes chapter skip work correctly in short chapter blocks (the "current chapter" was derived from the demuxer's read-ahead instead of the real playback position, which broke chapter jumps exactly in carved-out editions).
9. Dolby Vision → SDR: per-frame tone mapping
The follow-up to T4b's brightness boost, and the other half of the "DV→SDR looks dim and flat" fix (#59): the inherited pipeline stripped the source's L1/L2 extension metadata before the DV engine converted to SDR, so the whole title got one static tone curve. T4c keeps that metadata ("Use per-frame metadata for SDR conversion", default on): the DV engine now does per-shot dynamic tone mapping using the colorist's own 100-nit trims. Off restores the old static behaviour as an escape hatch.
10. Dolby Vision: letterboxed content and subtitles, sane by default
The L5 active-area machinery built across T4–T4b was all there, but defaulted off, and the pieces didn't arm each other. T4c flips it to working out of the box:
video.dovi.l5.autoinfolabel exposes the auto-letterbox state to skins.11. Dolby Vision: picture fixes
12. Epson projector support
Sebastiii contributed a unified Epson LS12000 DV profile: selecting the Epson profile now always uses the correct VSVDB calculation, and the color primaries can be overridden via
advancedsettings.xmlusing the full Vertex2 VSVDB hex format; the luminance byte stays dynamically managed by the CoreELEC UI.13. Dolby Vision profile and HDR10+ in the library
The library now records what kind of HDR a stream really carries (vlix): the Dolby Vision profile with base-layer compatibility and enhancement layer ("5.0", "7.6 FEL", "7.6 MEL", "8.1", "8.4", …) and HDR10+ presence, shown in the video info. Long asked for by collectors keeping FEL and MEL versions apart.
14. Audio
advancedsettings.xmllatency tables were also reworked so user entries actually override the built-in defaults (the 2160p entries were effectively locked), and they no longer accumulate duplicates on profile switches.override.iniengine drive them:service.p3i.override0.1.9/0.1.10 expose the wholeaudiooutput.*family.15. skin.p3i.estuary 8.8.16 and 8.8.17, through the addon repo
vlix published skin.p3i.estuary 8.8.16 and 8.8.17 to the pre-installed p3i addon repo, so boxes pick them up as regular addon updates:
skin.codeclogososdproperty that pairs with the new core-side L5 gate.16. Under the hood
iperf3, samtheruby).Known issues
Denon / Marantz AVRs: black screen or "no signal" on HDMI mode switches
This is not new, 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:
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 T4b. Click any section to expand.
🎬 xbmc / Kodi (127 commits)
CEC (swmarks, SamuriHL)
7fbd163e62CEC: decouple libcec active-source queries from the main thread (+69a9f0d9e8PR feedback: lock inversion, ActivateSource throttle)114d8df456PeripheralCecAdapter: don't arm CEC wake-by-active-source from a phantom default8cb6f9a3b4CEC: expand activate_on_keypress to activate_on_activity (+186da413b3peripherals.xml reorganisation and strings)d662d43936CEC: observe keypresses via OnActionPre to recover the active sourceccfe6c703aCEC: persistent active-source tracking via flag fileca28541aa4CEC: honor standby commands addressed to broadcast, not just from the TV17222f3fb1CEC: suppress the standby blast when disabling the CEC adaptere9f42a50cdCEC: synchronous thread join on powerdown so the TV receives standbydd1de654daCEC: fix tinyxml2 settings-order parsing71eff6c9c5CEC: mark inactive source when standby devices are sent (fixes wakes swallowed after a CEC standby)5baf245c48CEC: announce TV standby and active-source changes to addons8c020d5ffbCEC: remove redundant active-source queries and clean up comments579dd99fbbCEC: fix active-source races and standby state mismatches; add an explicit manual-standby setting3b1de505b3CEC: fix standby/wake reliability on fresh boot and prevent callback deadlocksfd23054a7eCEC: fix the permanent explicit-standby lockup race0f86b5cde5translations: German string for CEC activate-on-activity5e3adeeec5CEC: allow remote apps to wake the TV on resume after deactivationf6fc420691CEC: ignore playback stop/pause on deactivate while a screensaver is activeScreensavers (swmarks)
1c0c6b5ca1PlayListPlayer: intercept and dynamically tear down video screensavers (+ae181d4de1safe teardown without race conditions)80ab5609c9AMLCodec: allow DV for windowed playback during screensavers2c6b0800a6fix the video-screensaver idle timer and CEC wake behaviour (+717a28bd2creview follow-up)d408e0237bapplication: fix a race when tearing down a Python video screensaverc21a802d2capplication: enforce the Dim screensaver when a modal dialog is activePlayback
17e77c8020AMLCodec: don't report hard-failed codec writes as consumed (the resume ~100s jump)1742990e97RenderManager: full reconfigure when an fps change moves screen geometry (samtheruby)9480c5aa0dRenderManager: clear vsync phase state on the fps-only fast path (samtheruby)ba1c3dd80eAMLUtils: anamorphic pixel ratio for SD display modes (samtheruby)1b5618e0cfSubtitles: don't reset a manual position when the debug OSD renders7ec96d4f37VideoPlayer: auto-recover A/V sync after a corrupt splice in the stream9caf0f5e1aVideoPlayer: add native Matroska (MKV) editions selection support (Sebastiii)b64098e4fcVideoPlayer: fix current-chapter detection to use the real playback position (Sebastiii)fefe9c4329Bluray: sync libbluray stream selection when switching tracks in menu mode3bf7171d47GLES: fix limited-range wash-out on premultiplied-alpha bitmap overlays553b95b51aVideoPlayer: fix and improve subtitle stream selection (upstream CastagnaIT, ported by nissel, PR #54)0012efa742VideoPlayer: don't discard subtitle extradata in CDVDDemuxClient221aba3048NFS: refuse to open directories as files462ff7cd5fSafely handle a missing family_name from FT_Face3c4c70914dPrevent a race condition on m_peripheralscc3be8b864VideoPlayer: snap near-standard container frame rates at demux time (+e90ee4474dms-quantised fingerprint rework,0f30f7c7b2build fix; upstream xbmc/xbmc#28836)7fcfaaf24bVideoPlayer: re-sync the audio device after starting a frame-rate-repaired file591ca52ca8VideoPlayer: correct audio labels, not the clock, for a mis-measured resync anchor (+4ea655a18e,e2285f81d7,7357d0306canchor-trim settling and label-shift removal)040d63d547VideoPlayer: add hysteresis after a clock correction0c838da2ddVideoPlayer: hold clock corrections only where the averages are untrustworthyc75224e4faVideoPlayer: do not step the clock on a reseek we are about to maked5642668ceBitstreamConverter: harden NAL size validation against corrupt streams (+7d9e8a3634std::min clamp; upstream xbmc/xbmc#28845)6c39083221AMLCodec: detect corrupt pts excursions for the recovery reseek15ac1a60afVideoPlayer: chain corruption-recovery reseeks with an escalating hope45d9a6b3fVideoPlayer: recover A/V sync after a mid-stream bitstream sync losscba47d1662AudioEngine: lock passthrough resync detection to the track's codec familye67c3d7d2dAMLCodec: emit decoded frames in display order for VC-1809f93ca36AMLCodec: add a setting to choose how VC-1 frame order is repairedccddbebd9eAMLCodec: make the VC-1 timestamp repair the default51df8ccb36AMLCodec: repair VC-1 timestamps across pause as well as playback47e326835dAMLCodec: stop forcing the deinterlacer on for VC-1 (with the matching media_modules ge2d change)37b0e59d57VideoPlayer: require the demuxer interlace flag for VC-1 DI compensationa92e63a702AMLCodec: reorder VC-1 frames and rebuild their timeline7d903a59d6AMLCodec: learn how deeply a VC-1 stream reorders3e4c8b8da2AMLCodec: leave interlaced VC-1 alone (+18f1bbb570ask the decoder for frames on interlaced streams,634903490clogging clarity)9b39b353a6DisplaySettings: don't restore stale square-pixel calibrations on SD modese984c6c674AMLCodec: remove the VC-1 reorder window, repair only (A/B-convicted; +969f1fe86dstall-debris hardening,d658fc7763interlaced rebuild-only)44b89abcadVideoPlayer: count held frames in the video pipeline depth it reports8512a96bdeVideoPlayer: step rapid chapter skips from the requested chapterbfb37a8437VideoPlayer: add missing space before the VSync debug labelDolby Vision
28fbead0dcAMLDV: per-frame metadata toggle for VS10 DV→SDR conversion (default on)b400984827DV: sane L5 defaults: zero L5 while OSD/subtitles are on screen28e13b5772DV: L5 restriction: move image subs on cropped content into the active areae860d6e6f0AMLDV: count skin codec logos as OSD so L5 stays zeroed (vlix)0a7f528c44AMLDV: gate the av.change L5 guard behind skin.codeclogososd (vlix)ce0754a9a6DV: compose auto-letterbox L5 additively with per-frame source L5f84e7d5a02DV: sanity-check auto-letterbox L5 against implausible source values858292dbceAML: fix GUI OSD max luminance not restored after DV_MODE_ON playback (Sebastiii)6f0d1d96dbdocs: sysfs lever reference for Kodi and the p3i kernel956baec84dDV: L5 active-area detect: fix AVIO teardown on cancel-before-opendbeafcc47fDV: add a VS10 output black level setting (#83)775a19603aDV: HDR10+ conversion: hold the last RPU across SEI gaps (the Dark Wolf end-credits red screen)f60b392979DV: HDR10+ conversion: clamp L1 max_pq to source_max_pq3a267bc4bfDolbyVision: unified Epson profile with XML color override support (Sebastiii; +ee0aa76b2ecleanup)ab83cf1fc0AML: fix crashes from the auto-letterbox watcher thread on app quit (+ Sebastiii PR #53)6f686a7e72HDR: add Dolby Vision profile and HDR10+ to video info (vlix, PR #56)Audio
531641c1f6AdvancedSettings: add a 50/60Hz audio sync toggle and rework the latency tables (samtheruby)8a26bf9c36Settings: enable the 50/60Hz audio sync correction by default99f4fa5c25LAV Audio: harden the MAT packer against malformed/pathological input (SamuriHL)451fecaadbAudio: TrueHD major-sync logging, 16ch detection fix, dialnorm help note3e7f27d786AudioEngine/VideoPlayer: react to mid-playback audio setting changescb9428735fVideoPlayerAudio: probe codec switches with pristine demuxer hintsMisc
bd4ae12fd9addons: allow repository.p3i / repository.dontpanic addon updates as official repos (swmarks)795d55e08eLang: correct setting help texts and close German gaps🐧 Kernel (linux-amlogic, amlogic-4.9-20, 17 commits)
e4cec2c4451dcec: backport the 5.15 AOCEC driver to 4.9 (samtheruby)5ef21b9c33afcec: seed the function config from the uboot bootarg, not CEC_FUNC_CFG_ALL (fixes wake on every input switch)c6755794f854cec: restore the enable_cec_mailbox gate (fixes a 10s suspend/poweroff stall on some bootloaders)0e0cdee86e83hdmitx: add missing G12A/G12B HPLL settings for VESA modes (samtheruby)26a0cf708c56hdmitx: add hand-derived G12A/G12B HPLL settings for the remaining VESA modes (samtheruby)2bc2e6e8a418amdolby_vision: xbmc_dv_sdr_keep_ext, keep L1/L2 for VS10 DV→SDR (per-frame tone mapping)79aa121efdc4amdolby_vision: xbmc_dv_sdr_keep_ext, also cover the Player-Led pathc2c6cc7d0994amdolby_vision: default the VS10 target min luminance to reference black (#83)057505862704amdolby_vision: don't leak the previous stream's DV metadata into a new source (#85)ef55e2868d3famdolby_vision: refresh L5 when the OSD/subtitle gate flips while paused6d3761aa7b9famdolby_vision: add an additive mode to the xbmc L5 override channel2c3f31339410amdolby_vision: let CHANGE_TC2 win over CONST_TC2 in the core2 const latch (black OSD at DV start)c46ad1454019amdolby_vision: base the core2 const decision on this frame's cp result📦 CoreELEC (distro & packages, 18 commits)
e5e2c34810libcec: don't wake the TV on a routing change while it is in standbyeac0d61d22libcec: fix the HDMI input grab-back on a routing change to an external device (samtheruby)67c2fe4757libdovi: bump to vanilla 3.4.0, drop the CMv4.0-strip source patch (merged upstream in dovi_tool #400)9a7b22de1a+1d37179211rust: pin the toolchain to 1.91.1 for LLVM 19.1.7; fix target specs and cargo-c resolution4537605820Python3: update to 3.13.141d8902d09eiperf: update to 3.21 and bundle in the base image (samtheruby)e8911b366dREADME: document building (PROJECT/DEVICE/ARCH, local checkouts)d83162c3d6ffmpeg: add the Matroska edition-selection patch (for MKV editions; Sebastiii, CE #91)fc17270085ffmpeg: import the AC-4 audio decoder and parser from librempeg (swmarks, CE #90; +081f72e427upstream update)9e28891157libcec: fall back to the Power-On key when Image-View-On is unsupported (Hisense wake; swmarks, CE #93)🎨 skin.p3i.estuary (by vlix, 8.8.15 → 8.8.17)
89b6d9cGate the VS10 OSD button to the hardware decoder44e41cfFurther gate the VS10 OSD button and live switchingab9262fCodec logos: fix overlapping DV and VS10 SDR/HDR1099c5c3aDynamic video OSD icon labelsf3b5ff9Clean up PPI labels, media flags, and variablese94e4b0Clean up skin settings and refine CPU/RAM display in the top bar9f075a6Update changelog and bump to 8.8.168b8c415PPI: show "Auto (letterbox)" as the L5 state while auto-letterbox is activeskin.codeclogososdproperty🧩 Addon repository (`repository.p3i`)
c1c2f38Publish skin.p3i.estuary 8.8.16 (VS10 OSD button gate, codec logos fix, video OSD dynamic icon labels), merged via p3i_repo PR #1 (vlix)6b2d278Normalize the saved addons.xml to LF30e6039Publish skin.p3i.estuary 8.8.17 ("Auto" L5 state, codec-logo duration & entry animation, skin.codeclogososd), via p3i_repo PR #2 (vlix)975cf25service.p3i.override 0.1.9: expose audiooutput.* settings (+19c197b,83bfe63doc notes)e1e0a69service.p3i.override 0.1.10: expose audiooutput.channels⚙️ CoreELEC Settings addon
e964b45updates: replace the CoreELEC update service with three p3i channels: Release (GitHub), Testing, Internal (samtheruby, PR #3)e04e01dupdater: accept the Cryptodome namespace for pycryptodome (samtheruby, PR #5)4540b9fupdate the internal updater-channel keyDonations
Installation
Note
T4c changes several defaults (the DV L5/subtitle handling and the CEC wake settings). On a dirty upgrade your old values are kept; reset Settings/System/CoreELEC to pick up the new defaults, and re-check your CEC wake-up settings afterwards.
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–T4b) 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!
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!
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! This one leaned heavily on contributors: swmarks for the CEC and screensaver overhauls, samtheruby for the CEC kernel backport, the SD/VESA display-mode fixes and the update channels, Sebastiii for MKV editions and the DV fixes, SamuriHL for the CEC wake-config fix and the LAV MAT-packer hardening, and vlix for the codec-logo DV integration, the library DV-profile work and skins 8.8.16/8.8.17. Thanks also to the reporters behind the resume-jump, the SDR-after-DV corruption, the Dark Wolf red screen and the VC-1 and desync hunts, and to the upstream projects this builds on: avdvplus, libdovi (with our CMv4.0 strip now merged upstream), libass and FFmpeg.
Full Changelog (Kodi core): https://github.com/pannal/xbmc/commits/T4c/
Full Changelog (Kernel): https://github.com/pannal/linux-amlogic/commits/T4c
Full Changelog (CoreELEC-Settings): https://github.com/pannal/service.coreelec.settings/commits/T4c
Full Changelog (CoreELEC): https://github.com/pannal/CoreELEC/commits/T4c
Addon repo: https://github.com/pannal/p3i_repo
Contributors
Sources and contributors whose work landed in T4c (not exhaustive!):
skin.p3i.estuary8.8.16/8.8.17 (p3i_repo PRs #1, #2)#CoreELEC p3i internal testing team: mad props to all of you not listed here. You made this possible. Thank you.
All reactions