diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 0fb7a14..f84c57a 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -16,11 +16,6 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 - - name: Install build tools - run: | - sudo apt-get update - sudo apt-get install ninja-build meson nasm - - name: Validate Gradle Wrapper uses: gradle/wrapper-validation-action@v3 diff --git a/ffmpeg/setup.sh b/ffmpeg/setup.sh index b1d3687..ad7646e 100755 --- a/ffmpeg/setup.sh +++ b/ffmpeg/setup.sh @@ -3,7 +3,6 @@ # Versions VPX_VERSION=1.13.0 MBEDTLS_VERSION=3.4.1 -DAV1D_VERSION=1.4.1 FFMPEG_VERSION=6.0 # Directories @@ -14,12 +13,11 @@ SOURCES_DIR=$BASE_DIR/sources FFMPEG_DIR=$SOURCES_DIR/ffmpeg-$FFMPEG_VERSION VPX_DIR=$SOURCES_DIR/libvpx-$VPX_VERSION MBEDTLS_DIR=$SOURCES_DIR/mbedtls-$MBEDTLS_VERSION -DAV1D_DIR=$SOURCES_DIR/dav1d-$DAV1D_VERSION # Configuration ANDROID_ABIS="x86 x86_64 armeabi-v7a arm64-v8a" ANDROID_PLATFORM=21 -ENABLED_DECODERS="vorbis opus flac alac pcm_mulaw pcm_alaw mp3 amrnb amrwb aac ac3 eac3 dca mlp truehd h264 hevc mpeg2video mpegvideo libvpx_vp8 libvpx_vp9 libdav1d" +ENABLED_DECODERS="vorbis opus flac alac pcm_mulaw pcm_alaw mp3 amrnb amrwb aac ac3 eac3 dca mlp truehd h264 hevc mpeg2video mpegvideo libvpx_vp8 libvpx_vp9" JOBS=$(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || sysctl -n hw.pysicalcpu || echo 4) # Set up host platform variables @@ -38,18 +36,6 @@ esac # Build tools TOOLCHAIN_PREFIX="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/${HOST_PLATFORM}" CMAKE_EXECUTABLE=${ANDROID_SDK_HOME}/cmake/3.22.1/bin/cmake -# Using Build machine's Ninja. It is used for libdav1d building. Needs to be installed -NINJA_EXECUTABLE=$(which ninja) -# Meson is used for libdav1d building. Needs to be installed -MESON_EXECUTABLE=$(which meson) -# Nasm is used for libdav1d building. Needs to be installed -NASM_EXECUTABLE=$(which nasm) - -export FAM_CC=${TOOLCHAIN_PREFIX}/bin/${TARGET}-clang -export FAM_CXX=${FAM_CC}++ -export FAM_LD=${FAM_CC}# Forcing FFmpeg and its dependencies to look for dependencies -# in a specific directory when pkg-config is used -export PKG_CONFIG_LIBDIR=$BUILD_DIR/external/lib/pkgconfig mkdir -p $SOURCES_DIR @@ -75,17 +61,6 @@ function downloadMbedTLS() { popd } -function downloadDav1d() { - pushd $SOURCES_DIR - echo "Downloading Dav1d source code of version $DAV1D_VERSION..." - DAV1D_FILE=dav1d-$DAV1D_VERSION.tar.gz - curl -L "https://code.videolan.org/videolan/dav1d/-/archive/${DAV1D_VERSION}/dav1d-${DAV1D_VERSION}.tar.gz" -o $DAV1D_FILE - [ -e $DAV1D_FILE ] || { echo "$DAV1D_FILE does not exist. Exiting..."; exit 1; } - tar -zxf $DAV1D_FILE - rm $DAV1D_FILE - popd -} - function downloadFfmpeg() { pushd $SOURCES_DIR echo "Downloading FFmpeg source code of version $FFMPEG_VERSION..." @@ -184,82 +159,6 @@ function buildMbedTLS() { popd } -function buildDav1d() { - pushd $DAV1D_DIR - - for ABI in $ANDROID_ABIS; do - CPU_FAMILY= - case $ABI in - armeabi-v7a) - TARGET_TRIPLE_MACHINE_ARCH=arm - TOOLCHAIN=armv7a-linux-androideabi21- - ;; - arm64-v8a) - TARGET_TRIPLE_MACHINE_ARCH=aarch64 - TOOLCHAIN=aarch64-linux-android21- - ;; - x86) - TARGET_TRIPLE_MACHINE_ARCH=i686 - TOOLCHAIN=i686-linux-android21- - CPU_FAMILY=x86 - ;; - x86_64) - TARGET_TRIPLE_MACHINE_ARCH=x86_64 - TOOLCHAIN=x86_64-linux-android21- - ;; - esac - - CROSS_PREFIX_WITH_PATH=${TOOLCHAIN_PREFIX}/bin/llvm- - - [ -z "${CPU_FAMILY}" ] && CPU_FAMILY=${TARGET_TRIPLE_MACHINE_ARCH} - - CROSS_FILE_NAME=crossfile-${ABI}.meson - - echo " - [binaries] - c = '${TOOLCHAIN_PREFIX}/bin/${TOOLCHAIN}clang' - ar = '${CROSS_PREFIX_WITH_PATH}ar' - strip = '${CROSS_PREFIX_WITH_PATH}strip' - nasm = '${NASM_EXECUTABLE}' - pkg-config = '$(which pkg-config)' - - [properties] - needs_exe_wrapper = true - sys_root = '${TOOLCHAIN_PREFIX}/sysroot' - - [host_machine] - system = 'linux' - cpu_family = '${CPU_FAMILY}' - cpu = '${TARGET_TRIPLE_MACHINE_ARCH}' - endian = 'little' - - [built-in options] - prefix = '$BUILD_DIR/external/$ABI'" > "${CROSS_FILE_NAME}" - - BUILD_DIRECTORY=build/${ABI} - - rm -rf ${BUILD_DIRECTORY} - - ${MESON_EXECUTABLE} setup . ${BUILD_DIRECTORY} \ - --cross-file ${CROSS_FILE_NAME} \ - --default-library=static \ - -Denable_asm=true \ - -Denable_tools=false \ - -Denable_tests=false \ - -Denable_examples=false \ - -Dtestdata_tests=false - - pushd ${BUILD_DIRECTORY} - - ${NINJA_EXECUTABLE} -j$JOBS - ${NINJA_EXECUTABLE} install - - popd - - done - popd -} - function buildFfmpeg() { pushd $FFMPEG_DIR EXTRA_BUILD_CONFIGURATION_FLAGS="" @@ -302,10 +201,6 @@ function buildFfmpeg() { ;; esac - # Forcing FFmpeg and its dependencies to look for dependencies - # in a specific directory when pkg-config is used - export PKG_CONFIG_LIBDIR=$BUILD_DIR/external/$ABI/lib/pkgconfig - # Referencing dependencies without pkgconfig DEP_CFLAGS="-I$BUILD_DIR/external/$ABI/include" DEP_LD_FLAGS="-L$BUILD_DIR/external/$ABI/lib" @@ -341,7 +236,6 @@ function buildFfmpeg() { --enable-swresample \ --enable-avformat \ --enable-libvpx \ - --enable-libdav1d \ --enable-protocol=file,http,https,mmsh,mmst,pipe,rtmp,rtmps,rtmpt,rtmpts,rtp,tls \ --enable-version3 \ --enable-mbedtls \ @@ -379,11 +273,6 @@ if [[ ! -d "$OUTPUT_DIR" && ! -d "$BUILD_DIR" ]]; then downloadLibVpx fi - # Download Dav1d source code if it doesn't exist - if [[ ! -d "$DAV1D_DIR" ]]; then - downloadDav1d - fi - # Download Ffmpeg source code if it doesn't exist if [[ ! -d "$FFMPEG_DIR" ]]; then downloadFfmpeg @@ -392,6 +281,5 @@ if [[ ! -d "$OUTPUT_DIR" && ! -d "$BUILD_DIR" ]]; then # Building library buildMbedTLS buildLibVpx - buildDav1d buildFfmpeg fi diff --git a/media3ext/src/main/java/io/github/anilbeesetti/nextlib/media3ext/ffdecoder/FfmpegLibrary.java b/media3ext/src/main/java/io/github/anilbeesetti/nextlib/media3ext/ffdecoder/FfmpegLibrary.java index 5fd472e..ccaf284 100644 --- a/media3ext/src/main/java/io/github/anilbeesetti/nextlib/media3ext/ffdecoder/FfmpegLibrary.java +++ b/media3ext/src/main/java/io/github/anilbeesetti/nextlib/media3ext/ffdecoder/FfmpegLibrary.java @@ -124,7 +124,6 @@ public static boolean supportsFormat(String mimeType) { case MimeTypes.VIDEO_MPEG2 -> "mpeg2video"; case MimeTypes.VIDEO_VP8 -> "libvpx"; case MimeTypes.VIDEO_VP9 -> "libvpx-vp9"; - case MimeTypes.VIDEO_AV1 -> "libdav1d"; default -> null; }; }