Make libffmpeg_jni link statically against ffmpeg

Also make compilation automatically determine the number of
threads to use during compilation.

PiperOrigin-RevId: 344264761
This commit is contained in:
aquilescanta 2020-11-25 17:18:02 +00:00 committed by Andrew Lewis
parent 2fbad2105e
commit bf21e3c690
3 changed files with 21 additions and 12 deletions

View file

@ -34,8 +34,7 @@ public final class FfmpegLibrary {
private static final String TAG = "FfmpegLibrary";
private static final LibraryLoader LOADER =
new LibraryLoader("avutil", "swresample", "avcodec", "ffmpeg_jni");
private static final LibraryLoader LOADER = new LibraryLoader("ffmpeg_jni");
private static @MonotonicNonNull String version;
private static int inputBufferPaddingSize = C.LENGTH_UNSET;

View file

@ -9,11 +9,11 @@ set(ffmpeg_location "${CMAKE_CURRENT_SOURCE_DIR}/ffmpeg")
set(ffmpeg_binaries "${ffmpeg_location}/android-libs/${ANDROID_ABI}")
foreach(ffmpeg_lib avutil swresample avcodec)
set(ffmpeg_lib_filename lib${ffmpeg_lib}.so)
set(ffmpeg_lib_filename lib${ffmpeg_lib}.a)
set(ffmpeg_lib_file_path ${ffmpeg_binaries}/${ffmpeg_lib_filename})
add_library(
${ffmpeg_lib}
SHARED
STATIC
IMPORTED)
set_target_properties(
${ffmpeg_lib} PROPERTIES
@ -30,7 +30,7 @@ add_library(ffmpeg_jni
target_link_libraries(ffmpeg_jni
PRIVATE android
PRIVATE avutil
PRIVATE swresample
PRIVATE avcodec
PRIVATE avutil
PRIVATE ${android_log_lib})

View file

@ -19,10 +19,12 @@ FFMPEG_EXT_PATH=$1
NDK_PATH=$2
HOST_PLATFORM=$3
ENABLED_DECODERS=("${@:4}")
JOBS=$(nproc 2> /dev/null || sysctl -n hw.ncpu 2> /dev/null || echo 4)
echo "Using $JOBS jobs for make"
COMMON_OPTIONS="
--target-os=android
--disable-static
--enable-shared
--enable-static
--disable-shared
--disable-doc
--disable-programs
--disable-everything
@ -48,11 +50,13 @@ cd "${FFMPEG_EXT_PATH}/jni/ffmpeg"
--cpu=armv7-a \
--cross-prefix="${TOOLCHAIN_PREFIX}/armv7a-linux-androideabi16-" \
--nm="${TOOLCHAIN_PREFIX}/arm-linux-androideabi-nm" \
--strip="${TOOLCHAIN_PREFIX}/arm-linux-androideabi-strip" \
--ar="${TOOLCHAIN_PREFIX}/arm-linux-androideabi-ar" \
--ranlib="${TOOLCHAIN_PREFIX}/arm-linux-androideabi-ranlib" \
--strip="${TOOLCHAIN_PREFIX}/armv7a-linux-androideabi-strip" \
--extra-cflags="-march=armv7-a -mfloat-abi=softfp" \
--extra-ldflags="-Wl,--fix-cortex-a8" \
${COMMON_OPTIONS}
make -j4
make -j$JOBS
make install-libs
make clean
./configure \
@ -61,9 +65,11 @@ make clean
--cpu=armv8-a \
--cross-prefix="${TOOLCHAIN_PREFIX}/aarch64-linux-android21-" \
--nm="${TOOLCHAIN_PREFIX}/aarch64-linux-android-nm" \
--ar="${TOOLCHAIN_PREFIX}/aarch64-linux-android-ar" \
--ranlib="${TOOLCHAIN_PREFIX}/aarch64-linux-android-ranlib" \
--strip="${TOOLCHAIN_PREFIX}/aarch64-linux-android-strip" \
${COMMON_OPTIONS}
make -j4
make -j$JOBS
make install-libs
make clean
./configure \
@ -72,10 +78,12 @@ make clean
--cpu=i686 \
--cross-prefix="${TOOLCHAIN_PREFIX}/i686-linux-android16-" \
--nm="${TOOLCHAIN_PREFIX}/i686-linux-android-nm" \
--ar="${TOOLCHAIN_PREFIX}/i686-linux-android-ar" \
--ranlib="${TOOLCHAIN_PREFIX}/i686-linux-android-ranlib" \
--strip="${TOOLCHAIN_PREFIX}/i686-linux-android-strip" \
--disable-asm \
${COMMON_OPTIONS}
make -j4
make -j$JOBS
make install-libs
make clean
./configure \
@ -84,9 +92,11 @@ make clean
--cpu=x86_64 \
--cross-prefix="${TOOLCHAIN_PREFIX}/x86_64-linux-android21-" \
--nm="${TOOLCHAIN_PREFIX}/x86_64-linux-android-nm" \
--ar="${TOOLCHAIN_PREFIX}/x86_64-linux-android-ar" \
--ranlib="${TOOLCHAIN_PREFIX}/x86_64-linux-android-ranlib" \
--strip="${TOOLCHAIN_PREFIX}/x86_64-linux-android-strip" \
--disable-asm \
${COMMON_OPTIONS}
make -j4
make -j$JOBS
make install-libs
make clean