summaryrefslogtreecommitdiff
path: root/native
diff options
context:
space:
mode:
authorLeon Scroggins III <scroggo@google.com>2020-01-19 21:22:18 -0500
committerLeon Scroggins III <scroggo@google.com>2020-01-19 21:22:18 -0500
commitf89de633049792b172d5a5653907ddb568b42ac2 (patch)
tree3ebf5cf8c2d83407a66405a38818699a74e9221b /native
parent380f3c9ae622c7284d88afbab4732291b472f64b (diff)
Implement AImageDecoder_computeSampledSize
Bug: 135133301 Test: If9ed79d8dcf1169369ba454723f4ac8d26427b7b Change-Id: I4926188cf66e2693c09dd7f1197173441936080c
Diffstat (limited to 'native')
-rw-r--r--native/graphics/jni/imagedecoder.cpp16
-rw-r--r--native/graphics/jni/libjnigraphics.map.txt1
2 files changed, 17 insertions, 0 deletions
diff --git a/native/graphics/jni/imagedecoder.cpp b/native/graphics/jni/imagedecoder.cpp
index 51439672d404..bd5914a55042 100644
--- a/native/graphics/jni/imagedecoder.cpp
+++ b/native/graphics/jni/imagedecoder.cpp
@@ -131,6 +131,10 @@ static ImageDecoder* toDecoder(AImageDecoder* d) {
return reinterpret_cast<ImageDecoder*>(d);
}
+static const ImageDecoder* toDecoder(const AImageDecoder* d) {
+ return reinterpret_cast<const ImageDecoder*>(d);
+}
+
// Note: This differs from the version in android_bitmap.cpp in that this
// version returns kGray_8_SkColorType for ANDROID_BITMAP_FORMAT_A_8. SkCodec
// allows decoding single channel images to gray, which Android then treats
@@ -258,6 +262,18 @@ int AImageDecoder_setTargetSize(AImageDecoder* decoder, int width, int height) {
? ANDROID_IMAGE_DECODER_SUCCESS : ANDROID_IMAGE_DECODER_INVALID_SCALE;
}
+int AImageDecoder_computeSampledSize(const AImageDecoder* decoder, int sampleSize,
+ int* width, int* height) {
+ if (!decoder || !width || !height || sampleSize < 1) {
+ return ANDROID_IMAGE_DECODER_BAD_PARAMETER;
+ }
+
+ SkISize size = toDecoder(decoder)->mCodec->getSampledDimensions(sampleSize);
+ *width = size.width();
+ *height = size.height();
+ return ANDROID_IMAGE_DECODER_SUCCESS;
+}
+
int AImageDecoder_setCrop(AImageDecoder* decoder, ARect crop) {
if (!decoder) {
return ANDROID_IMAGE_DECODER_BAD_PARAMETER;
diff --git a/native/graphics/jni/libjnigraphics.map.txt b/native/graphics/jni/libjnigraphics.map.txt
index 6843e7a8552f..d9e7828d852a 100644
--- a/native/graphics/jni/libjnigraphics.map.txt
+++ b/native/graphics/jni/libjnigraphics.map.txt
@@ -10,6 +10,7 @@ LIBJNIGRAPHICS {
AImageDecoder_getMinimumStride; # introduced=30
AImageDecoder_decodeImage; # introduced=30
AImageDecoder_setTargetSize; # introduced=30
+ AImageDecoder_computeSampledSize; # introduced=30
AImageDecoder_setCrop; # introduced=30
AImageDecoderHeaderInfo_getWidth; # introduced=30
AImageDecoderHeaderInfo_getHeight; # introduced=30