Skip to content

Commit

Permalink
* Add build for linux-arm64 to presets for FFmpeg (pull #556)
Browse files Browse the repository at this point in the history
  • Loading branch information
mjhas authored and saudet committed Apr 18, 2018
1 parent e8d0557 commit 4741b0b
Show file tree
Hide file tree
Showing 3 changed files with 110 additions and 0 deletions.
3 changes: 3 additions & 0 deletions cppbuild.sh
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ case $ARCH in
arm*)
ARCH=arm
;;
aarch64*)
ARCH=arm64
;;
i386|i486|i586|i686)
ARCH=x86
;;
Expand Down
66 changes: 66 additions & 0 deletions ffmpeg/cppbuild.sh
Original file line number Diff line number Diff line change
Expand Up @@ -586,6 +586,72 @@ case $PLATFORM in
make install
;;

linux-arm64)
tar --totals -xjf ../alsa-lib-$ALSA_VERSION.tar.bz2

export CFLAGS="-march=armv8-a+crypto -mcpu=cortex-a57+crypto"
export CXXFLAGS="$CFLAGS"
export CPPFLAGS="$CFLAGS"
HOST_ARCH="$(uname -m)"
cd $ZLIB
CC="gcc -fPIC" ./configure --prefix=$INSTALL_PATH --static
make -j $MAKEJ V=0
make install
cd ../$LAME
CC="gcc" ./configure --prefix=$INSTALL_PATH --disable-shared --with-pic --host=aarch64-linux
make -j $MAKEJ V=0
make install
cd ../$SPEEX
./configure --prefix=$INSTALL_PATH --disable-shared --with-pic --host=aarch64-linux
make -j $MAKEJ V=0
make install
cd ../$OPUS
./configure --prefix=$INSTALL_PATH --disable-shared --with-pic --host=aarch64-linux
make -j $MAKEJ V=0
make install
cd ../$OPENCORE_AMR
./configure --prefix=$INSTALL_PATH --disable-shared --with-pic --host=aarch64-linux
make -j $MAKEJ V=0
make install
cd ../$VO_AMRWBENC
./configure --prefix=$INSTALL_PATH --disable-shared --with-pic --host=aarch64-linux
make -j $MAKEJ V=0
make install
cd ../$OPENSSL
./Configure linux-aarch64 -fPIC --prefix=$INSTALL_PATH "$CFLAGS" no-shared no-afalgeng no-idea no-mdc2 no-rc5 no-zlib no-ssl3 no-ssl3-method enable-rfc3779 enable-cms
make -j $MAKEJ
make install_sw
cd ../openh264-$OPENH264_VERSION
make -j $MAKEJ DESTDIR=./ PREFIX=.. OS=linux ARCH=arm64 USE_ASM=No install-static CC=gcc CXX=g++
cd ../$X264
LDFLAGS="-Wl,-z,relro" ./configure --prefix=$INSTALL_PATH --enable-pic --enable-static --disable-shared --disable-opencl --disable-cli --enable-asm --host=aarch64-linux --extra-cflags="$CFLAGS -fno-aggressive-loop-optimizations"
make -j $MAKEJ V=0
make install
cd ../x265-$X265
$CMAKE -DENABLE_ASSEMBLY=OFF -DENABLE_CLI=OFF -DENABLE_SHARED=OFF -DENABLE_LIBNUMA=OFF -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_VERSION=1 -DCMAKE_SYSTEM_PROCESSOR=armv8 -DCMAKE_CXX_FLAGS="$CXXFLAGS" -DCMAKE_C_FLAGS="$CFLAGS" -DCMAKE_CXX_FLAGS=-fPIC -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=.. source
make -j $MAKEJ
make install
cd ../libvpx-$VPX_VERSION
patch -Np1 < ../../../disable_vp8_loop_filter_simple_neon.patch
./configure --prefix=$INSTALL_PATH --enable-static --enable-pic --disable-examples --disable-unit-tests
make -j $MAKEJ
make install
cd ../alsa-lib-$ALSA_VERSION/
./configure --host=aarch64-linux --prefix=$INSTALL_PATH --disable-python
make -j $MAKEJ V=0
make install
cd ../freetype-$FREETYPE_VERSION
./configure --prefix=$INSTALL_PATH --with-bzip2=no --with-harfbuzz=no --with-png=no --enable-static --disable-shared --with-pic --host=aarch64-linux
make -j $MAKEJ
make install
cd ../ffmpeg-$FFMPEG_VERSION
patch -Np1 < ../../../ffmpeg-linux.patch
LD_LIBRARY_PATH=../lib/ CC="gcc" CXX="g++" PKG_CONFIG_PATH=../lib/pkgconfig/ ./configure --prefix=.. $DISABLE $ENABLE --extra-cflags="$CFLAGS -fno-aggressive-loop-optimizations" --enable-pthreads --extra-cflags="-I../include/" --extra-ldflags="-Wl,-z,relro -L../lib/" --extra-ldexeflags="-static" --pkg-config-flags="--static" --pkg-config="pkg-config --static" --extra-libs="-lstdc++ -ldl"
make -j $MAKEJ
make install
;;


