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);