android_jni: Add a function to get version string
Returns the libavif version, codecs string and libyuv version (if
available).
GOOGLE_INTERNAL_CL: 525830047
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 20e1c23..5c98eb2 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
@@ -131,9 +131,11 @@
}
@Test
- public void testResultToString() throws IOException {
+ public void testUtilityFunctions() throws IOException {
// Test the avifResult value whose value and string representations are least likely to change.
assertThat(AvifDecoder.resultToString(AVIF_RESULT_OK)).isEqualTo("OK");
+ // Ensure that the version string starts with "libavif".
+ assertThat(AvifDecoder.versionString()).startsWith("libavif");
}
private ByteBuffer getBuffer() throws IOException {
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 09caebf..773720a 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
@@ -245,6 +245,12 @@
*/
public static native String resultToString(int result);
+ /**
+ * Returns a String that contains information about the libavif version, underlying codecs and
+ * libyuv version (if available).
+ */
+ public static native String versionString();
+
private native long createDecoder(ByteBuffer encoded, int length, int threads);
private native void destroyDecoder(long decoder);
diff --git a/android_jni/avifandroidjni/src/main/jni/libavif_jni.cc b/android_jni/avifandroidjni/src/main/jni/libavif_jni.cc
index bbbffc6..16bba1a 100644
--- a/android_jni/avifandroidjni/src/main/jni/libavif_jni.cc
+++ b/android_jni/avifandroidjni/src/main/jni/libavif_jni.cc
@@ -6,6 +6,7 @@
#include <cpu-features.h>
#include <jni.h>
+#include <cstdio>
#include <memory>
#include <new>
@@ -295,6 +296,16 @@
return env->NewStringUTF(avifResultToString(static_cast<avifResult>(result)));
}
+FUNC(jstring, versionString) {
+ char codec_versions[256];
+ avifCodecVersions(codec_versions);
+ char version_string[512];
+ snprintf(version_string, sizeof(version_string),
+ "libavif: %s. Codecs: %s. libyuv: %d.", avifVersion(),
+ codec_versions, avifLibYUVVersion());
+ return env->NewStringUTF(version_string);
+}
+
FUNC(void, destroyDecoder, jlong jdecoder) {
AvifDecoderWrapper* const decoder =
reinterpret_cast<AvifDecoderWrapper*>(jdecoder);