From 28f3943fd4777fd93f8480535a09af5fa219eb64 Mon Sep 17 00:00:00 2001 From: Leon Scroggins III Date: Tue, 19 Feb 2019 11:03:44 -0500 Subject: Make ImageDecoder.setTargetColorSpace to EXTENDED promote to F16 Bug: 117601185 Test: I5e5bc6b73d5d27ae30f00507d59896008d4cf364 ImageDecoder does not have a way to request decoding to F16 on 8 bit images, but it does have a way to request an EXTENDED ColorSpace. Treat that as a request to use a higher bit depth. This matches how we match EXTENDED to F16 in other cases (createBitmap, Bitmap#copy, etc). Change-Id: I3d31b13b56bb57a23b47ffcb2eaba11c53e0b8d9 --- graphics/java/android/graphics/ImageDecoder.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'graphics/java') diff --git a/graphics/java/android/graphics/ImageDecoder.java b/graphics/java/android/graphics/ImageDecoder.java index 9b5e33017743..7016cc741e90 100644 --- a/graphics/java/android/graphics/ImageDecoder.java +++ b/graphics/java/android/graphics/ImageDecoder.java @@ -1641,12 +1641,17 @@ public final class ImageDecoder implements AutoCloseable { @NonNull private Bitmap decodeBitmapInternal() throws IOException { checkState(); - long colorSpacePtr = mDesiredColorSpace == null ? 0 : - mDesiredColorSpace.getNativeInstance(); + long colorSpacePtr = 0; + boolean extended = false; + if (mDesiredColorSpace != null) { + colorSpacePtr = mDesiredColorSpace.getNativeInstance(); + extended = mDesiredColorSpace == ColorSpace.get(ColorSpace.Named.EXTENDED_SRGB) + || mDesiredColorSpace == ColorSpace.get(ColorSpace.Named.LINEAR_EXTENDED_SRGB); + } return nDecodeBitmap(mNativePtr, this, mPostProcessor != null, mDesiredWidth, mDesiredHeight, mCropRect, mMutable, mAllocator, mUnpremultipliedRequired, - mConserveMemory, mDecodeAsAlphaMask, colorSpacePtr); + mConserveMemory, mDecodeAsAlphaMask, colorSpacePtr, extended); } private void callHeaderDecoded(@Nullable OnHeaderDecodedListener listener, @@ -1934,7 +1939,7 @@ public final class ImageDecoder implements AutoCloseable { @Nullable Rect cropRect, boolean mutable, int allocator, boolean unpremulRequired, boolean conserveMemory, boolean decodeAsAlphaMask, - long desiredColorSpace) + long desiredColorSpace, boolean extended) throws IOException; private static native Size nGetSampledSize(long nativePtr, int sampleSize); -- cgit v1.2.3-59-g8ed1b