Skip to content
45 changes: 25 additions & 20 deletions android.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,12 @@ ENABLED_CONFIG="\
--enable-libdav1d \
--enable-muxer=wav,mp4,matroska,webm,mp3,adts,flac,ogg,opus,mpegts,hls,dash,segment \
--enable-demuxer=* \
--enable-encoder=mjpeg \
--enable-decoder=h264,hevc,vp8,vp9,libdav1d,flv,vp6f,adpcm_swf,mpeg4,wmv3,mpeg1video,mpeg2video,mpeg2audio,msmpeg4v2,msmpeg4v3,theora,amrnb,amrwb,dvvideo,h263,mjpeg,png,jpeg,bmp,webp,mp3,aac,ac3,eac3,flac,opus,vorbis,pcm_s16le,pcm_s24le,alac,wma,ass,ssa,mov_text,subrip,webvtt,dvbsub,dvdsub,pgssub \
--enable-encoder=mjpeg,utvideo \
--enable-decoder=h264,hevc,vp8,vp9,libdav1d,flv,vp6f,adpcm_swf,mpeg4,wmv3,mpeg1video,mpeg2video,mpeg2audio,msmpeg4v2,msmpeg4v3,theora,truehd,amrnb,amrwb,dvvideo,h263,mjpeg,png,jpeg,bmp,webp,mp3,aac,ac3,eac3,flac,opus,vorbis,pcm_s16le,pcm_s24le,alac,wma,ass,ssa,mov_text,subrip,webvtt,dvbsub,dvdsub,pgssub,utvideo \
--enable-parser=* \
--enable-bsf=* \
--enable-shared "
--enable-bsf=* \
--enable-protocol=file \
--enable-static "


### Disable FFMPEG BUILD MODULES ####
Expand All @@ -35,7 +36,7 @@ DISABLED_CONFIG="\
--disable-libxml2 \
--disable-avdevice \
--disable-network \
--disable-static \
--disable-shared \
--disable-debug \
--disable-ffplay \
--disable-ffprobe \
Expand Down Expand Up @@ -105,8 +106,8 @@ pkg-config = 'pkg-config'
needs_exe_wrapper = true

[built-in options]
c_args = ['-fpic']
cpp_args = ['-fpic']
c_args = ['-fPIC']
cpp_args = ['-fPIC']
c_link_args = ['-Wl,-z,max-page-size=16384']

[host_machine]
Expand Down Expand Up @@ -157,8 +158,8 @@ configure_ffmpeg(){
--cxx="$CLANGXX" \
--sysroot="$SYSROOT" \
--prefix="$PREFIX" \
--extra-cflags="-fpic -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D__BIONIC_NO_PAGE_SIZE_MACRO -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security $EXTRA_CFLAGS -I$PREFIX/include " \
--extra-cxxflags="-fpic -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D__BIONIC_NO_PAGE_SIZE_MACRO -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -std=c++17 -fexceptions -frtti $EXTRA_CXXFLAGS -I$PREFIX/include " \
--extra-cflags="-fPIC -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D__BIONIC_NO_PAGE_SIZE_MACRO -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security $EXTRA_CFLAGS -I$PREFIX/include " \
--extra-cxxflags="-fPIC -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D__BIONIC_NO_PAGE_SIZE_MACRO -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -std=c++17 -fexceptions -frtti $EXTRA_CXXFLAGS -I$PREFIX/include " \
--extra-ldflags=" -Wl,-z,max-page-size=16384 -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments -L$SYSROOT/usr/lib/$TARGET_ARCH-linux-android/$ANDROID_API_LEVEL -L$PREFIX/lib" \
--enable-pic \
${ENABLED_CONFIG} \
Expand All @@ -172,6 +173,10 @@ configure_ffmpeg(){
make clean
make -j2
make install -j2

${CLANG} -shared -o ${PREFIX}/lib/libffmpeg.so \
$(find libavcodec libavformat libavutil libswresample libswscale -name "*.o") \
-lm -lz -ldl

}

Expand All @@ -186,11 +191,11 @@ for ARCH in "${ARCH_LIST[@]}"; do
TARGET_ABI="aarch64"
PREFIX="${FFMPEG_BUILD_DIR}/$ANDROID_API_LEVEL/arm64-v8a"
CROSS_PREFIX="$ANDROID_NDK_PATH/toolchains/llvm/prebuilt/linux-x86_64/bin/$TARGET_ABI-linux-android${ANDROID_API_LEVEL}-"
EXTRA_CFLAGS="-O2 -march=$TARGET_CPU -fomit-frame-pointer"
EXTRA_CXXFLAGS="-O2 -march=$TARGET_CPU -fomit-frame-pointer"
EXTRA_CFLAGS="-O3 -march=$TARGET_CPU -fomit-frame-pointer"
EXTRA_CXXFLAGS="-O3 -march=$TARGET_CPU -fomit-frame-pointer"

EXTRA_CONFIG="\
--enable-asm \
--disable-asm \
--enable-neon "
;;
"armv7-a"|"armeabi-v7a"|"armv7a")
Expand All @@ -200,14 +205,14 @@ for ARCH in "${ARCH_LIST[@]}"; do
TARGET_ABI="armv7a"
PREFIX="${FFMPEG_BUILD_DIR}/$ANDROID_API_LEVEL/armeabi-v7a"
CROSS_PREFIX="$ANDROID_NDK_PATH/toolchains/llvm/prebuilt/linux-x86_64/bin/$TARGET_ABI-linux-androideabi${ANDROID_API_LEVEL}-"
EXTRA_CFLAGS="-O2 -march=$TARGET_CPU -mfpu=neon -fomit-frame-pointer"
EXTRA_CXXFLAGS="-O2 -march=$TARGET_CPU -mfpu=neon -fomit-frame-pointer"
EXTRA_CFLAGS="-O3 -march=$TARGET_CPU -mfpu=neon -fomit-frame-pointer"
EXTRA_CXXFLAGS="-O3 -march=$TARGET_CPU -mfpu=neon -fomit-frame-pointer"

EXTRA_CONFIG="\
--disable-armv5te \
--disable-armv6 \
--disable-armv6t2 \
--enable-asm \
--disable-asm \
--enable-neon "
;;
"x86-64"|"x86_64")
Expand All @@ -217,11 +222,11 @@ for ARCH in "${ARCH_LIST[@]}"; do
TARGET_ABI="x86_64"
PREFIX="${FFMPEG_BUILD_DIR}/$ANDROID_API_LEVEL/x86_64"
CROSS_PREFIX="$ANDROID_NDK_PATH/toolchains/llvm/prebuilt/linux-x86_64/bin/$TARGET_ABI-linux-android${ANDROID_API_LEVEL}-"
EXTRA_CFLAGS="-O2 -march=$TARGET_CPU -fomit-frame-pointer"
EXTRA_CXXFLAGS="-O2 -march=$TARGET_CPU -fomit-frame-pointer"
EXTRA_CFLAGS="-O3 -march=$TARGET_CPU -fomit-frame-pointer"
EXTRA_CXXFLAGS="-O3 -march=$TARGET_CPU -fomit-frame-pointer"

EXTRA_CONFIG="\
--enable-asm "
--disable-asm "
;;
"x86"|"i686")
echo -e "\e[1;32m$ARCH Libraries\e[0m"
Expand All @@ -230,8 +235,8 @@ for ARCH in "${ARCH_LIST[@]}"; do
TARGET_ABI="i686"
PREFIX="${FFMPEG_BUILD_DIR}/$ANDROID_API_LEVEL/x86"
CROSS_PREFIX="$ANDROID_NDK_PATH/toolchains/llvm/prebuilt/linux-x86_64/bin/$TARGET_ABI-linux-android${ANDROID_API_LEVEL}-"
EXTRA_CFLAGS="-O2 -march=$TARGET_CPU -fomit-frame-pointer"
EXTRA_CXXFLAGS="-O2 -march=$TARGET_CPU -fomit-frame-pointer"
EXTRA_CFLAGS="-O3 -march=$TARGET_CPU -fomit-frame-pointer"
EXTRA_CXXFLAGS="-O3 -march=$TARGET_CPU -fomit-frame-pointer"
EXTRA_CONFIG="\
--disable-asm "
;;
Expand Down
Loading