linux-ppc64le)
MACHINE_TYPE=$( uname -m )
cd $ZLIB
Expand Down
41 changes: 41 additions & 0 deletions ffmpeg/disable_vp8_loop_filter_simple_neon.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
diff --git a/vp8/common/rtcd_defs.pl b/vp8/common/rtcd_defs.pl
index bc5e05799..961b002e9 100644
--- a/vp8/common/rtcd_defs.pl
+++ b/vp8/common/rtcd_defs.pl
@@ -50,10 +50,9 @@ specialize qw/vp8_loop_filter_bh sse2 neon dspr2 msa/;


add_proto qw/void vp8_loop_filter_simple_mbv/, "unsigned char *y, int ystride, const unsigned char *blimit";
-specialize qw/vp8_loop_filter_simple_mbv sse2 neon msa/;
+specialize qw/vp8_loop_filter_simple_mbv sse2 msa/;
$vp8_loop_filter_simple_mbv_c=vp8_loop_filter_simple_vertical_edge_c;
$vp8_loop_filter_simple_mbv_sse2=vp8_loop_filter_simple_vertical_edge_sse2;
-$vp8_loop_filter_simple_mbv_neon=vp8_loop_filter_mbvs_neon;
$vp8_loop_filter_simple_mbv_msa=vp8_loop_filter_simple_vertical_edge_msa;

add_proto qw/void vp8_loop_filter_simple_mbh/, "unsigned char *y, int ystride, const unsigned char *blimit";
@@ -64,10 +63,9 @@ $vp8_loop_filter_simple_mbh_neon=vp8_loop_filter_mbhs_neon;
$vp8_loop_filter_simple_mbh_msa=vp8_loop_filter_simple_horizontal_edge_msa;

add_proto qw/void vp8_loop_filter_simple_bv/, "unsigned char *y, int ystride, const unsigned char *blimit";
-specialize qw/vp8_loop_filter_simple_bv sse2 neon msa/;
+specialize qw/vp8_loop_filter_simple_bv sse2 msa/;
$vp8_loop_filter_simple_bv_c=vp8_loop_filter_bvs_c;
$vp8_loop_filter_simple_bv_sse2=vp8_loop_filter_bvs_sse2;
-$vp8_loop_filter_simple_bv_neon=vp8_loop_filter_bvs_neon;
$vp8_loop_filter_simple_bv_msa=vp8_loop_filter_bvs_msa;

add_proto qw/void vp8_loop_filter_simple_bh/, "unsigned char *y, int ystride, const unsigned char *blimit";
diff --git a/vp8/vp8_common.mk b/vp8/vp8_common.mk
index 137f5bb62..b22bcdb3a 100644
--- a/vp8/vp8_common.mk
+++ b/vp8/vp8_common.mk
@@ -133,7 +133,7 @@ VP8_COMMON_SRCS-$(HAVE_NEON) += common/arm/neon/idct_dequant_full_2x_neon.c
VP8_COMMON_SRCS-$(HAVE_NEON) += common/arm/neon/iwalsh_neon.c
VP8_COMMON_SRCS-$(HAVE_NEON) += common/arm/neon/vp8_loopfilter_neon.c
VP8_COMMON_SRCS-$(HAVE_NEON) += common/arm/neon/loopfiltersimplehorizontaledge_neon.c
-VP8_COMMON_SRCS-$(HAVE_NEON) += common/arm/neon/loopfiltersimpleverticaledge_neon.c
+#VP8_COMMON_SRCS-$(HAVE_NEON) += common/arm/neon/loopfiltersimpleverticaledge_neon.c
VP8_COMMON_SRCS-$(HAVE_NEON) += common/arm/neon/mbloopfilter_neon.c
VP8_COMMON_SRCS-$(HAVE_NEON) += common/arm/neon/shortidct4x4llm_neon.c
VP8_COMMON_SRCS-$(HAVE_NEON) += common/arm/neon/sixtappredict_neon.c

0 comments on commit 4741b0b

Please sign in to comment.