ColorApproximated

data class ColorApproximated(val detail: String) : PlaybackWarning

The colour of this stream is APPROXIMATED, and it is shown anyway. Emitted once per stream.

Two cases today. Both need the transfer function inside the conversion loop, which is the colour-managed pipeline this engine does not have, so neither is fixable by rolling off a curve:

  • BT.2020 constant luminance encodes luma AFTER the transfer function rather than before it, so the non-constant luminance matrix every conversion path here runs is the wrong inverse for it and chroma-heavy areas shift.

  • ICtCp is not a YCbCr matrix at all. Its inverse runs the PQ curve between two matrices, so every conversion path here uses the BT.709 matrix instead and the colours shift.

Metadata-based on purpose, unlike HdrToneMapped: the approximation is a property of the conversion the engine WILL do, it is known at open, and it is true of every path that converts at all.

A renderer can also report a limit of its own conversion, through io.github.yuroyami.kiteplayer.spi.RendererEvent.ColorApproximated: the web canvas, for example, shows HDR without tone mapping. That one arrives when the first such frame is drawn.

Constructors

Link copied to clipboard
constructor(detail: String)

Properties

Link copied to clipboard
Link copied to clipboard
open val fields: Map<String, String>

The warning as key and value pairs, for a structured log sink.

Link copied to clipboard
open override val message: String

Functions

Link copied to clipboard
override fun toString(): String

The type and the message, with every URI cut to its file name, as for PlaybackError.