android_jni: Add alphaPresent to AvifDecoder
This brings the AvifDecoder full class usage to parity with the
AvifDecoder$Info class.
GOOGLE_INTERNAL_CL: 525455096
diff --git a/android_jni/avifandroidjni/src/androidTest/java/org/aomedia/avif/android/AnimatedImageTest.java b/android_jni/avifandroidjni/src/androidTest/java/org/aomedia/avif/android/AnimatedImageTest.java
index d322c70..c588403 100644
--- a/android_jni/avifandroidjni/src/androidTest/java/org/aomedia/avif/android/AnimatedImageTest.java
+++ b/android_jni/avifandroidjni/src/androidTest/java/org/aomedia/avif/android/AnimatedImageTest.java
@@ -28,6 +28,7 @@
public final int width;
public final int height;
public final int depth;
+ public final boolean alphaPresent;
public final int frameCount;
public final int repetitionCount;
public final double frameDuration;
@@ -37,6 +38,7 @@
int width,
int height,
int depth,
+ boolean alphaPresent,
int frameCount,
int repetitionCount,
double frameDuration) {
@@ -44,6 +46,7 @@
this.width = width;
this.height = height;
this.depth = depth;
+ this.alphaPresent = alphaPresent;
this.frameCount = frameCount;
this.repetitionCount = repetitionCount;
this.frameDuration = frameDuration;
@@ -51,10 +54,10 @@
}
private static final Image[] IMAGES = {
- // Parameter ordering: filename, width, height, depth, frameCount, repetitionCount,
- // frameDuration.
- new Image("alpha_video.avif", 640, 480, 8, 48, -2, 0.04),
- new Image("Chimera-AV1-10bit-480x270.avif", 480, 270, 10, 95, -2, 0.04),
+ // Parameter ordering: filename, width, height, depth, alphaPresent, frameCount,
+ // repetitionCount, frameDuration.
+ new Image("alpha_video.avif", 640, 480, 8, true, 48, -2, 0.04),
+ new Image("Chimera-AV1-10bit-480x270.avif", 480, 270, 10, false, 95, -2, 0.04),
};
private static final String ASSET_DIRECTORY = "animated_avif";
@@ -89,6 +92,7 @@
assertThat(decoder.getWidth()).isEqualTo(image.width);
assertThat(decoder.getHeight()).isEqualTo(image.height);
assertThat(decoder.getDepth()).isEqualTo(image.depth);
+ assertThat(decoder.getAlphaPresent()).isEqualTo(image.alphaPresent);
assertThat(decoder.getFrameCount()).isEqualTo(image.frameCount);
assertThat(decoder.getRepetitionCount()).isEqualTo(image.repetitionCount);
double[] frameDurations = decoder.getFrameDurations();
diff --git a/android_jni/avifandroidjni/src/main/java/org/aomedia/avif/android/AvifDecoder.java b/android_jni/avifandroidjni/src/main/java/org/aomedia/avif/android/AvifDecoder.java
index 2bb4450..d76c42a 100644
--- a/android_jni/avifandroidjni/src/main/java/org/aomedia/avif/android/AvifDecoder.java
+++ b/android_jni/avifandroidjni/src/main/java/org/aomedia/avif/android/AvifDecoder.java
@@ -48,6 +48,7 @@
private int width;
private int height;
private int depth;
+ private boolean alphaPresent;
private int frameCount;
private int repetitionCount;
private double[] frameDurations;
@@ -130,6 +131,11 @@
return depth;
}
+ /** Returns true if the image contains a transparency/alpha channel, false otherwise. */
+ public boolean getAlphaPresent() {
+ return alphaPresent;
+ }
+
/** Get the number of frames in the image. */
public int getFrameCount() {
return frameCount;
diff --git a/android_jni/avifandroidjni/src/main/jni/libavif_jni.cc b/android_jni/avifandroidjni/src/main/jni/libavif_jni.cc
index efaef2d..0090cf1 100644
--- a/android_jni/avifandroidjni/src/main/jni/libavif_jni.cc
+++ b/android_jni/avifandroidjni/src/main/jni/libavif_jni.cc
@@ -209,6 +209,8 @@
const jfieldID width_id = env->GetFieldID(avif_decoder_class, "width", "I");
const jfieldID height_id = env->GetFieldID(avif_decoder_class, "height", "I");
const jfieldID depth_id = env->GetFieldID(avif_decoder_class, "depth", "I");
+ const jfieldID alpha_present_id =
+ env->GetFieldID(avif_decoder_class, "alphaPresent", "Z");
const jfieldID frame_count_id =
env->GetFieldID(avif_decoder_class, "frameCount", "I");
const jfieldID repetition_count_id =
@@ -218,6 +220,7 @@
env->SetIntField(thiz, width_id, decoder->decoder->image->width);
env->SetIntField(thiz, height_id, decoder->decoder->image->height);
env->SetIntField(thiz, depth_id, decoder->decoder->image->depth);
+ env->SetBooleanField(thiz, alpha_present_id, decoder->decoder->alphaPresent);
env->SetIntField(thiz, repetition_count_id,
decoder->decoder->repetitionCount);
const int frameCount = decoder->decoder->imageCount;