-
Notifications
You must be signed in to change notification settings - Fork 0
Android NEON Support
arm-v7a and arm-v7a-neon architectures share the same ABI, armeabi-v7a, in FFmpegKit Android library. When these two architectures are available in a binary, as it is in FFmpegKit LTS releases, FFmpegKit detects the NEON support at runtime and loads the appropriate architecture for armeabi-v7a. This mechanism aims to benefit from NEON optimizations, but the size of armeabi-v7a ABI is bigger than other ABIs since two architectures are included in the same ABI.
The following .so files are packaged for each Android ABI.
libavcodec.so
libavdevice.so
libavfilter.so
libavformat.so
libavutil.so
libc++_shared.so # included only if openh264, rubberband, snappy, tesseract or x265 is enabled
libcpufeatures.so
libffmpegkit-abidetect.so
libffmpegkit.so
libswresample.so
libswscale.so
To enable NEON support on armeabi-v7a, the following libraries with _neon postfix are included additionally.
libavcodec_neon.so
libavdevice_neon.so
libavfilter_neon.so
libavformat_neon.so
libavutil_neon.so
libffmpegkit_armv7a_neon.so
libswresample_neon.so
libswscale_neon.so
If you want to decrease the size of armeabi-v7a ABI, you can use the following configurations and exclude one of these two architectures.
- Use this configuration in
build.gradleto removearm-v7a-neonarchitecture
android {
packagingOptions {
exclude 'lib/armeabi-v7a/*_neon.so'
}
}
- Use this configuration in
build.gradleto removearm-v7aarchitecture
android {
packagingOptions {
exclude 'lib/armeabi-v7a/libavcodec.so'
exclude 'lib/armeabi-v7a/libavformat.so'
exclude 'lib/armeabi-v7a/libavfilter.so'
exclude 'lib/armeabi-v7a/libavutil.so'
exclude 'lib/armeabi-v7a/libswscale.so'
exclude 'lib/armeabi-v7a/libswresample.so'
exclude 'lib/armeabi-v7a/libavdevice.so'
}
}
Copyright (c) 2021-2025 FFmpegKit
- Status
- Versions
- Changelog
- Project Layout
- API
- Using
- Building
- External Libraries
- Patents
- License