From 340620d0800b0fbe8987d32c43c00e1e078bedb8 Mon Sep 17 00:00:00 2001 From: John Reck Date: Wed, 1 Feb 2023 22:26:00 -0500 Subject: [PATCH] Bitmap::compress gainmap support Test: photos caching Bug: 267536879 Change-Id: I6acc4188c93bbb1363e0a578bad04523052419ca --- libs/hwui/hwui/Bitmap.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/libs/hwui/hwui/Bitmap.cpp b/libs/hwui/hwui/Bitmap.cpp index 0a755f0d67fdb..cbebae9ed4389 100644 --- a/libs/hwui/hwui/Bitmap.cpp +++ b/libs/hwui/hwui/Bitmap.cpp @@ -41,6 +41,7 @@ #include #include #include +#include #include #include #include @@ -458,6 +459,16 @@ BitmapPalette Bitmap::computePalette(const SkImageInfo& info, const void* addr, } bool Bitmap::compress(JavaCompressFormat format, int32_t quality, SkWStream* stream) { +#ifdef __ANDROID__ // TODO: This isn't built for host for some reason? + if (hasGainmap() && format == JavaCompressFormat::Jpeg) { + SkBitmap baseBitmap = getSkBitmap(); + SkBitmap gainmapBitmap = gainmap()->bitmap->getSkBitmap(); + SkJpegEncoder::Options options{.fQuality = quality}; + return SkJpegGainmapEncoder::EncodeJpegR(stream, baseBitmap.pixmap(), options, + gainmapBitmap.pixmap(), options, gainmap()->info); + } +#endif + SkBitmap skbitmap; getSkBitmap(&skbitmap); return compress(skbitmap, format, quality, stream);