Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7b7ea42a authored by Christopher Cameron's avatar Christopher Cameron Committed by John Reck
Browse files

Update gainmap documentation.

Fix formula for W.

Update names in the comments to match Android names.

Remove references to HDR base images (didn't make the cut).

Bug: 266628247
Change-Id: Ice5250dd18ed8255503f1b4c9b6d933d2472990e
parent 6c31e645
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -63,20 +63,20 @@ import libcore.util.NativeAllocationRegistry;
 * as follows:
 *
 * First, let W be a weight parameter determining how much the gainmap will be applied.
 *   W = clamp((log(H)               - log(displayRatioHdr)) /
 *             (log(displayRatioHdr) - log(displayRatioSdr), 0, 1)
 *   W = clamp((log(H)                      - log(minDisplayRatioForHdrTransition)) /
 *             (log(displayRatioForFullHdr) - log(minDisplayRatioForHdrTransition), 0, 1)
 *
 * Next, let L be the gainmap value in log space. We compute this from the value G that was
 * sampled from the texture as follows:
 *   L = mix(log(gainmapRatioMin), log(gainmapRatioMax), pow(G, gainmapGamma))
 *   L = mix(log(ratioMin), log(ratioMax), pow(G, gamma))
 *
 * Finally, apply the gainmap to compute D, the displayed pixel. If the base image is SDR then
 * compute:
 *   D = (B + epsilonSdr) * exp(L * W) - epsilonHdr
 * If the base image is HDR then compute:
 *   D = (B + epsilonHdr) * exp(L * (W - 1)) - epsilonSdr
 *
 * In the above math, log() is a natural logarithm and exp() is natural exponentiation.
 * In the above math, log() is a natural logarithm and exp() is natural exponentiation. The base
 * for these functions cancels out and does not affect the result, so other bases may be used
 * if preferred.
 */
public final class Gainmap implements Parcelable {