Loading libs/jpegrecoverymap/include/jpegrecoverymap/recoverymapmath.h +2 −0 Original line number Diff line number Diff line Loading @@ -361,6 +361,8 @@ ColorTransformFn getHdrConversionFn(jpegr_color_gamut sdr_gamut, jpegr_color_gam * luminances in linear space, and the hdr ratio to encode against. */ uint8_t encodeRecovery(float y_sdr, float y_hdr, jr_metadata_ptr metadata); uint8_t encodeRecovery(float y_sdr, float y_hdr, jr_metadata_ptr metadata, float log2MinContentBoost, float log2MaxContentBoost); /* * Calculates the linear luminance in nits after applying the given recovery Loading libs/jpegrecoverymap/jpegr.cpp +5 −2 Original line number Diff line number Diff line Loading @@ -586,6 +586,8 @@ status_t JpegR::generateRecoveryMap(jr_uncompressed_ptr uncompressed_yuv_420_ima metadata->maxContentBoost = hdr_white_nits / kSdrWhiteNits; metadata->minContentBoost = 1.0f; float log2MinBoost = log2(metadata->minContentBoost); float log2MaxBoost = log2(metadata->maxContentBoost); ColorTransformFn hdrGamutConversionFn = getHdrConversionFn( uncompressed_yuv_420_image->colorGamut, uncompressed_p010_image->colorGamut); Loading Loading @@ -613,7 +615,8 @@ status_t JpegR::generateRecoveryMap(jr_uncompressed_ptr uncompressed_yuv_420_ima std::function<void()> generateMap = [uncompressed_yuv_420_image, uncompressed_p010_image, metadata, dest, hdrInvOetf, hdrGamutConversionFn, luminanceFn, hdr_white_nits, &jobQueue]() -> void { luminanceFn, hdr_white_nits, log2MinBoost, log2MaxBoost, &jobQueue]() -> void { size_t rowStart, rowEnd; size_t dest_map_width = uncompressed_yuv_420_image->width / kMapDimensionScaleFactor; size_t dest_map_stride = dest->width; Loading @@ -638,7 +641,7 @@ status_t JpegR::generateRecoveryMap(jr_uncompressed_ptr uncompressed_yuv_420_ima size_t pixel_idx = x + y * dest_map_stride; reinterpret_cast<uint8_t*>(dest->data)[pixel_idx] = encodeRecovery(sdr_y_nits, hdr_y_nits, metadata); encodeRecovery(sdr_y_nits, hdr_y_nits, metadata, log2MinBoost, log2MaxBoost); } } } Loading libs/jpegrecoverymap/recoverymapmath.cpp +8 −2 Original line number Diff line number Diff line Loading @@ -443,6 +443,12 @@ ColorTransformFn getHdrConversionFn(jpegr_color_gamut sdr_gamut, jpegr_color_gam //////////////////////////////////////////////////////////////////////////////// // Recovery map calculations uint8_t encodeRecovery(float y_sdr, float y_hdr, jr_metadata_ptr metadata) { return encodeRecovery(y_sdr, y_hdr, metadata, log2(metadata->minContentBoost), log2(metadata->maxContentBoost)); } uint8_t encodeRecovery(float y_sdr, float y_hdr, jr_metadata_ptr metadata, float log2MinContentBoost, float log2MaxContentBoost) { float gain = 1.0f; if (y_sdr > 0.0f) { gain = y_hdr / y_sdr; Loading @@ -451,8 +457,8 @@ uint8_t encodeRecovery(float y_sdr, float y_hdr, jr_metadata_ptr metadata) { if (gain < metadata->minContentBoost) gain = metadata->minContentBoost; if (gain > metadata->maxContentBoost) gain = metadata->maxContentBoost; return static_cast<uint8_t>((log2(gain) - log2(metadata->minContentBoost)) / (log2(metadata->maxContentBoost) - log2(metadata->minContentBoost)) return static_cast<uint8_t>((log2(gain) - log2MinContentBoost) / (log2MaxContentBoost - log2MinContentBoost) * 255.0f); } Loading services/surfaceflinger/SurfaceFlinger.cpp +4 −1 Original line number Diff line number Diff line Loading @@ -1149,7 +1149,10 @@ status_t SurfaceFlinger::getDisplayStats(const sp<IBinder>& displayToken, displayIdOpt = getPhysicalDisplayIdLocked(displayToken); } if (!displayIdOpt) { // TODO (b/277364366): Clients should be updated to pass in the display they // want, rather than us picking an arbitrary one (the pacesetter, in this // case). if (displayToken && !displayIdOpt) { ALOGE("%s: Invalid physical display token %p", __func__, displayToken.get()); return NAME_NOT_FOUND; } Loading Loading
libs/jpegrecoverymap/include/jpegrecoverymap/recoverymapmath.h +2 −0 Original line number Diff line number Diff line Loading @@ -361,6 +361,8 @@ ColorTransformFn getHdrConversionFn(jpegr_color_gamut sdr_gamut, jpegr_color_gam * luminances in linear space, and the hdr ratio to encode against. */ uint8_t encodeRecovery(float y_sdr, float y_hdr, jr_metadata_ptr metadata); uint8_t encodeRecovery(float y_sdr, float y_hdr, jr_metadata_ptr metadata, float log2MinContentBoost, float log2MaxContentBoost); /* * Calculates the linear luminance in nits after applying the given recovery Loading
libs/jpegrecoverymap/jpegr.cpp +5 −2 Original line number Diff line number Diff line Loading @@ -586,6 +586,8 @@ status_t JpegR::generateRecoveryMap(jr_uncompressed_ptr uncompressed_yuv_420_ima metadata->maxContentBoost = hdr_white_nits / kSdrWhiteNits; metadata->minContentBoost = 1.0f; float log2MinBoost = log2(metadata->minContentBoost); float log2MaxBoost = log2(metadata->maxContentBoost); ColorTransformFn hdrGamutConversionFn = getHdrConversionFn( uncompressed_yuv_420_image->colorGamut, uncompressed_p010_image->colorGamut); Loading Loading @@ -613,7 +615,8 @@ status_t JpegR::generateRecoveryMap(jr_uncompressed_ptr uncompressed_yuv_420_ima std::function<void()> generateMap = [uncompressed_yuv_420_image, uncompressed_p010_image, metadata, dest, hdrInvOetf, hdrGamutConversionFn, luminanceFn, hdr_white_nits, &jobQueue]() -> void { luminanceFn, hdr_white_nits, log2MinBoost, log2MaxBoost, &jobQueue]() -> void { size_t rowStart, rowEnd; size_t dest_map_width = uncompressed_yuv_420_image->width / kMapDimensionScaleFactor; size_t dest_map_stride = dest->width; Loading @@ -638,7 +641,7 @@ status_t JpegR::generateRecoveryMap(jr_uncompressed_ptr uncompressed_yuv_420_ima size_t pixel_idx = x + y * dest_map_stride; reinterpret_cast<uint8_t*>(dest->data)[pixel_idx] = encodeRecovery(sdr_y_nits, hdr_y_nits, metadata); encodeRecovery(sdr_y_nits, hdr_y_nits, metadata, log2MinBoost, log2MaxBoost); } } } Loading
libs/jpegrecoverymap/recoverymapmath.cpp +8 −2 Original line number Diff line number Diff line Loading @@ -443,6 +443,12 @@ ColorTransformFn getHdrConversionFn(jpegr_color_gamut sdr_gamut, jpegr_color_gam //////////////////////////////////////////////////////////////////////////////// // Recovery map calculations uint8_t encodeRecovery(float y_sdr, float y_hdr, jr_metadata_ptr metadata) { return encodeRecovery(y_sdr, y_hdr, metadata, log2(metadata->minContentBoost), log2(metadata->maxContentBoost)); } uint8_t encodeRecovery(float y_sdr, float y_hdr, jr_metadata_ptr metadata, float log2MinContentBoost, float log2MaxContentBoost) { float gain = 1.0f; if (y_sdr > 0.0f) { gain = y_hdr / y_sdr; Loading @@ -451,8 +457,8 @@ uint8_t encodeRecovery(float y_sdr, float y_hdr, jr_metadata_ptr metadata) { if (gain < metadata->minContentBoost) gain = metadata->minContentBoost; if (gain > metadata->maxContentBoost) gain = metadata->maxContentBoost; return static_cast<uint8_t>((log2(gain) - log2(metadata->minContentBoost)) / (log2(metadata->maxContentBoost) - log2(metadata->minContentBoost)) return static_cast<uint8_t>((log2(gain) - log2MinContentBoost) / (log2MaxContentBoost - log2MinContentBoost) * 255.0f); } Loading
services/surfaceflinger/SurfaceFlinger.cpp +4 −1 Original line number Diff line number Diff line Loading @@ -1149,7 +1149,10 @@ status_t SurfaceFlinger::getDisplayStats(const sp<IBinder>& displayToken, displayIdOpt = getPhysicalDisplayIdLocked(displayToken); } if (!displayIdOpt) { // TODO (b/277364366): Clients should be updated to pass in the display they // want, rather than us picking an arbitrary one (the pacesetter, in this // case). if (displayToken && !displayIdOpt) { ALOGE("%s: Invalid physical display token %p", __func__, displayToken.get()); return NAME_NOT_FOUND; } Loading