20 #include "cpu-features.h"
44 if ((*vm)->GetEnv(vm, (
void**) &env, JNI_VERSION_1_6) != JNI_OK) {
50 if (abiDetectClass == NULL) {
60 return JNI_VERSION_1_6;
72 #ifdef FFMPEG_KIT_ARM_V7A
73 return (*env)->NewStringUTF(env,
"arm-v7a");
74 #elif FFMPEG_KIT_ARM64_V8A
75 return (*env)->NewStringUTF(env,
"arm64-v8a");
77 return (*env)->NewStringUTF(env,
"x86");
78 #elif FFMPEG_KIT_X86_64
79 return (*env)->NewStringUTF(env,
"x86_64");
81 return (*env)->NewStringUTF(env,
"unknown");
94 AndroidCpuFamily family = android_getCpuFamily();
96 if (family == ANDROID_CPU_FAMILY_ARM) {
97 uint64_t features = android_getCpuFeatures();
99 if (features & ANDROID_CPU_ARM_FEATURE_ARMv7) {
100 if (features & ANDROID_CPU_ARM_FEATURE_NEON) {
106 return (*env)->NewStringUTF(env,
ABI_ARM);
109 }
else if (family == ANDROID_CPU_FAMILY_ARM64) {
111 }
else if (family == ANDROID_CPU_FAMILY_X86) {
112 return (*env)->NewStringUTF(env,
ABI_X86);
113 }
else if (family == ANDROID_CPU_FAMILY_X86_64) {
128 #if defined(FFMPEG_KIT_LTS)
143 return (*env)->NewStringUTF(env, FFMPEG_CONFIGURATION);
JNIEXPORT jstring JNICALL Java_com_arthenica_ffmpegkit_AbiDetect_getNativeAbi(JNIEnv *env, jclass object)
JNIEXPORT jstring JNICALL Java_com_arthenica_ffmpegkit_AbiDetect_getNativeBuildConf(JNIEnv *env, jclass object)
JNIEXPORT jboolean JNICALL Java_com_arthenica_ffmpegkit_AbiDetect_isNativeLTSBuild(JNIEnv *env, jclass object)
const char * abiDetectClassName
jint JNI_OnLoad(JavaVM *vm, void *reserved)
JNINativeMethod abiDetectMethods[]
JNIEXPORT jstring JNICALL Java_com_arthenica_ffmpegkit_AbiDetect_getNativeCpuAbi(JNIEnv *env, jclass object)