Commit bf21e3c6 by aquilescanta Committed by Andrew Lewis

Make libffmpeg_jni link statically against ffmpeg

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

PiperOrigin-RevId: 344264761
parent 2fbad210
...@@ -34,8 +34,7 @@ public final class FfmpegLibrary { ...@@ -34,8 +34,7 @@ public final class FfmpegLibrary {
private static final String TAG = "FfmpegLibrary"; private static final String TAG = "FfmpegLibrary";
private static final LibraryLoader LOADER = private static final LibraryLoader LOADER = new LibraryLoader("ffmpeg_jni");
new LibraryLoader("avutil", "swresample", "avcodec", "ffmpeg_jni");
private static @MonotonicNonNull String version; private static @MonotonicNonNull String version;
private static int inputBufferPaddingSize = C.LENGTH_UNSET; private static int inputBufferPaddingSize = C.LENGTH_UNSET;
......
...@@ -9,11 +9,11 @@ set(ffmpeg_location "${CMAKE_CURRENT_SOURCE_DIR}/ffmpeg") ...@@ -9,11 +9,11 @@ set(ffmpeg_location "${CMAKE_CURRENT_SOURCE_DIR}/ffmpeg")
set(ffmpeg_binaries "${ffmpeg_location}/android-libs/${ANDROID_ABI}") set(ffmpeg_binaries "${ffmpeg_location}/android-libs/${ANDROID_ABI}")
foreach(ffmpeg_lib avutil swresample avcodec) 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}) set(ffmpeg_lib_file_path ${ffmpeg_binaries}/${ffmpeg_lib_filename})
add_library( add_library(
${ffmpeg_lib} ${ffmpeg_lib}
SHARED STATIC
IMPORTED) IMPORTED)
set_target_properties( set_target_properties(
${ffmpeg_lib} PROPERTIES ${ffmpeg_lib} PROPERTIES
...@@ -30,7 +30,7 @@ add_library(ffmpeg_jni ...@@ -30,7 +30,7 @@ add_library(ffmpeg_jni
target_link_libraries(ffmpeg_jni target_link_libraries(ffmpeg_jni
PRIVATE android PRIVATE android
PRIVATE avutil
PRIVATE swresample PRIVATE swresample
PRIVATE avcodec PRIVATE avcodec
PRIVATE avutil
PRIVATE ${android_log_lib}) PRIVATE ${android_log_lib})
...@@ -19,10 +19,12 @@ FFMPEG_EXT_PATH=$1 ...@@ -19,10 +19,12 @@ FFMPEG_EXT_PATH=$1
NDK_PATH=$2 NDK_PATH=$2
HOST_PLATFORM=$3 HOST_PLATFORM=$3
ENABLED_DECODERS=("${@:4}") 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=" COMMON_OPTIONS="
--target-os=android --target-os=android
--disable-static --enable-static
--enable-shared --disable-shared
--disable-doc --disable-doc
--disable-programs --disable-programs
--disable-everything --disable-everything
...@@ -48,11 +50,13 @@ cd "${FFMPEG_EXT_PATH}/jni/ffmpeg" ...@@ -48,11 +50,13 @@ cd "${FFMPEG_EXT_PATH}/jni/ffmpeg"
--cpu=armv7-a \ --cpu=armv7-a \
--cross-prefix="${TOOLCHAIN_PREFIX}/armv7a-linux-androideabi16-" \ --cross-prefix="${TOOLCHAIN_PREFIX}/armv7a-linux-androideabi16-" \
--nm="${TOOLCHAIN_PREFIX}/arm-linux-androideabi-nm" \ --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-cflags="-march=armv7-a -mfloat-abi=softfp" \
--extra-ldflags="-Wl,--fix-cortex-a8" \ --extra-ldflags="-Wl,--fix-cortex-a8" \
${COMMON_OPTIONS} ${COMMON_OPTIONS}
make -j4 make -j$JOBS
make install-libs make install-libs
make clean make clean
./configure \ ./configure \
...@@ -61,9 +65,11 @@ make clean ...@@ -61,9 +65,11 @@ make clean
--cpu=armv8-a \ --cpu=armv8-a \
--cross-prefix="${TOOLCHAIN_PREFIX}/aarch64-linux-android21-" \ --cross-prefix="${TOOLCHAIN_PREFIX}/aarch64-linux-android21-" \
--nm="${TOOLCHAIN_PREFIX}/aarch64-linux-android-nm" \ --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" \ --strip="${TOOLCHAIN_PREFIX}/aarch64-linux-android-strip" \
${COMMON_OPTIONS} ${COMMON_OPTIONS}
make -j4 make -j$JOBS
make install-libs make install-libs
make clean make clean
./configure \ ./configure \
...@@ -72,10 +78,12 @@ make clean ...@@ -72,10 +78,12 @@ make clean
--cpu=i686 \ --cpu=i686 \
--cross-prefix="${TOOLCHAIN_PREFIX}/i686-linux-android16-" \ --cross-prefix="${TOOLCHAIN_PREFIX}/i686-linux-android16-" \
--nm="${TOOLCHAIN_PREFIX}/i686-linux-android-nm" \ --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" \ --strip="${TOOLCHAIN_PREFIX}/i686-linux-android-strip" \
--disable-asm \ --disable-asm \
${COMMON_OPTIONS} ${COMMON_OPTIONS}
make -j4 make -j$JOBS
make install-libs make install-libs
make clean make clean
./configure \ ./configure \
...@@ -84,9 +92,11 @@ make clean ...@@ -84,9 +92,11 @@ make clean
--cpu=x86_64 \ --cpu=x86_64 \
--cross-prefix="${TOOLCHAIN_PREFIX}/x86_64-linux-android21-" \ --cross-prefix="${TOOLCHAIN_PREFIX}/x86_64-linux-android21-" \
--nm="${TOOLCHAIN_PREFIX}/x86_64-linux-android-nm" \ --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" \ --strip="${TOOLCHAIN_PREFIX}/x86_64-linux-android-strip" \
--disable-asm \ --disable-asm \
${COMMON_OPTIONS} ${COMMON_OPTIONS}
make -j4 make -j$JOBS
make install-libs make install-libs
make clean make clean
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment