drop hard-coded lts release specific rules in build scripts

development
Taner Sener 7 months ago
parent 3a752ba728
commit 8fdb3671f3
  1. 18
      .github/ISSUE_TEMPLATE/bug_report.md
  2. 12
      .github/workflows/android-build-scripts.yml
  3. 6
      .github/workflows/ios-build-scripts.yml
  4. 36
      .github/workflows/linux-build-scripts.yml
  5. 6
      .github/workflows/macos-build-scripts.yml
  6. 6
      .github/workflows/periodic-builds-android.yml
  7. 18
      .github/workflows/periodic-builds-apple.yml
  8. 6
      .github/workflows/tvos-build-scripts.yml
  9. 29
      android.sh
  10. 1
      android/ffmpeg-kit-android-lib/build.gradle
  11. 7
      android/ffmpeg-kit-android-lib/src/main/cpp/ffmpegkit.c
  12. 28
      android/ffmpeg-kit-android-lib/src/main/cpp/ffmpegkit_abidetect.c
  13. 9
      android/ffmpeg-kit-android-lib/src/main/cpp/ffmpegkit_abidetect.h
  14. 7
      android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/AbiDetect.java
  15. 11
      android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java
  16. 20
      android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/NativeLoader.java
  17. 27
      android/jni/Android.mk
  18. 14
      android/jni/ffmpeg/Android.mk
  19. 2
      android/jni/ffmpeg/neon/Android.mk
  20. 17
      apple.sh
  21. 7
      apple/src/ArchDetect.h
  22. 8
      apple/src/ArchDetect.m
  23. 16
      apple/src/FFmpegKit.m
  24. 2
      apple/src/FFmpegKitConfig.h
  25. 6
      apple/src/FFmpegKitConfig.m
  26. 11
      ios.sh
  27. 3
      linux.sh
  28. 11
      macos.sh
  29. 39
      scripts/apple/ffmpeg.sh
  30. 59
      scripts/function-android.sh
  31. 99
      scripts/function-apple.sh
  32. 34
      scripts/function-ios.sh
  33. 61
      scripts/function-linux.sh
  34. 24
      scripts/function-macos.sh
  35. 28
      scripts/function-tvos.sh
  36. 65
      tools/android/build.gradle
  37. 65
      tools/android/build.lts.gradle
  38. 11
      tvos.sh

@ -23,20 +23,20 @@ Steps to reproduce the behaviour.
If applicable, add screenshots to help explain your problem. If applicable, add screenshots to help explain your problem.
**Logs** **Logs**
Post logs here or paste them to [Ghostbin](https://ghostbin.co) and insert the link here. Post logs here or paste them to [Ghostbin](https://ghostbin.site) and insert the link here.
**Environment** **Environment**
- Platform: `Android`/`Flutter`/`iOS`/`Linux`/`macOS`/`ReactNative`/`tvOS` - Platform: `Android`/`Flutter`/`iOS`/`Linux`/`macOS`/`ReactNative`/`tvOS`
- Architecture: `arm-v7a`, `arm-v7a-neon`, `arm64-v8a`, `x86`, `x86_64`, `armv7`, `armv7s`, `arm64`, `arm64-mac-catalyst`, `arm64-simulator`, `arm64e`, `i386`, `x86-64`, `x86-64-mac-catalyst` - Architecture: `arm-v7a`, `arm-v7a-neon`, `arm64-v8a`, `x86`, `x86_64`, `armv7`, `armv7s`, `arm64`, `arm64-mac-catalyst`, `arm64-simulator`, `arm64e`, `i386`, `x86-64`, `x86-64-mac-catalyst`
- Version: `v5.1`/`v5.1.LTS` - Version: ``
- Source branch: `main`, `development` - Source branch: ``
- Xcode version: `13.4.1` - Xcode version: ``
- Cocoapods version: `1.10.3` - Cocoapods version: ``
- Android Studio version: `4.0` - Android Studio version: ``
- Android NDK version: `r25b` - Android NDK version: ``
- flutter doctor: ` ` - flutter doctor: ``
- react-native info: ` ` - react-native info: ``
**Other** **Other**
Add any other context about the problem here. Add any other context about the problem here.

@ -56,8 +56,8 @@ jobs:
- name: print ffbuild logs - name: print ffbuild logs
if: ${{ failure() }} if: ${{ failure() }}
run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log'
build-lts-on-linux: build-api-16-on-linux:
name: android lts on linux name: android api 16 on linux
runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
strategy: strategy:
matrix: matrix:
@ -80,7 +80,7 @@ jobs:
unzip -q -o ndk.zip -d .ndk unzip -q -o ndk.zip -d .ndk
echo "ANDROID_NDK_ROOT=$PWD/.ndk/$(ls .ndk)" >> $GITHUB_ENV echo "ANDROID_NDK_ROOT=$PWD/.ndk/$(ls .ndk)" >> $GITHUB_ENV
- name: run the build script - name: run the build script
run: ./android.sh -d --lts --enable-android-media-codec --enable-android-zlib run: ./android.sh -d --api-level=16 --enable-android-media-codec --enable-android-zlib
- name: print build logs - name: print build logs
if: ${{ always() }} if: ${{ always() }}
run: cat build.log run: cat build.log
@ -116,8 +116,8 @@ jobs:
- name: print ffbuild logs - name: print ffbuild logs
if: ${{ failure() }} if: ${{ failure() }}
run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log'
build-lts-on-macos: build-api-16-on-macos:
name: android lts on macos name: android api 16 on macos
runs-on: macos-12 runs-on: macos-12
strategy: strategy:
matrix: matrix:
@ -138,7 +138,7 @@ jobs:
unzip -q -o ndk.zip -d .ndk unzip -q -o ndk.zip -d .ndk
echo "ANDROID_NDK_ROOT=$PWD/.ndk/$(ls .ndk)" >> $GITHUB_ENV echo "ANDROID_NDK_ROOT=$PWD/.ndk/$(ls .ndk)" >> $GITHUB_ENV
- name: run the build script - name: run the build script
run: ./android.sh -d --lts --enable-android-media-codec --enable-android-zlib run: ./android.sh -d --api-level=16 --enable-android-media-codec --enable-android-zlib
- name: print build logs - name: print build logs
if: ${{ always() }} if: ${{ always() }}
run: cat build.log run: cat build.log

@ -73,8 +73,8 @@ jobs:
- name: print ffbuild logs - name: print ffbuild logs
if: ${{ failure() }} if: ${{ failure() }}
run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log'
build-lts-on-macos-monterey: build-min-sdk-10-on-macos-monterey:
name: ios lts on monterey name: ios min sdk 10 on monterey
runs-on: macos-12 runs-on: macos-12
strategy: strategy:
matrix: matrix:
@ -89,7 +89,7 @@ jobs:
- name: set up xcode - name: set up xcode
run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh
- name: run the build script - name: run the build script
run: ./ios.sh --lts --enable-ios-audiotoolbox --enable-ios-bzip2 --enable-ios-libiconv --enable-ios-zlib run: ./ios.sh --target=10 --enable-ios-audiotoolbox --enable-ios-bzip2 --enable-ios-libiconv --enable-ios-zlib
- name: print build logs - name: print build logs
if: ${{ always() }} if: ${{ always() }}
run: cat build.log run: cat build.log

@ -41,24 +41,6 @@ jobs:
- name: print ffbuild logs - name: print ffbuild logs
if: ${{ failure() }} if: ${{ failure() }}
run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log'
build-lts-on-ubuntu-2204:
name: linux lts on ubuntu 22.04
runs-on: ubuntu-22.04
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v4
- name: prerequisites
run: sudo apt-get install clang llvm lld libclang-14-dev libstdc++6 nasm autoconf automake libtool pkg-config curl git doxygen rapidjson-dev
- name: run the build script
run: ./linux.sh -d --lts
- name: print build logs
if: ${{ always() }}
run: cat build.log
- name: print ffbuild logs
if: ${{ failure() }}
run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log'
build-main-on-ubuntu-2004: build-main-on-ubuntu-2004:
name: linux main on ubuntu-20.04 name: linux main on ubuntu-20.04
runs-on: ubuntu-20.04 runs-on: ubuntu-20.04
@ -77,21 +59,3 @@ jobs:
- name: print ffbuild logs - name: print ffbuild logs
if: ${{ failure() }} if: ${{ failure() }}
run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log'
build-lts-on-ubuntu-2004:
name: linux lts on ubuntu 20.04
runs-on: ubuntu-20.04
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v4
- name: prerequisites
run: sudo apt-get install clang llvm lld libclang-11-dev libstdc++6 nasm autoconf automake libtool pkg-config curl git doxygen rapidjson-dev
- name: run the build script
run: ./linux.sh -d --lts
- name: print build logs
if: ${{ always() }}
run: cat build.log
- name: print ffbuild logs
if: ${{ failure() }}
run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log'

@ -73,8 +73,8 @@ jobs:
- name: print ffbuild logs - name: print ffbuild logs
if: ${{ failure() }} if: ${{ failure() }}
run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log'
build-lts-on-macos-monterey: build-min-sdk-1012-on-macos-monterey:
name: macos lts on monterey name: macos min sdk 10.12 on monterey
runs-on: macos-12 runs-on: macos-12
strategy: strategy:
matrix: matrix:
@ -89,7 +89,7 @@ jobs:
- name: set up xcode - name: set up xcode
run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh
- name: run the build script - name: run the build script
run: ./macos.sh --lts --enable-macos-audiotoolbox --enable-macos-bzip2 --enable-macos-coreimage --enable-macos-libiconv --enable-macos-opencl --enable-macos-opengl --enable-macos-videotoolbox --enable-macos-zlib run: ./macos.sh --target=10.12 --enable-macos-audiotoolbox --enable-macos-bzip2 --enable-macos-coreimage --enable-macos-libiconv --enable-macos-opencl --enable-macos-opengl --enable-macos-videotoolbox --enable-macos-zlib
- name: print build logs - name: print build logs
if: ${{ always() }} if: ${{ always() }}
run: cat build.log run: cat build.log

@ -43,8 +43,8 @@ jobs:
- name: print ffbuild logs - name: print ffbuild logs
if: ${{ failure() }} if: ${{ failure() }}
run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log'
build-android-lts-on-linux: build-android-api-16-on-linux:
name: android lts on linux name: android api 16 on linux
runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
strategy: strategy:
matrix: matrix:
@ -74,7 +74,7 @@ jobs:
unzip -q -o ndk.zip -d .ndk unzip -q -o ndk.zip -d .ndk
echo "ANDROID_NDK_ROOT=$PWD/.ndk/$(ls .ndk)" >> $GITHUB_ENV echo "ANDROID_NDK_ROOT=$PWD/.ndk/$(ls .ndk)" >> $GITHUB_ENV
- name: run the build script - name: run the build script
run: ./android.sh -l --full --enable-gpl --disable-lib-srt run: ./android.sh --api-level=16 --full --enable-gpl --disable-lib-srt
- name: print build logs - name: print build logs
if: ${{ always() }} if: ${{ always() }}
run: cat build.log run: cat build.log

@ -31,8 +31,8 @@ jobs:
- name: print ffbuild logs - name: print ffbuild logs
if: ${{ failure() }} if: ${{ failure() }}
run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log'
build-ios-lts-on-macos-monterey: build-ios-min-sdk-10-on-macos-monterey:
name: ios lts on monterey name: ios min sdk 10 on monterey
runs-on: macos-12 runs-on: macos-12
strategy: strategy:
matrix: matrix:
@ -50,7 +50,7 @@ jobs:
- name: set up xcode - name: set up xcode
run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh
- name: run the build script - name: run the build script
run: PATH="/usr/local/opt/bison/bin:$PATH" XML_CATALOG_FILES="/usr/local/etc/xml/catalog" ./ios.sh -l --full --enable-gpl --disable-lib-srt --disable-lib-gnutls --disable-armv7s --disable-arm64e --disable-i386 run: PATH="/usr/local/opt/bison/bin:$PATH" XML_CATALOG_FILES="/usr/local/etc/xml/catalog" ./ios.sh --target=10 --full --enable-gpl --disable-lib-srt --disable-lib-gnutls --disable-armv7s --disable-arm64e --disable-i386
- name: print build logs - name: print build logs
if: ${{ always() }} if: ${{ always() }}
run: cat build.log run: cat build.log
@ -83,8 +83,8 @@ jobs:
- name: print ffbuild logs - name: print ffbuild logs
if: ${{ failure() }} if: ${{ failure() }}
run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log'
build-macos-lts-on-macos-monterey: build-macos-min-sdk-1012-on-macos-monterey:
name: macos lts on monterey name: macos min sdk 10.12 on monterey
runs-on: macos-12 runs-on: macos-12
strategy: strategy:
matrix: matrix:
@ -102,7 +102,7 @@ jobs:
- name: set up xcode - name: set up xcode
run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh
- name: run the build script - name: run the build script
run: PATH="/usr/local/opt/bison/bin:$PATH" XML_CATALOG_FILES="/usr/local/etc/xml/catalog" ./macos.sh -l --full --enable-gpl --disable-lib-srt --disable-lib-gnutls run: PATH="/usr/local/opt/bison/bin:$PATH" XML_CATALOG_FILES="/usr/local/etc/xml/catalog" ./macos.sh --target=10.12 --full --enable-gpl --disable-lib-srt --disable-lib-gnutls
- name: print build logs - name: print build logs
if: ${{ always() }} if: ${{ always() }}
run: cat build.log run: cat build.log
@ -135,8 +135,8 @@ jobs:
- name: print ffbuild logs - name: print ffbuild logs
if: ${{ failure() }} if: ${{ failure() }}
run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log'
build-tvos-lts-on-macos-monterey: build-tvos-min-sdk-100-on-macos-monterey:
name: tvos lts on monterey name: tvos min sdk 10.0 on monterey
runs-on: macos-12 runs-on: macos-12
strategy: strategy:
matrix: matrix:
@ -154,7 +154,7 @@ jobs:
- name: set up xcode - name: set up xcode
run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh
- name: run the build script - name: run the build script
run: PATH="/usr/local/opt/bison/bin:$PATH" XML_CATALOG_FILES="/usr/local/etc/xml/catalog" ./tvos.sh -l --full --enable-gpl --disable-lib-srt --disable-lib-gnutls run: PATH="/usr/local/opt/bison/bin:$PATH" XML_CATALOG_FILES="/usr/local/etc/xml/catalog" ./tvos.sh --target=10.0 --full --enable-gpl --disable-lib-srt --disable-lib-gnutls
- name: print build logs - name: print build logs
if: ${{ always() }} if: ${{ always() }}
run: cat build.log run: cat build.log

@ -73,8 +73,8 @@ jobs:
- name: print ffbuild logs - name: print ffbuild logs
if: ${{ failure() }} if: ${{ failure() }}
run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log'
build-lts-on-macos-monterey: build-min-sdk-100-on-macos-monterey:
name: tvos lts on monterey name: tvos min sdk 10.0 on monterey
runs-on: macos-12 runs-on: macos-12
strategy: strategy:
matrix: matrix:
@ -89,7 +89,7 @@ jobs:
- name: set up xcode - name: set up xcode
run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh
- name: run the build script - name: run the build script
run: ./tvos.sh --lts --enable-tvos-bzip2 --enable-tvos-audiotoolbox --enable-tvos-libiconv --enable-tvos-zlib run: ./tvos.sh --target=10.0 --enable-tvos-bzip2 --enable-tvos-audiotoolbox --enable-tvos-libiconv --enable-tvos-zlib
- name: print build logs - name: print build logs
if: ${{ always() }} if: ${{ always() }}
run: cat build.log run: cat build.log

@ -17,7 +17,7 @@ source "${BASEDIR}"/scripts/variable.sh
source "${BASEDIR}"/scripts/function-${FFMPEG_KIT_BUILD_TYPE}.sh source "${BASEDIR}"/scripts/function-${FFMPEG_KIT_BUILD_TYPE}.sh
disabled_libraries=() disabled_libraries=()
# SET DEFAULTS SETTINGS # SET DEFAULT SETTINGS
enable_default_android_architectures enable_default_android_architectures
enable_default_android_libraries enable_default_android_libraries
enable_main_build enable_main_build
@ -34,18 +34,6 @@ BUILD_FULL=""
BUILD_TYPE_ID="" BUILD_TYPE_ID=""
BUILD_VERSION=$(git describe --tags --always 2>>"${BASEDIR}"/build.log) BUILD_VERSION=$(git describe --tags --always 2>>"${BASEDIR}"/build.log)
# PROCESS LTS BUILD OPTION FIRST AND SET BUILD TYPE: MAIN OR LTS
rm -f "${BASEDIR}"/android/ffmpeg-kit-android-lib/build.gradle 1>>"${BASEDIR}"/build.log 2>&1
cp "${BASEDIR}"/tools/android/build.gradle "${BASEDIR}"/android/ffmpeg-kit-android-lib/build.gradle 1>>"${BASEDIR}"/build.log 2>&1
for argument in "$@"; do
if [[ "$argument" == "-l" ]] || [[ "$argument" == "--lts" ]]; then
enable_lts_build
BUILD_TYPE_ID+="LTS "
rm -f "${BASEDIR}"/android/ffmpeg-kit-android-lib/build.gradle 1>>"${BASEDIR}"/build.log 2>&1
cp "${BASEDIR}"/tools/android/build.lts.gradle "${BASEDIR}"/android/ffmpeg-kit-android-lib/build.gradle 1>>"${BASEDIR}"/build.log 2>&1
fi
done
# PROCESS BUILD OPTIONS # PROCESS BUILD OPTIONS
while [ ! $# -eq 0 ]; do while [ ! $# -eq 0 ]; do
@ -82,7 +70,6 @@ while [ ! $# -eq 0 ]; do
-s | --speed) -s | --speed)
optimize_for_speed optimize_for_speed
;; ;;
-l | --lts) ;;
-f | --force) -f | --force)
export BUILD_FORCE="1" export BUILD_FORCE="1"
;; ;;
@ -209,7 +196,7 @@ if [[ -n ${DISPLAY_HELP} ]]; then
fi fi
# SET API LEVEL IN build.gradle # SET API LEVEL IN build.gradle
${SED_INLINE} "s/minSdkVersion .*/minSdkVersion ${API}/g" "${BASEDIR}"/android/ffmpeg-kit-android-lib/build.gradle 1>>"${BASEDIR}"/build.log 2>&1 ${SED_INLINE} "s/minSdk .*/minSdk ${API}/g" "${BASEDIR}"/android/ffmpeg-kit-android-lib/build.gradle 1>>"${BASEDIR}"/build.log 2>&1
${SED_INLINE} "s/versionCode ..0/versionCode ${API}0/g" "${BASEDIR}"/android/ffmpeg-kit-android-lib/build.gradle 1>>"${BASEDIR}"/build.log 2>&1 ${SED_INLINE} "s/versionCode ..0/versionCode ${API}0/g" "${BASEDIR}"/android/ffmpeg-kit-android-lib/build.gradle 1>>"${BASEDIR}"/build.log 2>&1
echo -e "\nBuilding ffmpeg-kit ${BUILD_TYPE_ID}library for Android\n" echo -e "\nBuilding ffmpeg-kit ${BUILD_TYPE_ID}library for Android\n"
@ -305,11 +292,15 @@ fi
if [[ ${ENABLED_ARCHITECTURES[ARCH_X86_64]} -eq 1 ]]; then if [[ ${ENABLED_ARCHITECTURES[ARCH_X86_64]} -eq 1 ]]; then
ANDROID_ARCHITECTURES+="$(get_android_arch 4) " ANDROID_ARCHITECTURES+="$(get_android_arch 4) "
fi fi
if [[ ! -z ${FFMPEG_KIT_LTS_BUILD} ]]; then append_file "${BASEDIR}"/android/jni/build.mk "ARMV7_BUILD_PATH := android-arm-${API}"
mkdir -p "${BASEDIR}"/android/build 1>>"${BASEDIR}"/build.log 2>&1 append_file "${BASEDIR}"/android/jni/build.mk "ARMV7_NEON_BUILD_PATH := android-arm-neon-${API}"
append_file "${BASEDIR}"/android/jni/build.mk "LTS_POSTFIX := -lts" append_file "${BASEDIR}"/android/jni/build.mk "X86_BUILD_PATH := android-x86-${API}"
if [[ $(compare_versions "$API" "21") -lt 0 ]]; then
append_file "${BASEDIR}"/android/jni/build.mk "ARM64_BUILD_PATH := android-arm64-21"
append_file "${BASEDIR}"/android/jni/build.mk "X86_64_BUILD_PATH := android-x86_64-21"
else else
append_file "${BASEDIR}"/android/jni/build.mk "LTS_POSTFIX := " append_file "${BASEDIR}"/android/jni/build.mk "ARM64_BUILD_PATH := android-arm64-${API}"
append_file "${BASEDIR}"/android/jni/build.mk "X86_64_BUILD_PATH := android-x86_64-${API}"
fi fi
# BUILD FFMPEG-KIT # BUILD FFMPEG-KIT

@ -5,7 +5,6 @@ android {
namespace 'com.arthenica.ffmpegkit' namespace 'com.arthenica.ffmpegkit'
} }
compileSdk 34 compileSdk 34
ndkVersion "25.2.9519653"
defaultConfig { defaultConfig {
minSdk 24 minSdk 24

@ -902,8 +902,13 @@ Java_com_arthenica_ffmpegkit_FFmpegKitConfig_getNativeVersion(JNIEnv *env,
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_com_arthenica_ffmpegkit_FFmpegKitConfig_getNativePackageName( Java_com_arthenica_ffmpegkit_FFmpegKitConfig_getNativePackageName(
JNIEnv *env, jclass object) { JNIEnv *env, jclass object) {
#define STRINGIFY(x) #x
#define TOSTRING(x) STRINGIFY(x)
#define FFMPEG_KIT_PACKAGE_STR TOSTRING(FFMPEG_KIT_PACKAGE)
#ifdef FFMPEG_KIT_PACKAGE #ifdef FFMPEG_KIT_PACKAGE
return (*env)->NewStringUTF(env, FFMPEG_KIT_PACKAGE); return (*env)->NewStringUTF(env, FFMPEG_KIT_PACKAGE_STR);
#else #else
return (*env)->NewStringUTF(env, ""); return (*env)->NewStringUTF(env, "");
#endif #endif

@ -33,7 +33,9 @@ JNINativeMethod abiDetectMethods[] = {
{"isNativeLTSBuild", "()Z", {"isNativeLTSBuild", "()Z",
(void *)Java_com_arthenica_ffmpegkit_AbiDetect_isNativeLTSBuild}, (void *)Java_com_arthenica_ffmpegkit_AbiDetect_isNativeLTSBuild},
{"getNativeBuildConf", "()Ljava/lang/String;", {"getNativeBuildConf", "()Ljava/lang/String;",
(void *)Java_com_arthenica_ffmpegkit_AbiDetect_getNativeBuildConf}}; (void *)Java_com_arthenica_ffmpegkit_AbiDetect_getNativeBuildConf},
{"getNativeMinSdk", "()Ljava/lang/String;",
(void *)Java_com_arthenica_ffmpegkit_AbiDetect_getNativeMinSdk}};
/** /**
* Called when 'abidetect' native library is loaded. * Called when 'abidetect' native library is loaded.
@ -55,7 +57,7 @@ jint JNI_OnLoad(JavaVM *vm, void *reserved) {
return JNI_FALSE; return JNI_FALSE;
} }
if ((*env)->RegisterNatives(env, abiDetectClass, abiDetectMethods, 4) < 0) { if ((*env)->RegisterNatives(env, abiDetectClass, abiDetectMethods, 5) < 0) {
LOGE("OnLoad failed to RegisterNatives for class %s.\n", LOGE("OnLoad failed to RegisterNatives for class %s.\n",
abiDetectClassName); abiDetectClassName);
return JNI_FALSE; return JNI_FALSE;
@ -152,3 +154,25 @@ Java_com_arthenica_ffmpegkit_AbiDetect_getNativeBuildConf(JNIEnv *env,
jclass object) { jclass object) {
return (*env)->NewStringUTF(env, FFMPEG_CONFIGURATION); return (*env)->NewStringUTF(env, FFMPEG_CONFIGURATION);
} }
/**
* Returns the minimum Android API level required to run this native library.
*
* @param env pointer to native method interface
* @param object reference to the class on which this method is invoked
* @return the minimum Android API level required to run this native library
*/
JNIEXPORT jstring JNICALL
Java_com_arthenica_ffmpegkit_AbiDetect_getNativeMinSdk(
JNIEnv *env, jclass object) {
#define STRINGIFY(x) #x
#define TOSTRING(x) STRINGIFY(x)
#define FFMPEG_KIT_MIN_SDK_STR TOSTRING(FFMPEG_KIT_MIN_SDK)
#ifdef FFMPEG_KIT_MIN_SDK
return (*env)->NewStringUTF(env, FFMPEG_KIT_MIN_SDK_STR);
#else
return (*env)->NewStringUTF(env, "");
#endif
}

@ -76,4 +76,13 @@ Java_com_arthenica_ffmpegkit_AbiDetect_isNativeLTSBuild(JNIEnv *, jclass);
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_com_arthenica_ffmpegkit_AbiDetect_getNativeBuildConf(JNIEnv *, jclass); Java_com_arthenica_ffmpegkit_AbiDetect_getNativeBuildConf(JNIEnv *, jclass);
/*
* Class: com_arthenica_ffmpegkit_AbiDetect
* Method: getNativeMinSdk
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL
Java_com_arthenica_ffmpegkit_AbiDetect_getNativeMinSdk(
JNIEnv *env, jclass object);
#endif /* FFMPEG_KIT_ABIDETECT_H */ #endif /* FFMPEG_KIT_ABIDETECT_H */

@ -101,4 +101,11 @@ public class AbiDetect {
*/ */
native static String getNativeBuildConf(); native static String getNativeBuildConf();
/**
* <p>Returns the minimum Android API level required to run this library.
*
* @return minimum Android API level required to run this library
*/
public native static String getNativeMinSdk();
} }

@ -179,7 +179,7 @@ public class FFmpegKitConfig {
globalLogRedirectionStrategy = LogRedirectionStrategy.PRINT_LOGS_WHEN_NO_CALLBACKS_DEFINED; globalLogRedirectionStrategy = LogRedirectionStrategy.PRINT_LOGS_WHEN_NO_CALLBACKS_DEFINED;
safUrlsReusable = new AtomicBoolean(false); safUrlsReusable = new AtomicBoolean(false);
android.util.Log.i(FFmpegKitConfig.TAG, String.format("Loaded ffmpeg-kit-%s-%s-%s-%s.", NativeLoader.loadPackageName(), NativeLoader.loadAbi(), NativeLoader.loadVersion(), NativeLoader.loadBuildDate())); android.util.Log.i(FFmpegKitConfig.TAG, String.format("Loaded ffmpeg-kit-%s-%s-%s-api%s-%s.", NativeLoader.loadPackageName(), NativeLoader.loadAbi(), NativeLoader.loadVersion(), NativeLoader.loadMinSdk(), NativeLoader.loadBuildDate()));
} }
/** /**
@ -574,18 +574,17 @@ public class FFmpegKitConfig {
* @return FFmpegKit version * @return FFmpegKit version
*/ */
public static String getVersion() { public static String getVersion() {
if (isLTSBuild()) { return getNativeVersion();
return String.format("%s-lts", getNativeVersion());
} else {
return getNativeVersion();
}
} }
/** /**
* <p>Returns whether FFmpegKit release is a Long Term Release or not. * <p>Returns whether FFmpegKit release is a Long Term Release or not.
* *
* @return true/yes or false/no * @return true/yes or false/no
* @deprecated as of version 6.1.2, use the {@link AbiDetect#getNativeMinSdk()} method to
* determine the features supported by this version
*/ */
@Deprecated(since = "6.1.2", forRemoval = true)
public static boolean isLTSBuild() { public static boolean isLTSBuild() {
return AbiDetect.isNativeLTSBuild(); return AbiDetect.isNativeLTSBuild();
} }

@ -76,6 +76,14 @@ public class NativeLoader {
} }
} }
static String loadMinSdk() {
if (isTestModeDisabled()) {
return AbiDetect.getNativeMinSdk();
} else {
return String.format(Locale.getDefault(), "%d", Build.VERSION.SDK_INT);
}
}
static String loadPackageName() { static String loadPackageName() {
if (isTestModeDisabled()) { if (isTestModeDisabled()) {
return Packages.getPackageName(); return Packages.getPackageName();
@ -85,25 +93,15 @@ public class NativeLoader {
} }
static String loadVersion() { static String loadVersion() {
final String version = "6.0"; final String version = "6.1.2";
if (isTestModeDisabled()) { if (isTestModeDisabled()) {
return FFmpegKitConfig.getVersion(); return FFmpegKitConfig.getVersion();
} else if (loadIsLTSBuild()) {
return String.format("%s-lts", version);
} else { } else {
return version; return version;
} }
} }
static boolean loadIsLTSBuild() {
if (isTestModeDisabled()) {
return AbiDetect.isNativeLTSBuild();
} else {
return true;
}
}
static int loadLogLevel() { static int loadLogLevel() {
if (isTestModeDisabled()) { if (isTestModeDisabled()) {
return FFmpegKitConfig.getNativeLogLevel(); return FFmpegKitConfig.getNativeLogLevel();

@ -10,40 +10,37 @@ ifeq ($(TARGET_ARCH_ABI), armeabi-v7a)
MY_ARMV7_NEON := ${ARMV7_NEON} MY_ARMV7_NEON := ${ARMV7_NEON}
endif endif
ifeq ($(TARGET_ARCH_ABI), armeabi-v7a) # DEFINE ARCH FLAGS
ifeq ($(MY_ARMV7_NEON), true)
MY_BUILD_DIR := android-$(TARGET_ARCH)-neon-$(API)$(LTS_POSTFIX)
else
MY_BUILD_DIR := android-$(TARGET_ARCH)-$(API)$(LTS_POSTFIX)
endif
else
MY_BUILD_DIR := android-$(TARGET_ARCH)-$(API)$(LTS_POSTFIX)
endif
FFMPEG_INCLUDES := $(MY_LOCAL_PATH)/../../prebuilt/$(MY_BUILD_DIR)/ffmpeg/include
MY_ARM_MODE := arm MY_ARM_MODE := arm
MY_ARM_NEON := false MY_ARM_NEON := false
LOCAL_PATH := $(MY_LOCAL_PATH)/../ffmpeg-kit-android-lib/src/main/cpp
# DEFINE ARCH FLAGS
ifeq ($(TARGET_ARCH_ABI), armeabi-v7a) ifeq ($(TARGET_ARCH_ABI), armeabi-v7a)
MY_ARCH_FLAGS := ARM_V7A MY_ARCH_FLAGS := ARM_V7A
MY_ARM_NEON := true MY_ARM_NEON := true
ifeq ($(MY_ARMV7_NEON), true)
MY_BUILD_DIR := $(ARMV7_NEON_BUILD_PATH)
else
MY_BUILD_DIR := $(ARMV7_BUILD_PATH)
endif
endif endif
ifeq ($(TARGET_ARCH_ABI), arm64-v8a) ifeq ($(TARGET_ARCH_ABI), arm64-v8a)
MY_ARCH_FLAGS := ARM64_V8A MY_ARCH_FLAGS := ARM64_V8A
MY_ARM_NEON := true MY_ARM_NEON := true
MY_BUILD_DIR := $(ARM64_BUILD_PATH)
endif endif
ifeq ($(TARGET_ARCH_ABI), x86) ifeq ($(TARGET_ARCH_ABI), x86)
MY_ARCH_FLAGS := X86 MY_ARCH_FLAGS := X86
MY_ARM_NEON := true MY_ARM_NEON := true
MY_BUILD_DIR := $(X86_BUILD_PATH)
endif endif
ifeq ($(TARGET_ARCH_ABI), x86_64) ifeq ($(TARGET_ARCH_ABI), x86_64)
MY_ARCH_FLAGS := X86_64 MY_ARCH_FLAGS := X86_64
MY_ARM_NEON := true MY_ARM_NEON := true
MY_BUILD_DIR := $(X86_64_BUILD_PATH)
endif endif
FFMPEG_INCLUDES := $(MY_LOCAL_PATH)/../../prebuilt/$(MY_BUILD_DIR)/ffmpeg/include
LOCAL_PATH := $(MY_LOCAL_PATH)/../ffmpeg-kit-android-lib/src/main/cpp
# 16 kb page size support for arm64-v8a and x86_64
ifeq ($(TARGET_ARCH_ABI),arm64-v8a) ifeq ($(TARGET_ARCH_ABI),arm64-v8a)
MY_LDFLAGS := -Wl,-z,max-page-size=16384 MY_LDFLAGS := -Wl,-z,max-page-size=16384
else ifeq ($(TARGET_ARCH_ABI),x86_64) else ifeq ($(TARGET_ARCH_ABI),x86_64)

@ -1,4 +1,16 @@
LOCAL_PATH := $(call my-dir)/../../../prebuilt/android-$(TARGET_ARCH)-$(API)$(MY_LTS_POSTFIX)/ffmpeg/lib ifeq ($(TARGET_ARCH_ABI), armeabi-v7a)
MY_BUILD_DIR := $(ARMV7_BUILD_PATH)
endif
ifeq ($(TARGET_ARCH_ABI), arm64-v8a)
MY_BUILD_DIR := $(ARM64_BUILD_PATH)
endif
ifeq ($(TARGET_ARCH_ABI), x86)
MY_BUILD_DIR := $(X86_BUILD_PATH)
endif
ifeq ($(TARGET_ARCH_ABI), x86_64)
MY_BUILD_DIR := $(X86_64_BUILD_PATH)
endif
LOCAL_PATH := $(call my-dir)/../../../prebuilt/$(MY_BUILD_DIR)/ffmpeg/lib
MY_ARM_MODE := arm MY_ARM_MODE := arm

@ -1,4 +1,4 @@
LOCAL_PATH := $(call my-dir)/../../../../prebuilt/android-$(TARGET_ARCH)-neon-$(API)$(MY_LTS_POSTFIX)/ffmpeg/lib LOCAL_PATH := $(call my-dir)/../../../../prebuilt/$(MY_BUILD_DIR)/ffmpeg/lib
MY_ARM_MODE := arm MY_ARM_MODE := arm
MY_ARM_NEON := true MY_ARM_NEON := true

@ -25,8 +25,7 @@ After that this script should be used to create an umbrella xcframework.\n"
echo -e "Options:" echo -e "Options:"
echo -e " -h, --help\t\t\tdisplay this help and exit" echo -e " -h, --help\t\t\tdisplay this help and exit"
echo -e " -v, --version\t\t\tdisplay version information and exit" echo -e " -v, --version\t\t\tdisplay version information and exit"
echo -e " -f, --force\t\t\tignore warnings" echo -e " -f, --force\t\t\tignore warnings\n"
echo -e " -l, --lts\t\t\tinclude lts packages to support iOS 10+, tvOS 10+, macOS 10.12+ devices\n"
echo -e "Architectures:" echo -e "Architectures:"
echo -e " --disable-iphoneos\t\tdo not include iphoneos architecture variant [yes]" echo -e " --disable-iphoneos\t\tdo not include iphoneos architecture variant [yes]"
@ -124,7 +123,7 @@ source "${BASEDIR}"/scripts/variable.sh
export FFMPEG_KIT_BUILD_TYPE="apple" export FFMPEG_KIT_BUILD_TYPE="apple"
source "${BASEDIR}"/scripts/function-${FFMPEG_KIT_BUILD_TYPE}.sh source "${BASEDIR}"/scripts/function-${FFMPEG_KIT_BUILD_TYPE}.sh
# SET DEFAULTS SETTINGS # SET DEFAULT SETTINGS
enable_default_architecture_variants enable_default_architecture_variants
# SELECT XCODE VERSION USED FOR BUILDING # SELECT XCODE VERSION USED FOR BUILDING
@ -137,7 +136,8 @@ fi
DETECTED_IOS_SDK_VERSION="$(xcrun --sdk iphoneos --show-sdk-version 2>>"${BASEDIR}"/build.log)" DETECTED_IOS_SDK_VERSION="$(xcrun --sdk iphoneos --show-sdk-version 2>>"${BASEDIR}"/build.log)"
DETECTED_TVOS_SDK_VERSION="$(xcrun --sdk appletvos --show-sdk-version 2>>"${BASEDIR}"/build.log)" DETECTED_TVOS_SDK_VERSION="$(xcrun --sdk appletvos --show-sdk-version 2>>"${BASEDIR}"/build.log)"
DETECTED_MACOS_SDK_VERSION="$(xcrun --sdk macosx --show-sdk-version 2>>"${BASEDIR}"/build.log)" DETECTED_MACOS_SDK_VERSION="$(xcrun --sdk macosx --show-sdk-version 2>>"${BASEDIR}"/build.log)"
echo -e "INFO: Using iOS SDK: ${DETECTED_IOS_SDK_VERSION}, tvOS SDK: ${DETECTED_TVOS_SDK_VERSION}, macOS SDK: ${DETECTED_MACOS_SDK_VERSION} by Xcode provided at $(xcode-select -p)\n" 1>>"${BASEDIR}"/build.log 2>&1 XCODE_PATH=$(xcode-select -p 2>>"${BASEDIR}"/build.log)
echo -e "INFO: Using iOS SDK: ${DETECTED_IOS_SDK_VERSION}, tvOS SDK: ${DETECTED_TVOS_SDK_VERSION}, macOS SDK: ${DETECTED_MACOS_SDK_VERSION} by Xcode provided at ${XCODE_PATH}\n" 1>>"${BASEDIR}"/build.log 2>&1
echo -e "INFO: Build options: $*\n" 1>>"${BASEDIR}"/build.log 2>&1 echo -e "INFO: Build options: $*\n" 1>>"${BASEDIR}"/build.log 2>&1
# SET DEFAULT BUILD OPTIONS # SET DEFAULT BUILD OPTIONS
@ -152,14 +152,6 @@ if [[ -z ${BUILD_VERSION} ]]; then
exit 1 exit 1
fi fi
# PROCESS LTS BUILD OPTION FIRST AND SET BUILD TYPE: MAIN OR LTS
for argument in "$@"; do
if [[ "$argument" == "-l" ]] || [[ "$argument" == "--lts" ]]; then
export FFMPEG_KIT_LTS_BUILD="1"
BUILD_TYPE_ID+="LTS "
fi
done
# PROCESS BUILD OPTIONS # PROCESS BUILD OPTIONS
while [ ! $# -eq 0 ]; do while [ ! $# -eq 0 ]; do
case $1 in case $1 in
@ -170,7 +162,6 @@ while [ ! $# -eq 0 ]; do
display_version display_version
exit 0 exit 0
;; ;;
-l | --lts) ;;
-f | --force) -f | --force)
export BUILD_FORCE="1" export BUILD_FORCE="1"
;; ;;

@ -41,6 +41,13 @@
*/ */
+ (NSString *)getArch; + (NSString *)getArch;
/**
* Returns the minimum skd version required to run this native library
*
* @return the minimum skd version required to run this native library
*/
+ (NSString *)getMinSdk;
@end @end
#endif // FFMPEG_KIT_ARCH_DETECT_H #endif // FFMPEG_KIT_ARCH_DETECT_H

@ -170,4 +170,12 @@
return arch; return arch;
} }
+ (NSString *)getMinSdk {
#ifdef FFMPEG_KIT_MIN_SDK
return [NSString stringWithUTF8String:FFMPEG_KIT_MIN_SDK];
#else
return @"";
#endif
}
@end @end

@ -31,9 +31,19 @@
[FFmpegKitConfig class]; [FFmpegKitConfig class];
NSLog(@"Loaded ffmpeg-kit-%@-%@-%@-%@.\n", [Packages getPackageName], #if TARGET_OS_MACCATALYST
[ArchDetect getArch], [FFmpegKitConfig getVersion], NSString* osType = @"maccatalyst";
[FFmpegKitConfig getBuildDate]); #elif TARGET_OS_TV
NSString* osType = @"tvos";
#elif TARGET_OS_IOS
NSString* osType = @"ios";
#elif TARGET_OS_MAC
NSString* osType = @"macos";
#endif
NSLog(@"Loaded ffmpeg-kit-%@-%@-%@-%@%@-%@.\n", [Packages getPackageName],
[ArchDetect getArch], [FFmpegKitConfig getVersion], osType,
[ArchDetect getMinSdk], [FFmpegKitConfig getBuildDate]);
} }
+ (FFmpegSession *)executeWithArguments:(NSArray *)arguments { + (FFmpegSession *)executeWithArguments:(NSArray *)arguments {

@ -147,7 +147,7 @@ typedef NS_ENUM(NSUInteger, Signal) {
* *
* @return true/yes or false/no * @return true/yes or false/no
*/ */
+ (int)isLTSBuild; + (int)isLTSBuild __attribute__((deprecated("Deprecated as of version 6.1.2. Use AbiDetect.getMinSdk() method to determine the features supported by this version.")));
/** /**
* Returns FFmpegKit library build date. * Returns FFmpegKit library build date.

@ -1033,11 +1033,7 @@ int executeFFprobe(long sessionId, NSArray *arguments) {
} }
+ (NSString *)getVersion { + (NSString *)getVersion {
if ([FFmpegKitConfig isLTSBuild] == 1) { return FFmpegKitVersion;
return [NSString stringWithFormat:@"%@-lts", FFmpegKitVersion];
} else {
return FFmpegKitVersion;
}
} }
+ (int)isLTSBuild { + (int)isLTSBuild {

@ -18,7 +18,7 @@ source "${BASEDIR}"/scripts/variable.sh
source "${BASEDIR}"/scripts/function-${FFMPEG_KIT_BUILD_TYPE}.sh source "${BASEDIR}"/scripts/function-${FFMPEG_KIT_BUILD_TYPE}.sh
disabled_libraries=() disabled_libraries=()
# SET DEFAULTS SETTINGS # SET DEFAULT SETTINGS
enable_default_ios_architectures enable_default_ios_architectures
# SELECT XCODE VERSION USED FOR BUILDING # SELECT XCODE VERSION USED FOR BUILDING
@ -49,14 +49,6 @@ fi
# MAIN BUILDS ENABLED BY DEFAULT # MAIN BUILDS ENABLED BY DEFAULT
enable_main_build enable_main_build
# PROCESS LTS BUILD OPTION FIRST AND SET BUILD TYPE: MAIN OR LTS
for argument in "$@"; do
if [[ "$argument" == "-l" ]] || [[ "$argument" == "--lts" ]]; then
enable_lts_build
BUILD_TYPE_ID+="LTS "
fi
done
# PROCESS BUILD OPTIONS # PROCESS BUILD OPTIONS
while [ ! $# -eq 0 ]; do while [ ! $# -eq 0 ]; do
case $1 in case $1 in
@ -92,7 +84,6 @@ while [ ! $# -eq 0 ]; do
-s | --speed) -s | --speed)
optimize_for_speed optimize_for_speed
;; ;;
-l | --lts) ;;
-x | --xcframework) -x | --xcframework)
FFMPEG_KIT_XCF_BUILD="1" FFMPEG_KIT_XCF_BUILD="1"
;; ;;

@ -7,7 +7,7 @@ source "${BASEDIR}"/scripts/variable.sh
source "${BASEDIR}"/scripts/function-${FFMPEG_KIT_BUILD_TYPE}.sh source "${BASEDIR}"/scripts/function-${FFMPEG_KIT_BUILD_TYPE}.sh
disabled_libraries=() disabled_libraries=()
# SET DEFAULTS SETTINGS # SET DEFAULT SETTINGS
enable_default_linux_architectures enable_default_linux_architectures
echo -e "INFO: Build options: $*\n" 1>>"${BASEDIR}"/build.log 2>&1 echo -e "INFO: Build options: $*\n" 1>>"${BASEDIR}"/build.log 2>&1
@ -55,7 +55,6 @@ while [ ! $# -eq 0 ]; do
-s | --speed) -s | --speed)
optimize_for_speed optimize_for_speed
;; ;;
-l | --lts) ;;
-f | --force) -f | --force)
export BUILD_FORCE="1" export BUILD_FORCE="1"
;; ;;

@ -18,7 +18,7 @@ source "${BASEDIR}"/scripts/variable.sh
source "${BASEDIR}"/scripts/function-${FFMPEG_KIT_BUILD_TYPE}.sh source "${BASEDIR}"/scripts/function-${FFMPEG_KIT_BUILD_TYPE}.sh
disabled_libraries=() disabled_libraries=()
# SET DEFAULTS SETTINGS # SET DEFAULT SETTINGS
enable_default_macos_architectures enable_default_macos_architectures
# SELECT XCODE VERSION USED FOR BUILDING # SELECT XCODE VERSION USED FOR BUILDING
@ -49,14 +49,6 @@ fi
# MAIN BUILDS ENABLED BY DEFAULT # MAIN BUILDS ENABLED BY DEFAULT
enable_main_build enable_main_build
# PROCESS LTS BUILD OPTION FIRST AND SET BUILD TYPE: MAIN OR LTS
for argument in "$@"; do
if [[ "$argument" == "-l" ]] || [[ "$argument" == "--lts" ]]; then
enable_lts_build
BUILD_TYPE_ID+="LTS "
fi
done
# PROCESS BUILD OPTIONS # PROCESS BUILD OPTIONS
while [ ! $# -eq 0 ]; do while [ ! $# -eq 0 ]; do
case $1 in case $1 in
@ -89,7 +81,6 @@ while [ ! $# -eq 0 ]; do
-s | --speed) -s | --speed)
optimize_for_speed optimize_for_speed
;; ;;
-l | --lts) ;;
-x | --xcframework) -x | --xcframework)
FFMPEG_KIT_XCF_BUILD="1" FFMPEG_KIT_XCF_BUILD="1"
;; ;;

@ -401,17 +401,34 @@ for library in {0..61}; do
CONFIGURE_POSTFIX+=" --enable-opengl" CONFIGURE_POSTFIX+=" --enable-opengl"
;; ;;
*-videotoolbox) *-videotoolbox)
CONFIGURE_POSTFIX+=" --enable-videotoolbox" if [[ ${FFMPEG_KIT_BUILD_TYPE} == "ios" ]]; then
CONFIGURE_POSTFIX+=" --enable-videotoolbox"
# DISABLE FILTERS THAT REQUIRE IOS 16.0 OR MACOS 10.8
if [[ $(compare_versions "$IOS_MIN_VERSION" "16.0") -lt 1 ]]; then # DISABLE FILTERS THAT REQUIRE IOS 16.0
CONFIGURE_POSTFIX+=" --disable-filter=scale_vt" if [[ $(compare_versions "$IOS_MIN_VERSION" "16.0") -lt 1 ]]; then
elif [[ $(compare_versions "$MACOS_MIN_VERSION" "10.8") -lt 1 ]]; then CONFIGURE_POSTFIX+=" --disable-filter=scale_vt"
CONFIGURE_POSTFIX+=" --disable-filter=scale_vt" echo -e "WARN: Disabled scale_vt filter as it requires min sdk version >= 16.0 for ios. Currently it is set to $IOS_MIN_VERSION.\n" 1>>"${BASEDIR}"/build.log 2>&1
elif [[ $(compare_versions "$MAC_CATALYST_MIN_VERSION" "16.0") -lt 1 ]]; then elif [[ $(compare_versions "$MAC_CATALYST_MIN_VERSION" "16.0") -lt 1 ]]; then
CONFIGURE_POSTFIX+=" --disable-filter=scale_vt" CONFIGURE_POSTFIX+=" --disable-filter=scale_vt"
elif [[ $(compare_versions "$TVOS_MIN_VERSION" "16.0") -lt 1 ]]; then echo -e "WARN: Disabled scale_vt filter as it requires min sdk version >= 16.0 for ios. Currently it is set to $MAC_CATALYST_MIN_VERSION.\n" 1>>"${BASEDIR}"/build.log 2>&1
CONFIGURE_POSTFIX+=" --disable-filter=scale_vt" fi
elif [[ ${FFMPEG_KIT_BUILD_TYPE} == "macos" ]]; then
if [[ $(compare_versions "$MACOS_MIN_VERSION" "10.13") -ge 1 ]]; then
CONFIGURE_POSTFIX+=" --enable-videotoolbox"
else
CONFIGURE_POSTFIX+=" --disable-videotoolbox"
echo -e "WARN: Disabled videotoolbox as it requires min sdk version >= 10.13 for macos. Currently it is set to $MACOS_MIN_VERSION.\n" 1>>"${BASEDIR}"/build.log 2>&1
fi
elif [[ ${FFMPEG_KIT_BUILD_TYPE} == "tvos" ]]; then
CONFIGURE_POSTFIX+=" --enable-videotoolbox"
# DISABLE FILTERS THAT REQUIRE TVOS 16
if [[ $(compare_versions "$TVOS_MIN_VERSION" "16.0") -lt 1 ]]; then
CONFIGURE_POSTFIX+=" --disable-filter=scale_vt"
echo -e "WARN: Disabled scale_vt filter as it requires min sdk version >= 16.0 for tvos. Currently it is set to $TVOS_MIN_VERSION.\n" 1>>"${BASEDIR}"/build.log 2>&1
fi
fi fi
;; ;;
*-zlib) *-zlib)

@ -22,6 +22,10 @@ get_ffmpeg_kit_version() {
echo "${FFMPEG_KIT_VERSION}" echo "${FFMPEG_KIT_VERSION}"
} }
get_min_api_level_flag() {
echo "-DFFMPEG_KIT_MIN_SDK=${API}"
}
display_help() { display_help() {
local COMMAND=$(echo "$0" | sed -e 's/\.\///g') local COMMAND=$(echo "$0" | sed -e 's/\.\///g')
@ -33,7 +37,7 @@ under the prebuilt folder.\n"
echo -e "Usage: ./$COMMAND [OPTION]... [VAR=VALUE]...\n" echo -e "Usage: ./$COMMAND [OPTION]... [VAR=VALUE]...\n"
echo -e "Specify environment variables as VARIABLE=VALUE to override default build options.\n" echo -e "Specify environment variables as VARIABLE=VALUE to override default build options.\n"
display_help_options " -l, --lts\t\t\tbuild lts packages to support API 16+ devices\n --jobs=N\t\t\tnumber of jobs to run [auto]\n --api-level=api\t\toverride Android api level [24]\n --toolchain=path\t\toverride the default (llvm) toolchain path\n --no-ffmpeg-kit-protocols\tdisable custom ffmpeg-kit protocols (saf) [no]" display_help_options " --jobs=N\t\t\tnumber of jobs to run [auto]\n --api-level=api\t\toverride Android api level [24]\n --toolchain=path\t\toverride the default (llvm) toolchain path\n --no-ffmpeg-kit-protocols\tdisable custom ffmpeg-kit protocols (saf) [no]"
display_help_licensing display_help_licensing
echo -e "Architectures:" echo -e "Architectures:"
@ -58,18 +62,7 @@ enable_main_build() {
export API=24 export API=24
} }
enable_lts_build() {
export FFMPEG_KIT_LTS_BUILD="1"
# LTS RELEASES USE API LEVEL 16 / Android 4.1 (JELLY BEAN)
export API=16
}
build_application_mk() { build_application_mk() {
if [[ -n ${FFMPEG_KIT_LTS_BUILD} ]]; then
local LTS_BUILD_FLAG="-DFFMPEG_KIT_LTS "
fi
if [[ ${ENABLED_LIBRARIES[$LIBRARY_X265]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_TESSERACT]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_OPENH264]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_SNAPPY]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_RUBBERBAND]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_ZIMG]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_SRT]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_CHROMAPRINT]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_LIBILBC]} -eq 1 ]] || [[ -n ${CUSTOM_LIBRARY_USES_CPP} ]]; then if [[ ${ENABLED_LIBRARIES[$LIBRARY_X265]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_TESSERACT]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_OPENH264]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_SNAPPY]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_RUBBERBAND]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_ZIMG]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_SRT]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_CHROMAPRINT]} -eq 1 ]] || [[ ${ENABLED_LIBRARIES[$LIBRARY_LIBILBC]} -eq 1 ]] || [[ -n ${CUSTOM_LIBRARY_USES_CPP} ]]; then
local APP_STL="c++_shared" local APP_STL="c++_shared"
else else
@ -81,6 +74,8 @@ build_application_mk() {
local USES_FFMPEG_KIT_PROTOCOLS="-DUSES_FFMPEG_KIT_PROTOCOLS" local USES_FFMPEG_KIT_PROTOCOLS="-DUSES_FFMPEG_KIT_PROTOCOLS"
fi fi
local MIN_API=$(get_min_api_level_flag)
rm -f "${BASEDIR}/android/jni/Application.mk" rm -f "${BASEDIR}/android/jni/Application.mk"
cat >"${BASEDIR}/android/jni/Application.mk" <<EOF cat >"${BASEDIR}/android/jni/Application.mk" <<EOF
@ -94,7 +89,7 @@ APP_ALLOW_MISSING_DEPS := true
APP_PLATFORM := android-${API} APP_PLATFORM := android-${API}
APP_CFLAGS := -O3 -DANDROID ${LTS_BUILD_FLAG}${BUILD_DATE} -Wall -Wno-deprecated-declarations -Wno-pointer-sign -Wno-switch -Wno-unused-result -Wno-unused-variable ${USES_FFMPEG_KIT_PROTOCOLS} ${FFMPEG_KIT_DEBUG} ${EXTRA_CFLAGS} APP_CFLAGS := -O3 -DANDROID ${MIN_API} ${BUILD_DATE} -Wall -Wno-deprecated-declarations -Wno-pointer-sign -Wno-switch -Wno-unused-result -Wno-unused-variable ${USES_FFMPEG_KIT_PROTOCOLS} ${FFMPEG_KIT_DEBUG} ${EXTRA_CFLAGS}
APP_LDFLAGS := -Wl,--hash-style=both ${EXTRA_LDFLAGS} APP_LDFLAGS := -Wl,--hash-style=both ${EXTRA_LDFLAGS}
EOF EOF
@ -228,14 +223,10 @@ get_common_includes() {
} }
get_common_cflags() { get_common_cflags() {
if [[ -n ${FFMPEG_KIT_LTS_BUILD} ]]; then
local LTS_BUILD_FLAG="-DFFMPEG_KIT_LTS "
fi
if [[ $(compare_versions "$DETECTED_NDK_VERSION" "23") -ge 0 ]]; then if [[ $(compare_versions "$DETECTED_NDK_VERSION" "23") -ge 0 ]]; then
echo "-fstrict-aliasing -DANDROID_NDK -fPIC -DANDROID ${LTS_BUILD_FLAG}-D__ANDROID__ -D__ANDROID_MIN_SDK_VERSION__=${API}" echo "-fstrict-aliasing -DANDROID_NDK -fPIC -DANDROID -D__ANDROID__ -D__ANDROID_MIN_SDK_VERSION__=${API} $(get_min_api_level_flag)"
else else
echo "-fno-integrated-as -fstrict-aliasing -DANDROID_NDK -fPIC -DANDROID ${LTS_BUILD_FLAG}-D__ANDROID__ -D__ANDROID_API__=${API}" echo "-fno-integrated-as -fstrict-aliasing -DANDROID_NDK -fPIC -DANDROID -D__ANDROID__ -D__ANDROID_API__=${API} $(get_min_api_level_flag)"
fi fi
} }
@ -373,7 +364,7 @@ get_cflags() {
} }
get_cxxflags() { get_cxxflags() {
local COMMON_INCLUDES=$(get_common_includes) local COMMON_FLAGS="$(get_min_api_level_flag) $(get_common_includes)"
if [[ -z ${NO_LINK_TIME_OPTIMIZATION} ]]; then if [[ -z ${NO_LINK_TIME_OPTIMIZATION} ]]; then
local LINK_TIME_OPTIMIZATION_FLAGS="-flto" local LINK_TIME_OPTIMIZATION_FLAGS="-flto"
@ -389,26 +380,26 @@ get_cxxflags() {
case $1 in case $1 in
gnutls) gnutls)
echo "${COMMON_INCLUDES} -std=c++11 -fno-rtti ${OPTIMIZATION_FLAGS} ${EXTRA_CXXFLAGS}" echo "${COMMON_FLAGS} -std=c++11 -fno-rtti ${OPTIMIZATION_FLAGS} ${EXTRA_CXXFLAGS}"
;; ;;
ffmpeg) ffmpeg)
if [[ -z ${FFMPEG_KIT_DEBUG} ]]; then if [[ -z ${FFMPEG_KIT_DEBUG} ]]; then
echo "${COMMON_INCLUDES} -std=c++11 -fno-exceptions -fno-rtti ${LINK_TIME_OPTIMIZATION_FLAGS} -O2 -ffunction-sections -fdata-sections ${EXTRA_CXXFLAGS}" echo "${COMMON_FLAGS} -std=c++11 -fno-exceptions -fno-rtti ${LINK_TIME_OPTIMIZATION_FLAGS} -O2 -ffunction-sections -fdata-sections ${EXTRA_CXXFLAGS}"
else else
echo "${COMMON_INCLUDES} -std=c++11 -fno-exceptions -fno-rtti ${FFMPEG_KIT_DEBUG} ${EXTRA_CXXFLAGS}" echo "${COMMON_FLAGS} -std=c++11 -fno-exceptions -fno-rtti ${FFMPEG_KIT_DEBUG} ${EXTRA_CXXFLAGS}"
fi fi
;; ;;
opencore-amr) opencore-amr)
echo "${COMMON_INCLUDES} ${OPTIMIZATION_FLAGS} ${EXTRA_CXXFLAGS}" echo "${COMMON_FLAGS} ${OPTIMIZATION_FLAGS} ${EXTRA_CXXFLAGS}"
;; ;;
x265) x265)
echo "${COMMON_INCLUDES} -std=c++11 -fno-exceptions ${OPTIMIZATION_FLAGS} ${EXTRA_CXXFLAGS}" echo "${COMMON_FLAGS} -std=c++11 -fno-exceptions ${OPTIMIZATION_FLAGS} ${EXTRA_CXXFLAGS}"
;; ;;
rubberband | srt | tesseract | zimg) rubberband | srt | tesseract | zimg)
echo "${COMMON_INCLUDES} -std=c++11 ${OPTIMIZATION_FLAGS} ${EXTRA_CXXFLAGS}" echo "${COMMON_FLAGS} -std=c++11 ${OPTIMIZATION_FLAGS} ${EXTRA_CXXFLAGS}"
;; ;;
*) *)
echo "${COMMON_INCLUDES} -std=c++11 -fno-exceptions -fno-rtti ${OPTIMIZATION_FLAGS} ${EXTRA_CXXFLAGS}" echo "${COMMON_FLAGS} -std=c++11 -fno-exceptions -fno-rtti ${OPTIMIZATION_FLAGS} ${EXTRA_CXXFLAGS}"
;; ;;
esac esac
} }
@ -995,21 +986,11 @@ get_android_cmake_ndk_abi() {
} }
get_build_directory() { get_build_directory() {
local LTS_POSTFIX="" echo "android-$(get_target_cpu)-${API}"
if [[ -n ${FFMPEG_KIT_LTS_BUILD} ]]; then
LTS_POSTFIX="-lts"
fi
echo "android-$(get_target_cpu)-${API}${LTS_POSTFIX}"
} }
get_aar_directory() { get_aar_directory() {
local LTS_POSTFIX="" echo "bundle-android-aar-${API}"
if [[ -n ${FFMPEG_KIT_LTS_BUILD} ]]; then
LTS_POSTFIX="-lts"
fi
echo "bundle-android-aar-${API}${LTS_POSTFIX}"
} }
android_ndk_cmake() { android_ndk_cmake() {

@ -7,11 +7,7 @@ export FFMPEG_LIBS=("libavcodec" "libavdevice" "libavfilter" "libavformat" "liba
get_ffmpeg_kit_version() { get_ffmpeg_kit_version() {
local FFMPEG_KIT_VERSION=$(grep 'const FFmpegKitVersion' "${BASEDIR}"/apple/src/FFmpegKitConfig.m | grep -Eo '\".*\"' | sed -e 's/\"//g') local FFMPEG_KIT_VERSION=$(grep 'const FFmpegKitVersion' "${BASEDIR}"/apple/src/FFmpegKitConfig.m | grep -Eo '\".*\"' | sed -e 's/\"//g')
if [[ -z ${FFMPEG_KIT_LTS_BUILD} ]]; then echo "${FFMPEG_KIT_VERSION}"
echo "${FFMPEG_KIT_VERSION}"
else
echo "${FFMPEG_KIT_VERSION}.LTS"
fi
} }
get_external_library_version() { get_external_library_version() {
@ -601,20 +597,15 @@ get_default_build_directory() {
} }
get_build_directory() { get_build_directory() {
local LTS_POSTFIX=""
if [[ -n ${FFMPEG_KIT_LTS_BUILD} ]]; then
LTS_POSTFIX="-lts"
fi
case ${ARCH} in case ${ARCH} in
x86-64) x86-64)
echo "apple-${FFMPEG_KIT_BUILD_TYPE}-x86_64-$(get_min_sdk_version)${LTS_POSTFIX}" echo "apple-${FFMPEG_KIT_BUILD_TYPE}-x86_64-$(get_min_sdk_version)"
;; ;;
x86-64-mac-catalyst) x86-64-mac-catalyst)
echo "apple-${FFMPEG_KIT_BUILD_TYPE}-x86_64-mac-catalyst-$(get_min_sdk_version)${LTS_POSTFIX}" echo "apple-${FFMPEG_KIT_BUILD_TYPE}-x86_64-mac-catalyst-$(get_min_sdk_version)"
;; ;;
*) *)
echo "apple-${FFMPEG_KIT_BUILD_TYPE}-${ARCH}-$(get_min_sdk_version)${LTS_POSTFIX}" echo "apple-${FFMPEG_KIT_BUILD_TYPE}-${ARCH}-$(get_min_sdk_version)"
;; ;;
esac esac
} }
@ -624,55 +615,41 @@ get_build_directory() {
# #
get_framework_directory() { get_framework_directory() {
local FRAMEWORK_TYPE="$1" local FRAMEWORK_TYPE="$1"
local LTS_POSTFIX=""
if [[ -n ${FFMPEG_KIT_LTS_BUILD} ]]; then
LTS_POSTFIX="-lts"
fi
case $FRAMEWORK_TYPE in case $FRAMEWORK_TYPE in
"${ARCH_VAR_IOS}") "${ARCH_VAR_IOS}")
echo "bundle-apple-framework-ios-$(get_min_sdk_version)${LTS_POSTFIX}" echo "bundle-apple-framework-ios-$(get_min_sdk_version)"
;; ;;
"${ARCH_VAR_IPHONEOS}") "${ARCH_VAR_IPHONEOS}")
echo "bundle-apple-framework-iphoneos-$(get_min_sdk_version)${LTS_POSTFIX}" echo "bundle-apple-framework-iphoneos-$(get_min_sdk_version)"
;; ;;
"${ARCH_VAR_IPHONESIMULATOR}") "${ARCH_VAR_IPHONESIMULATOR}")
echo "bundle-apple-framework-iphonesimulator-$(get_min_sdk_version)${LTS_POSTFIX}" echo "bundle-apple-framework-iphonesimulator-$(get_min_sdk_version)"
;; ;;
"${ARCH_VAR_MAC_CATALYST}") "${ARCH_VAR_MAC_CATALYST}")
echo "bundle-apple-framework-mac-catalyst-$(get_min_sdk_version)${LTS_POSTFIX}" echo "bundle-apple-framework-mac-catalyst-$(get_min_sdk_version)"
;; ;;
"${ARCH_VAR_TVOS}") "${ARCH_VAR_TVOS}")
echo "bundle-apple-framework-tvos-$(get_min_sdk_version)${LTS_POSTFIX}" echo "bundle-apple-framework-tvos-$(get_min_sdk_version)"
;; ;;
"${ARCH_VAR_APPLETVOS}") "${ARCH_VAR_APPLETVOS}")
echo "bundle-apple-framework-appletvos-$(get_min_sdk_version)${LTS_POSTFIX}" echo "bundle-apple-framework-appletvos-$(get_min_sdk_version)"
;; ;;
"${ARCH_VAR_APPLETVSIMULATOR}") "${ARCH_VAR_APPLETVSIMULATOR}")
echo "bundle-apple-framework-appletvsimulator-$(get_min_sdk_version)${LTS_POSTFIX}" echo "bundle-apple-framework-appletvsimulator-$(get_min_sdk_version)"
;; ;;
"${ARCH_VAR_MACOS}") "${ARCH_VAR_MACOS}")
echo "bundle-apple-framework-macos-$(get_min_sdk_version)${LTS_POSTFIX}" echo "bundle-apple-framework-macos-$(get_min_sdk_version)"
;; ;;
esac esac
} }
get_xcframework_directory() { get_xcframework_directory() {
local LTS_POSTFIX="" echo "bundle-apple-xcframework-${FFMPEG_KIT_BUILD_TYPE}-$(get_min_sdk_version)"
if [[ -n ${FFMPEG_KIT_LTS_BUILD} ]]; then
LTS_POSTFIX="-lts"
fi
echo "bundle-apple-xcframework-${FFMPEG_KIT_BUILD_TYPE}-$(get_min_sdk_version)${LTS_POSTFIX}"
} }
get_umbrella_xcframework_directory() { get_umbrella_xcframework_directory() {
local LTS_POSTFIX="" echo "bundle-apple-xcframework-$(get_min_sdk_version)"
if [[ -n ${FFMPEG_KIT_LTS_BUILD} ]]; then
LTS_POSTFIX="-lts"
fi
echo "bundle-apple-xcframework-$(get_min_sdk_version)${LTS_POSTFIX}"
} }
# #
@ -680,35 +657,31 @@ get_umbrella_xcframework_directory() {
# #
get_universal_library_directory() { get_universal_library_directory() {
local ARCHITECTURE_VARIANT="$1" local ARCHITECTURE_VARIANT="$1"
local LTS_POSTFIX=""
if [[ -n ${FFMPEG_KIT_LTS_BUILD} ]]; then
LTS_POSTFIX="-lts"
fi
case ${ARCHITECTURE_VARIANT} in case ${ARCHITECTURE_VARIANT} in
"${ARCH_VAR_IOS}") "${ARCH_VAR_IOS}")
echo "bundle-apple-universal-ios-$(get_min_sdk_version)${LTS_POSTFIX}" echo "bundle-apple-universal-ios-$(get_min_sdk_version)"
;; ;;
"${ARCH_VAR_IPHONEOS}") "${ARCH_VAR_IPHONEOS}")
echo "bundle-apple-universal-iphoneos-$(get_min_sdk_version)${LTS_POSTFIX}" echo "bundle-apple-universal-iphoneos-$(get_min_sdk_version)"
;; ;;
"${ARCH_VAR_IPHONESIMULATOR}") "${ARCH_VAR_IPHONESIMULATOR}")
echo "bundle-apple-universal-iphonesimulator-$(get_min_sdk_version)${LTS_POSTFIX}" echo "bundle-apple-universal-iphonesimulator-$(get_min_sdk_version)"
;; ;;
"${ARCH_VAR_MAC_CATALYST}") "${ARCH_VAR_MAC_CATALYST}")
echo "bundle-apple-universal-mac-catalyst-$(get_min_sdk_version)${LTS_POSTFIX}" echo "bundle-apple-universal-mac-catalyst-$(get_min_sdk_version)"
;; ;;
"${ARCH_VAR_TVOS}") "${ARCH_VAR_TVOS}")
echo "bundle-apple-universal-tvos-$(get_min_sdk_version)${LTS_POSTFIX}" echo "bundle-apple-universal-tvos-$(get_min_sdk_version)"
;; ;;
"${ARCH_VAR_APPLETVOS}") "${ARCH_VAR_APPLETVOS}")
echo "bundle-apple-universal-appletvos-$(get_min_sdk_version)${LTS_POSTFIX}" echo "bundle-apple-universal-appletvos-$(get_min_sdk_version)"
;; ;;
"${ARCH_VAR_APPLETVSIMULATOR}") "${ARCH_VAR_APPLETVSIMULATOR}")
echo "bundle-apple-universal-appletvsimulator-$(get_min_sdk_version)${LTS_POSTFIX}" echo "bundle-apple-universal-appletvsimulator-$(get_min_sdk_version)"
;; ;;
"${ARCH_VAR_MACOS}") "${ARCH_VAR_MACOS}")
echo "bundle-apple-universal-macos-$(get_min_sdk_version)${LTS_POSTFIX}" echo "bundle-apple-universal-macos-$(get_min_sdk_version)"
;; ;;
esac esac
} }
@ -718,35 +691,31 @@ get_universal_library_directory() {
# #
get_apple_architecture_variant() { get_apple_architecture_variant() {
local ARCHITECTURE_VARIANT="$1" local ARCHITECTURE_VARIANT="$1"
local LTS_POSTFIX=""
if [[ -n ${FFMPEG_KIT_LTS_BUILD} ]]; then
LTS_POSTFIX="-lts"
fi
case ${ARCHITECTURE_VARIANT} in case ${ARCHITECTURE_VARIANT} in
"${ARCH_VAR_IOS}") "${ARCH_VAR_IOS}")
echo "ios${LTS_POSTFIX}" echo "ios"
;; ;;
"${ARCH_VAR_IPHONEOS}") "${ARCH_VAR_IPHONEOS}")
echo "iphoneos${LTS_POSTFIX}" echo "iphoneos"
;; ;;
"${ARCH_VAR_IPHONESIMULATOR}") "${ARCH_VAR_IPHONESIMULATOR}")
echo "iphonesimulator${LTS_POSTFIX}" echo "iphonesimulator"
;; ;;
"${ARCH_VAR_MAC_CATALYST}") "${ARCH_VAR_MAC_CATALYST}")
echo "mac-catalyst${LTS_POSTFIX}" echo "mac-catalyst"
;; ;;
"${ARCH_VAR_TVOS}") "${ARCH_VAR_TVOS}")
echo "tvos${LTS_POSTFIX}" echo "tvos"
;; ;;
"${ARCH_VAR_APPLETVOS}") "${ARCH_VAR_APPLETVOS}")
echo "appletvos${LTS_POSTFIX}" echo "appletvos"
;; ;;
"${ARCH_VAR_APPLETVSIMULATOR}") "${ARCH_VAR_APPLETVSIMULATOR}")
echo "appletvsimulator${LTS_POSTFIX}" echo "appletvsimulator"
;; ;;
"${ARCH_VAR_MACOS}") "${ARCH_VAR_MACOS}")
echo "macos${LTS_POSTFIX}" echo "macos"
;; ;;
esac esac
} }
@ -901,8 +870,8 @@ build_info_plist() {
local FILE_PATH="$1" local FILE_PATH="$1"
local FRAMEWORK_NAME="$2" local FRAMEWORK_NAME="$2"
local FRAMEWORK_ID="$3" local FRAMEWORK_ID="$3"
local FRAMEWORK_SHORT_VERSION="${4/LTS/1000}" local FRAMEWORK_SHORT_VERSION="$4"
local FRAMEWORK_VERSION="${5/LTS/1000}" local FRAMEWORK_VERSION="$5"
local ARCHITECTURE_VARIANT="$6" local ARCHITECTURE_VARIANT="$6"
case ${FFMPEG_KIT_BUILD_TYPE} in case ${FFMPEG_KIT_BUILD_TYPE} in
@ -1102,6 +1071,10 @@ get_min_sdk_version() {
esac esac
} }
get_min_sdk_version_flag() {
echo "-DFFMPEG_KIT_MIN_SDK=\\\"$(get_min_sdk_version)\\\""
}
get_sdk_path() { get_sdk_path() {
echo "$(xcrun --sdk "$(get_sdk_name)" --show-sdk-path 2>>"${BASEDIR}"/build.log)" echo "$(xcrun --sdk "$(get_sdk_name)" --show-sdk-path 2>>"${BASEDIR}"/build.log)"
} }

@ -27,7 +27,7 @@ libraries are created under the prebuilt folder.\n"
echo -e "Usage: ./$COMMAND [OPTION]...\n" echo -e "Usage: ./$COMMAND [OPTION]...\n"
echo -e "Specify environment variables as VARIABLE=VALUE to override default build options.\n" echo -e "Specify environment variables as VARIABLE=VALUE to override default build options.\n"
display_help_options " -x, --xcframework\t\tbuild xcframework bundles instead of framework bundles" " -l, --lts build lts packages to support sdk 10+ devices\n --jobs=N\t\t\t\t\tnumber of jobs to run [auto]" " --target=ios sdk version\t\t\toverride minimum deployment target [12.1]" " --mac-catalyst-target=ios sdk version\toverride minimum deployment target for mac catalyst [14.0]" display_help_options " -x, --xcframework\t\tbuild xcframework bundles instead of framework bundles" " --jobs=N\t\t\t\t\tnumber of jobs to run [auto]" " --target=ios sdk version\t\t\toverride minimum deployment target [12.1]" " --mac-catalyst-target=ios sdk version\toverride minimum deployment target for mac catalyst [14.0]"
display_help_licensing display_help_licensing
echo -e "Architectures:" echo -e "Architectures:"
@ -75,35 +75,11 @@ enable_main_build() {
fi fi
} }
enable_lts_build() {
export FFMPEG_KIT_LTS_BUILD="1"
if [[ $(compare_versions "$DETECTED_IOS_SDK_VERSION" "10") -le 0 ]]; then
export IOS_MIN_VERSION=$DETECTED_IOS_SDK_VERSION
else
# XCODE 8.0 HAS IOS SDK 10
export IOS_MIN_VERSION=10
fi
if [[ $(compare_versions "$DETECTED_IOS_SDK_VERSION" "13.0") -le 0 ]]; then
export MAC_CATALYST_MIN_VERSION=$DETECTED_IOS_SDK_VERSION
else
# MAC CATALYST IS INTRODUCED IN 13.0
export MAC_CATALYST_MIN_VERSION=13.0
fi
}
get_common_includes() { get_common_includes() {
echo "-I${SDK_PATH}/usr/include" echo "-I${SDK_PATH}/usr/include"
} }
get_common_cflags() { get_common_cflags() {
if [[ -n ${FFMPEG_KIT_LTS_BUILD} ]]; then
local LTS_BUILD_FLAG="-DFFMPEG_KIT_LTS "
fi
local BUILD_DATE="-DFFMPEG_KIT_BUILD_DATE=$(date +%Y%m%d 2>>"${BASEDIR}"/build.log)" local BUILD_DATE="-DFFMPEG_KIT_BUILD_DATE=$(date +%Y%m%d 2>>"${BASEDIR}"/build.log)"
if [ -z $NO_BITCODE ]; then if [ -z $NO_BITCODE ]; then
local BITCODE_FLAGS="-fembed-bitcode" local BITCODE_FLAGS="-fembed-bitcode"
@ -111,13 +87,13 @@ get_common_cflags() {
case ${ARCH} in case ${ARCH} in
i386 | x86-64 | arm64-simulator) i386 | x86-64 | arm64-simulator)
echo "-fstrict-aliasing -DIOS ${LTS_BUILD_FLAG}${BUILD_DATE} -Wno-incompatible-function-pointer-types -isysroot ${SDK_PATH}" echo "-fstrict-aliasing -DIOS $(get_min_sdk_version_flag) ${BUILD_DATE} -Wno-incompatible-function-pointer-types -isysroot ${SDK_PATH}"
;; ;;
*-mac-catalyst) *-mac-catalyst)
echo "-fstrict-aliasing ${BITCODE_FLAGS} -DMACOSX ${LTS_BUILD_FLAG}${BUILD_DATE} -Wno-incompatible-function-pointer-types -isysroot ${SDK_PATH}" echo "-fstrict-aliasing ${BITCODE_FLAGS} -DMACOSX $(get_min_sdk_version_flag) ${BUILD_DATE} -Wno-incompatible-function-pointer-types -isysroot ${SDK_PATH}"
;; ;;
*) *)
echo "-fstrict-aliasing ${BITCODE_FLAGS} -DIOS ${LTS_BUILD_FLAG}${BUILD_DATE} -Wno-incompatible-function-pointer-types -isysroot ${SDK_PATH}" echo "-fstrict-aliasing ${BITCODE_FLAGS} -DIOS $(get_min_sdk_version_flag) ${BUILD_DATE} -Wno-incompatible-function-pointer-types -isysroot ${SDK_PATH}"
;; ;;
esac esac
} }
@ -274,7 +250,7 @@ get_asmflags() {
} }
get_cxxflags() { get_cxxflags() {
local COMMON_CFLAGS="$(get_common_cflags "$1") $(get_common_includes "$1") $(get_arch_specific_cflags) $(get_min_version_cflags "$1")" local COMMON_CFLAGS="$(get_common_cflags "$1") $(get_common_includes "$1") $(get_arch_specific_cflags) $(get_min_version_cflags "$1") $(get_min_sdk_version_flag)"
if [[ -z ${FFMPEG_KIT_DEBUG} ]]; then if [[ -z ${FFMPEG_KIT_DEBUG} ]]; then
local OPTIMIZATION_FLAGS="-Oz" local OPTIMIZATION_FLAGS="-Oz"
else else

@ -25,7 +25,7 @@ libraries are created under the prebuilt folder.\n"
echo -e "Usage: ./$COMMAND [OPTION]...\n" echo -e "Usage: ./$COMMAND [OPTION]...\n"
echo -e "Specify environment variables as VARIABLE=VALUE to override default build options.\n" echo -e "Specify environment variables as VARIABLE=VALUE to override default build options.\n"
display_help_options " -l, --lts\t\t\tbuild lts packages to support older devices\n --jobs=N\t\t\tnumber of jobs to run [auto]" display_help_options " --jobs=N\t\t\tnumber of jobs to run [auto]"
display_help_licensing display_help_licensing
echo -e "Architectures:" echo -e "Architectures:"
@ -83,11 +83,7 @@ libraries are created under the prebuilt folder.\n"
} }
enable_main_build() { enable_main_build() {
unset FFMPEG_KIT_LTS_BUILD local _TMP
}
enable_lts_build() {
export FFMPEG_KIT_LTS_BUILD="1"
} }
install_pkg_config_file() { install_pkg_config_file() {
@ -113,12 +109,7 @@ install_pkg_config_file() {
} }
get_bundle_directory() { get_bundle_directory() {
local LTS_POSTFIX="" echo "bundle-linux"
if [[ -n ${FFMPEG_KIT_LTS_BUILD} ]]; then
LTS_POSTFIX="-lts"
fi
echo "bundle-linux${LTS_POSTFIX}"
} }
create_linux_bundle() { create_linux_bundle() {
@ -223,11 +214,7 @@ get_common_includes() {
} }
get_common_cflags() { get_common_cflags() {
if [[ -n ${FFMPEG_KIT_LTS_BUILD} ]]; then echo "-fstrict-aliasing -fPIC -DLINUX ${LLVM_CONFIG_CFLAGS}"
local LTS_BUILD_FLAG="-DFFMPEG_KIT_LTS "
fi
echo "-fstrict-aliasing -fPIC -DLINUX ${LTS_BUILD_FLAG} ${LLVM_CONFIG_CFLAGS}"
} }
get_arch_specific_cflags() { get_arch_specific_cflags() {
@ -513,38 +500,20 @@ EOF
} }
get_build_directory() { get_build_directory() {
local LTS_POSTFIX="" echo "linux-$(get_target_cpu)"
if [[ -n ${FFMPEG_KIT_LTS_BUILD} ]]; then
LTS_POSTFIX="-lts"
fi
echo "linux-$(get_target_cpu)${LTS_POSTFIX}"
} }
detect_clang_version() { detect_clang_version() {
if [[ -n ${FFMPEG_KIT_LTS_BUILD} ]]; then for clang_version in 6 .. 20; do
for clang_version in 6 .. 10; do if [[ $(command_exists "clang-$clang_version") -eq 0 ]]; then
if [[ $(command_exists "clang-$clang_version") -eq 0 ]]; then echo "$clang_version"
echo "$clang_version" return
return elif [[ $(command_exists "clang-$clang_version.0") -eq 0 ]]; then
elif [[ $(command_exists "clang-$clang_version.0") -eq 0 ]]; then echo "$clang_version.0"
echo "$clang_version.0" return
return fi
fi done
done echo "none"
echo "none"
else
for clang_version in 11 .. 20; do
if [[ $(command_exists "clang-$clang_version") -eq 0 ]]; then
echo "$clang_version"
return
elif [[ $(command_exists "clang-$clang_version.0") -eq 0 ]]; then
echo "$clang_version.0"
return
fi
done
echo "none"
fi
} }
set_toolchain_paths() { set_toolchain_paths() {

@ -19,7 +19,7 @@ When compilation ends, libraries are created under the prebuilt folder.\n"
echo -e "Usage: ./$COMMAND [OPTION]...\n" echo -e "Usage: ./$COMMAND [OPTION]...\n"
echo -e "Specify environment variables as VARIABLE=VALUE to override default build options.\n" echo -e "Specify environment variables as VARIABLE=VALUE to override default build options.\n"
display_help_options " -x, --xcframework\t\tbuild xcframework bundles instead of framework bundles" " -l, --lts build lts packages to support sdk 10.12+ devices\n --jobs=N\t\t\t\tnumber of jobs to run [auto]" " --target=macos sdk version\toverride minimum deployment target [10.15]" display_help_options " -x, --xcframework\t\tbuild xcframework bundles instead of framework bundles" " --jobs=N\t\t\t\tnumber of jobs to run [auto]" " --target=macos sdk version\toverride minimum deployment target [10.15]"
display_help_licensing display_help_licensing
echo -e "Architectures:" echo -e "Architectures:"
@ -57,35 +57,19 @@ enable_main_build() {
fi fi
} }
enable_lts_build() {
export FFMPEG_KIT_LTS_BUILD="1"
if [[ $(compare_versions "$DETECTED_MACOS_SDK_VERSION" "10.12") -le 0 ]]; then
export MACOS_MIN_VERSION=$DETECTED_MACOS_SDK_VERSION
else
# XCODE 8.0 HAS MACOS SDK 10.12
export MACOS_MIN_VERSION=10.12
fi
}
get_common_includes() { get_common_includes() {
echo "-I${SDK_PATH}/usr/include" echo "-I${SDK_PATH}/usr/include"
} }
get_common_cflags() { get_common_cflags() {
if [[ -n ${FFMPEG_KIT_LTS_BUILD} ]]; then
local LTS_BUILD_FLAG="-DFFMPEG_KIT_LTS "
fi
local BUILD_DATE="-DFFMPEG_KIT_BUILD_DATE=$(date +%Y%m%d 2>>"${BASEDIR}"/build.log)" local BUILD_DATE="-DFFMPEG_KIT_BUILD_DATE=$(date +%Y%m%d 2>>"${BASEDIR}"/build.log)"
case ${ARCH} in case ${ARCH} in
arm64) arm64)
echo "-fstrict-aliasing -DMACOSX ${LTS_BUILD_FLAG}${BUILD_DATE} -Wno-incompatible-function-pointer-types -isysroot ${SDK_PATH}" echo "-fstrict-aliasing -DMACOSX $(get_min_sdk_version_flag) ${BUILD_DATE} -Wno-incompatible-function-pointer-types -isysroot ${SDK_PATH}"
;; ;;
*) *)
echo "-fstrict-aliasing -DMACOSX ${LTS_BUILD_FLAG}${BUILD_DATE} -Wno-incompatible-function-pointer-types -isysroot ${SDK_PATH}" echo "-fstrict-aliasing -DMACOSX $(get_min_sdk_version_flag) ${BUILD_DATE} -Wno-incompatible-function-pointer-types -isysroot ${SDK_PATH}"
;; ;;
esac esac
} }
@ -214,7 +198,7 @@ get_asmflags() {
} }
get_cxxflags() { get_cxxflags() {
local COMMON_CFLAGS="$(get_common_cflags "$1") $(get_common_includes "$1") $(get_arch_specific_cflags) $(get_min_version_cflags "$1")" local COMMON_CFLAGS="$(get_common_cflags "$1") $(get_common_includes "$1") $(get_arch_specific_cflags) $(get_min_version_cflags "$1") $(get_min_sdk_version_flag)"
if [[ -z ${FFMPEG_KIT_DEBUG} ]]; then if [[ -z ${FFMPEG_KIT_DEBUG} ]]; then
local OPTIMIZATION_FLAGS="-Oz" local OPTIMIZATION_FLAGS="-Oz"
else else

@ -20,7 +20,7 @@ set explicitly. When compilation ends, libraries are created under the prebuilt
echo -e "Usage: ./$COMMAND [OPTION]...\n" echo -e "Usage: ./$COMMAND [OPTION]...\n"
echo -e "Specify environment variables as VARIABLE=VALUE to override default build options.\n" echo -e "Specify environment variables as VARIABLE=VALUE to override default build options.\n"
display_help_options " -x, --xcframework\t\tbuild xcframework bundles instead of framework bundles" " -l, --lts build lts packages to support sdk 10.0+ devices\n --jobs=N\t\t\tnumber of jobs to run [auto]" " --target=tvos sdk version\toverride minimum deployment target [11.0]" display_help_options " -x, --xcframework\t\tbuild xcframework bundles instead of framework bundles" " --jobs=N\t\t\tnumber of jobs to run [auto]" " --target=tvos sdk version\toverride minimum deployment target [11.0]"
display_help_licensing display_help_licensing
echo -e "Architectures:" echo -e "Architectures:"
@ -33,9 +33,7 @@ set explicitly. When compilation ends, libraries are created under the prebuilt
echo -e " --full\t\t\tenables all non-GPL external libraries" echo -e " --full\t\t\tenables all non-GPL external libraries"
echo -e " --enable-tvos-audiotoolbox\tbuild with built-in Apple AudioToolbox support [no]" echo -e " --enable-tvos-audiotoolbox\tbuild with built-in Apple AudioToolbox support [no]"
echo -e " --enable-tvos-bzip2\t\tbuild with built-in bzip2 support [no]" echo -e " --enable-tvos-bzip2\t\tbuild with built-in bzip2 support [no]"
if [[ -z ${FFMPEG_KIT_LTS_BUILD} ]]; then echo -e " --enable-tvos-videotoolbox\tbuild with built-in Apple VideoToolbox support [no]"
echo -e " --enable-tvos-videotoolbox\tbuild with built-in Apple VideoToolbox support [no]"
fi
echo -e " --enable-tvos-zlib\t\tbuild with built-in zlib [no]" echo -e " --enable-tvos-zlib\t\tbuild with built-in zlib [no]"
echo -e " --enable-tvos-libiconv\tbuild with built-in libiconv [no]" echo -e " --enable-tvos-libiconv\tbuild with built-in libiconv [no]"
@ -57,27 +55,11 @@ enable_main_build() {
fi fi
} }
enable_lts_build() {
export FFMPEG_KIT_LTS_BUILD="1"
if [[ $(compare_versions "$DETECTED_TVOS_SDK_VERSION" "10.0") -le 0 ]]; then
export TVOS_MIN_VERSION=$DETECTED_TVOS_SDK_VERSION
else
# XCODE 8.0 HAS TVOS SDK 10.0
export TVOS_MIN_VERSION=10.0
fi
}
get_common_includes() { get_common_includes() {
echo "-I${SDK_PATH}/usr/include" echo "-I${SDK_PATH}/usr/include"
} }
get_common_cflags() { get_common_cflags() {
if [[ -n ${FFMPEG_KIT_LTS_BUILD} ]]; then
local LTS_BUILD_FLAG="-DFFMPEG_KIT_LTS "
fi
local BUILD_DATE="-DFFMPEG_KIT_BUILD_DATE=$(date +%Y%m%d 2>>"${BASEDIR}"/build.log)" local BUILD_DATE="-DFFMPEG_KIT_BUILD_DATE=$(date +%Y%m%d 2>>"${BASEDIR}"/build.log)"
if [ -z $NO_BITCODE ]; then if [ -z $NO_BITCODE ]; then
local BITCODE_FLAGS="-fembed-bitcode" local BITCODE_FLAGS="-fembed-bitcode"
@ -85,10 +67,10 @@ get_common_cflags() {
case ${ARCH} in case ${ARCH} in
arm64) arm64)
echo "-fstrict-aliasing ${BITCODE_FLAGS} -DTVOS ${LTS_BUILD_FLAG}${BUILD_DATE} -Wno-incompatible-function-pointer-types -isysroot ${SDK_PATH}" echo "-fstrict-aliasing ${BITCODE_FLAGS} -DTVOS $(get_min_sdk_version_flag) ${BUILD_DATE} -Wno-incompatible-function-pointer-types -isysroot ${SDK_PATH}"
;; ;;
x86-64 | arm64-simulator) x86-64 | arm64-simulator)
echo "-fstrict-aliasing -DTVOS ${LTS_BUILD_FLAG}${BUILD_DATE} -Wno-incompatible-function-pointer-types -isysroot ${SDK_PATH}" echo "-fstrict-aliasing -DTVOS $(get_min_sdk_version_flag) ${BUILD_DATE} -Wno-incompatible-function-pointer-types -isysroot ${SDK_PATH}"
;; ;;
esac esac
} }
@ -250,7 +232,7 @@ get_asmflags() {
} }
get_cxxflags() { get_cxxflags() {
local COMMON_CFLAGS="$(get_common_cflags "$1") $(get_common_includes "$1") $(get_arch_specific_cflags) $(get_min_version_cflags "$1")" local COMMON_CFLAGS="$(get_common_cflags "$1") $(get_common_includes "$1") $(get_arch_specific_cflags) $(get_min_version_cflags "$1") $(get_min_sdk_version_flag)"
if [[ -z ${FFMPEG_KIT_DEBUG} ]]; then if [[ -z ${FFMPEG_KIT_DEBUG} ]]; then
local OPTIMIZATION_FLAGS="-Oz" local OPTIMIZATION_FLAGS="-Oz"
else else

@ -1,65 +0,0 @@
apply plugin: 'com.android.library'
android {
if (project.android.hasProperty("namespace")) {
namespace 'com.arthenica.ffmpegkit'
}
compileSdk 34
ndkVersion "25.2.9519653"
defaultConfig {
minSdk 24
targetSdk 34
versionCode 240612
versionName "6.1.2"
project.archivesBaseName = "ffmpeg-kit"
consumerProguardFiles "consumer-rules.pro"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}
sourceSets {
main {
jniLibs.srcDirs = ["../libs"]
}
}
testOptions {
unitTests.returnDefaultValues = true
unitTests.all {
systemProperty 'enable.ffmpeg.kit.test.mode', 'true'
}
}
publishing {
singleVariant('release') {
withJavadocJar()
withSourcesJar()
}
}
}
task javadoc(type: Javadoc) {
title = 'FFmpegKit'
destinationDir = file("${projectDir}/../../docs/android/javadoc")
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
source = android.sourceSets.main.java.srcDirs
configurations.implementation.setCanBeResolved(true)
classpath += configurations.implementation
}
dependencies {
api 'com.arthenica:smart-exception-java:0.2.1'
testImplementation "androidx.test.ext:junit:1.2.1"
testImplementation 'org.json:json:20240303'
}

@ -1,65 +0,0 @@
apply plugin: 'com.android.library'
android {
if (project.android.hasProperty("namespace")) {
namespace 'com.arthenica.ffmpegkit'
}
compileSdk 34
ndkVersion "22.1.7171670"
defaultConfig {
minSdk 16
targetSdk 34
versionCode 160612
versionName "6.1.2.LTS"
project.archivesBaseName = "ffmpeg-kit"
consumerProguardFiles "consumer-rules.pro"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
sourceSets {
main {
jniLibs.srcDirs = ["../libs"]
}
}
testOptions {
unitTests.returnDefaultValues = true
unitTests.all {
systemProperty 'enable.ffmpeg.kit.test.mode', 'true'
}
}
publishing {
singleVariant('release') {
withJavadocJar()
withSourcesJar()
}
}
}
task javadoc(type: Javadoc) {
title = 'FFmpegKit'
destinationDir = file("${projectDir}/../../docs/android/javadoc")
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
source = android.sourceSets.main.java.srcDirs
configurations.implementation.setCanBeResolved(true)
classpath += configurations.implementation
}
dependencies {
api 'com.arthenica:smart-exception-java:0.2.1'
testImplementation "androidx.test.ext:junit:1.2.1"
testImplementation 'org.json:json:20240303'
}

@ -18,7 +18,7 @@ source "${BASEDIR}"/scripts/variable.sh
source "${BASEDIR}"/scripts/function-${FFMPEG_KIT_BUILD_TYPE}.sh source "${BASEDIR}"/scripts/function-${FFMPEG_KIT_BUILD_TYPE}.sh
disabled_libraries=() disabled_libraries=()
# SET DEFAULTS SETTINGS # SET DEFAULT SETTINGS
enable_default_tvos_architectures enable_default_tvos_architectures
# SELECT XCODE VERSION USED FOR BUILDING # SELECT XCODE VERSION USED FOR BUILDING
@ -49,14 +49,6 @@ fi
# MAIN BUILDS ENABLED BY DEFAULT # MAIN BUILDS ENABLED BY DEFAULT
enable_main_build enable_main_build
# PROCESS LTS BUILD OPTION FIRST AND SET BUILD TYPE: MAIN OR LTS
for argument in "$@"; do
if [[ "$argument" == "-l" ]] || [[ "$argument" == "--lts" ]]; then
enable_lts_build
BUILD_TYPE_ID+="LTS "
fi
done
# PROCESS BUILD OPTIONS # PROCESS BUILD OPTIONS
while [ ! $# -eq 0 ]; do while [ ! $# -eq 0 ]; do
case $1 in case $1 in
@ -92,7 +84,6 @@ while [ ! $# -eq 0 ]; do
-s | --speed) -s | --speed)
optimize_for_speed optimize_for_speed
;; ;;
-l | --lts) ;;
-x | --xcframework) -x | --xcframework)
FFMPEG_KIT_XCF_BUILD="1" FFMPEG_KIT_XCF_BUILD="1"
;; ;;

Loading…
Cancel
Save