Amlogic: handle persistent DRM hotplug events on the main thread - #70
Amlogic: handle persistent DRM hotplug events on the main thread#70manuandre wants to merge 375 commits into
Conversation
|
5d864fc to
10c62c4
Compare
136ca8c to
0810297
Compare
|
Thanks, I reproduced and investigated both cases. |
|
A PR is ready when it's functionality is confirmed. Case 1. still doesn't work: |
7f60c46 to
9239a6d
Compare
Hide it so it can't be enabled in videoplayer settings and also disable it - otherwise users who previously enabled it would be left without audio passthrough and no option to fix this via the GUI.
…altime streams" This reverts commit b2f1103.
It takes some time for correct HW di frame_format value to be in file. Now interlace flag checked only 4 times with some period on stream start or after some stream change. Contains revert for 2 commits: CoreELEC@e6f7a0d CoreELEC@a655c4f
Causes flickering screen for several seconds after refresh rate change. Ref: xbmc/xbmc/pull/13629/files#r178433923
…ix primaries chromaticity and luminance levels in metadata
… with bootloader 'hdmimode' environment variable. Save also all resolutions supported by the kernel.
… available at the stage of platform_init.
…etected use 1080p instead 480p.
Get all chars of the sysfs file. Trim the result to remove new line char on single line.
Handle fractional refresh rate updates together with mode changes. Previously, they were handled separately, resulting in multiple DRM atomic commits and, consequently, multiple mode sets. Combining both operations into a single atomic commit avoids unnecessary mode changes.
Pulldown and double refresh rate is also valid option when no whitelist is used.
New TVs most support 120Hz, so add a new whole-number repeat option for 24/30Hz to 120Hz. This allow judder free playback for 24/30Hz on 120Hz.
Playerprocessinfo: added live audio and video bitrate. It's now show in all file type, the old static value not showed all-time. This closes CoreELEC#66.
Broken by "Screenshot rework". GUI is working again but video is still broken for VFM systems.
CE features register label names and info providers from CE owned files instead of adding rows to the upstream tables. Labels resolve by name, so CE is no longer bounded by the free id slots in Kodi's info label blocks. Providers append at the back of the provider list so upstream answers first.
Readd the Linux version row on a CE id now that the battery id matches upstream again.
The reverted patch also restyled the System Info screen. Those parts come back here on their own so they can be kept or dropped independently: the AMLogic header line, the hidden BogoMips and Revision rows, the bracketed os version, and the kernel suffix dropped from osVersionInfo now that the Linux version has its own row.
Readd the amlogic.pixformat, amlogic.displaymode and amlogic.eoft_gamut labels on CE ids, answered by the CE provider instead of upstream table rows and cases. The check script guards the CE id ranges against upstream growth on future rebases.
Readd the audiochannelssink label on a CE id with the sink side plumbing that feeds it. The ProcessInfo getter and its debug log do not come back, the label reads the data cache directly.
The reverted patch also rounded the videofps label to a trimmed fractional form. That presentation of an upstream value stays.
Locates the DV RPU, HDR10+ SEI and HDR static payloads in the stream and publishes them base64 encoded under one JSON label, so add-ons parse the raw bytes and core carries no metadata formats. Values are sequenced per pts and released when the render clock reaches their frame.
HDMI mandatory formats do not include a 1080p24Hz SBS mode.
3ee2067 to
e75e9e2
Compare
Keep the udev monitor active across hotplug events and defer HotplugEvent() processing to the window-system message pump. This avoids stopping the monitor from its callback and keeps DRM hotplug handling on Kodi's main thread.
0810297 to
a3373da
Compare
|
Thanks. |
e75e9e2 to
2426812
Compare
Description
Keep the Amlogic DRM udev monitor active across hotplug events and defer
hotplug processing to the window-system message pump.
The udev callback now only records a pending hotplug event.
MessagePump(),which runs on Kodi's main process thread, consumes that state and calls
HotplugEvent().The monitor cleanup path is also made safe and idempotent.
Motivation and context
The DRM hotplug monitor was stopped from inside its own event callback and
HotplugEvent()was processed directly on the event-monitor worker thread.This had two problems:
locking path;
were no longer reliably handled.
Keeping the monitor persistent and dispatching the actual hotplug work through
the existing window-system message pump avoids both issues.
How has this been tested?
Ugoos AM6B Plus (S922X), CoreELEC 22, built as a complete Amlogic image with
this change applied.
Repeated HDMI disconnect/reconnect cycles were tested.
The runtime log confirmed:
HotplugEvent()runs on Kodi's main process thread;recovers the normal display modes after reconnect;
What is the effect on users?
HDMI hotplug events on Amlogic remain monitored after the first event and the
resulting DRM/display handling is performed on Kodi's main thread.
Types of change
Checklist: