diff --git a/.travis.yml b/.travis.yml index 802edbc..28443a8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,4 +17,4 @@ install: - curl http://archive.ubuntu.com/ubuntu/pool/universe/n/nasm/nasm_2.14.02-1_amd64.deb --output $HOME/nasm_2.14.02-1_amd64.deb - sudo dpkg -i $HOME/nasm_2.14.02-1_amd64.deb script: - - bash -e ffmpeg-android-maker.sh --enable-libdav1d --enable-libmp3lame --enable-libaom --enable-libopus --android-api-level=18 + - bash -e ffmpeg-android-maker.sh -dav1d -mp3lame -aom -opus -android=18 diff --git a/ffmpeg-android-maker.sh b/ffmpeg-android-maker.sh index 8cba281..ad7f947 100755 --- a/ffmpeg-android-maker.sh +++ b/ffmpeg-android-maker.sh @@ -97,12 +97,8 @@ do cd ${BASE_DIR} done -# ABIs to build FFmpeg for. -# x86 is the first, because it is likely to have Text Relocations. -# In this case the rest ABIs will not be assembled at all. -ABIS_TO_BUILD=( "x86" "x86_64" "armeabi-v7a" "arm64-v8a" ) - -for ABI in ${ABIS_TO_BUILD[@]} +# Main build loop +for ABI in ${FFMPEG_ABIS_TO_BUILD[@]} do # Exporting variables for the current ABI source ${SCRIPTS_DIR}/export-build-variables.sh ${ABI} diff --git a/scripts/libaom/android.cmake b/scripts/libaom/android.cmake index 0ac7225..06fcbdb 100644 --- a/scripts/libaom/android.cmake +++ b/scripts/libaom/android.cmake @@ -10,8 +10,8 @@ include("$ENV{ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake") # AS_EXECUTABLE (AV1 Codec Library's variable) should point to an assembler # For x86 and x86_64 ABIs it needs yasm -# For armeabi-v7a and arm64-v8a is is ok to use GNU assembler -# When ANDROID_ABI is x86 or _86_64, +# For armeabi-v7a and arm64-v8a it is ok to use GNU assembler +# When ANDROID_ABI is x86 or x86_64, # then CMAKE_ASM_NASM_COMPILER variable will point to the yasm compiler (it is set by android.toolchain.cmake) if(DEFINED CMAKE_ASM_NASM_COMPILER) set(AS_EXECUTABLE ${CMAKE_ASM_NASM_COMPILER}) diff --git a/scripts/libaom/download.sh b/scripts/libaom/download.sh index 4229dea..6cbeabf 100755 --- a/scripts/libaom/download.sh +++ b/scripts/libaom/download.sh @@ -6,8 +6,8 @@ # This 2 variables have to be changed at once. # The first one is produced by 'git describe' command while being in the commit represented by the second one. -AOM_VERSION=v1.0.0-2780-ge1ec46ae2 -AOM_HASH=e1ec46ae24bb406057c3c256e69cd359b342a8d3 +AOM_VERSION=v1.0.0-errata1-avif +AOM_HASH=4eb1e7795b9700d532af38a2d9489458a8038233 echo "Using libaom $AOM_VERSION" AOM_SOURCES=libaom-${AOM_VERSION} diff --git a/scripts/parse-arguments.sh b/scripts/parse-arguments.sh index c995e6e..fd62061 100755 --- a/scripts/parse-arguments.sh +++ b/scripts/parse-arguments.sh @@ -3,18 +3,40 @@ # This script parses arguments that were passed to ffmpeg-android-maker.sh # and exports a bunch of varables that are used elsewhere. -# Local variables with default values. Can be overridden with specific arguments -# See the end of this file for more description -EXTERNAL_LIBRARIES=() +# Local variables with default values (except ABIS_TO_BUILD). +# Can be overridden with specific arguments. +# See the end of this file for more description. +ABIS_TO_BUILD=() +API_LEVEL=16 SOURCE_TYPE=TAR SOURCE_VALUE=4.2.2 -API_LEVEL=16 +EXTERNAL_LIBRARIES=() for argument in "$@" do case $argument in + # Build for only specified ABIs (separated by comma) + --target-abis=*|-abis=*) + IFS=',' read -ra ABIS <<< "${argument#*=}" + for abi in "${ABIS[@]}"; do + case $abi in + x86|x86_64|armeabi-v7a|arm64-v8a) + ABIS_TO_BUILD+=( "$abi" ) + ;; + arm) + ABIS_TO_BUILD+=( "armeabi-v7a" ) + ;; + arm64) + ABIS_TO_BUILD+=( "arm64-v8a" ) + ;; + *) + echo "Unknown ABI: $abi" + ;; + esac + done + ;; # Use this value as Android platform version during compilation. - --android-api-level=*) + --android-api-level=*|-android=*) API_LEVEL="${argument#*=}" shift ;; @@ -37,19 +59,19 @@ do shift ;; # Arguments below enable certain external libraries to build into FFmpeg - --enable-libaom) + --enable-libaom|-aom) EXTERNAL_LIBRARIES+=( "libaom" ) shift ;; - --enable-libdav1d) + --enable-libdav1d|-dav1d) EXTERNAL_LIBRARIES+=( "libdav1d" ) shift ;; - --enable-libmp3lame) + --enable-libmp3lame|-mp3lame) EXTERNAL_LIBRARIES+=( "libmp3lame" ) shift ;; - --enable-libopus) + --enable-libopus|-opus) EXTERNAL_LIBRARIES+=( "libopus" ) shift ;; @@ -59,11 +81,20 @@ do esac done +# if ABIS_TO_BUILD list is empty, then fill it with all supported ABIs +# The x86 is the first, because it is more likely to have Text Relocations. +# In this case the rest ABIs will not be assembled at all. +if [ ${#ABIS_TO_BUILD[@]} -eq 0 ]; then + ABIS_TO_BUILD=( "x86" "x86_64" "armeabi-v7a" "arm64-v8a" ) +fi +# The FFmpeg will be build for ABIs in this list +export FFMPEG_ABIS_TO_BUILD=${ABIS_TO_BUILD[@]} + # Saving the information FFmpeg's source code downloading export FFMPEG_SOURCE_TYPE=$SOURCE_TYPE export FFMPEG_SOURCE_VALUE=$SOURCE_VALUE -# A list of external libraries to build into the FFMpeg +# A list of external libraries to build into the FFmpeg # Elements from this list are used for strings substitution export FFMPEG_EXTERNAL_LIBRARIES=${EXTERNAL_LIBRARIES[@]}