HdrToneMapped
HDR was rolled off to standard dynamic range so this display can show it. Once per open.
Not a defect and not a fallback: PQ and HLG carry more range than an SDR panel can present, so a player either tone maps or shows a flat, dull picture. This says which happened, because a viewer comparing two devices deserves to know the picture was CHANGED for one of them.
Emitted where tone mapping ENGAGES, never from the stream's metadata. That distinction is the whole point of the type: a path that hands HDR straight to a display which can show it (the Android MediaCodec interop tier today, HDR passthrough when it lands) must stay SILENT, and metadata-based emission cannot tell those apart. It arrives as io.github.yuroyami.kiteplayer.spi.RendererEvent.ToneMapEngaged from the renderer that did it.
Functions
The type and the message, with every URI cut to its file name, as for PlaybackError.