Skip to content

Commit

Permalink
Merge pull request #518 from jellyfin/ne10-opus
Browse files Browse the repository at this point in the history
Add NE10 to enable more neon optimization for libopus
  • Loading branch information
gnattu authored Dec 22, 2024
2 parents 819877c + 3a595cd commit a7d64d5
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 1 deletion.
39 changes: 39 additions & 0 deletions builder/scripts.d/45-libNE10.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#!/bin/bash

SCRIPT_REPO="https://github.com/gnattu/Ne10.git"
SCRIPT_COMMIT="545f4f18014cdbf9fb5fb1a9f5d24000200dfa8b"

ffbuild_enabled() {
[[ $TARGET == win* ]] && return -1
[[ $TARGET == *arm64 ]] && return 0
return -1
}

ffbuild_dockerbuild() {
git-mini-clone "$SCRIPT_REPO" "$SCRIPT_COMMIT" Ne10
cd Ne10

mkdir -p build && cd build

local myconf=(
-DGNULINUX_PLATFORM=ON # macOS is also "GNU Linux". This target means all unix-like target
)

if [[ $TARGET == linux* ]]; then
myconf+=(
-DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN"
)
elif [[ $TARGET == mac* ]]; then
:
else
echo "Unknown target"
return -1
fi

export NE10_LINUX_TARGET_ARCH=aarch64
cmake .. "${myconf[@]}"
make -j$(nproc)
# NE10 does not have install method, we have to copy files with shell command
cp modules/libNE10.a "$FFBUILD_PREFIX"/lib/libNE10.a
cp -R ../inc "$FFBUILD_PREFIX"/include/libNE10
}
20 changes: 19 additions & 1 deletion builder/scripts.d/50-libopus.sh
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,27 @@ ffbuild_dockerbuild() {
return -1
fi

./configure "${myconf[@]}"
if [[ $TARGET == linux* || $TARGET == mac* ]] && [[ $TARGET == *arm64 ]]; then
myconf+=(
--with-NE10-libraries="$FFBUILD_PREFIX"/lib
--with-NE10-includes="$FFBUILD_PREFIX"/include/libNE10
)
fi

# Override previously set -O(n) option and the CC's default optimization options.
CFLAGS="$CFLAGS -O3" ./configure "${myconf[@]}"
make -j$(nproc)
make install

if [[ $TARGET == *arm64 ]]; then
if [[ $TARGET == mac* ]]; then
gsed -i 's/-lopus/-lopus -lNE10/' "$FFBUILD_PREFIX"/lib/pkgconfig/opus.pc
gsed -i 's/-I${includedir}\/opus/-I${includedir}\/opus -I${includedir}\/libNE10/' "$FFBUILD_PREFIX"/lib/pkgconfig/opus.pc
else
sed -i 's/-lopus/-lopus -lNE10/' "$FFBUILD_PREFIX"/lib/pkgconfig/opus.pc
sed -i 's/-I${includedir}\/opus/-I${includedir}\/opus -I${includedir}\/libNE10/' "$FFBUILD_PREFIX"/lib/pkgconfig/opus.pc
fi
fi
}

ffbuild_configure() {
Expand Down

0 comments on commit a7d64d5

Please sign in to comment.