summaryrefslogtreecommitdiff
path: root/vpx_ports/arm_cpudetect.c
diff options
context:
space:
mode:
Diffstat (limited to 'vpx_ports/arm_cpudetect.c')
-rw-r--r--vpx_ports/arm_cpudetect.c30
1 files changed, 29 insertions, 1 deletions
diff --git a/vpx_ports/arm_cpudetect.c b/vpx_ports/arm_cpudetect.c
index 4109924cf..08496e4d0 100644
--- a/vpx_ports/arm_cpudetect.c
+++ b/vpx_ports/arm_cpudetect.c
@@ -100,6 +100,34 @@ int arm_cpu_caps(void)
}
#elif defined(__linux__)
+#if defined(__ANDROID__)
+#include <cpu-features.h>
+
+int arm_cpu_caps(void)
+{
+ int flags;
+ int mask;
+ uint64_t features;
+ if (!arm_cpu_env_flags(&flags))
+ {
+ return flags;
+ }
+ mask = arm_cpu_env_mask();
+ features = android_getCpuFeatures();
+
+#if defined(HAVE_ARMV5TE)
+ flags |= HAS_EDSP;
+#endif
+#if defined(HAVE_ARMV6)
+ flags |= HAS_MEDIA;
+#endif
+#if defined(HAVE_ARMV7)
+ if (features & ANDROID_CPU_ARM_FEATURE_NEON)
+ flags |= HAS_NEON;
+#endif
+ return flags & mask;
+}
+#else // !defined(__ANDROID__)
#include <stdio.h>
int arm_cpu_caps(void)
@@ -160,7 +188,7 @@ int arm_cpu_caps(void)
}
return flags & mask;
}
-
+#endif // defined(__linux__)
#elif !CONFIG_RUNTIME_CPU_DETECT
int arm_cpu_caps(void)