#!/bin/bash
# Copyright (c) 2000-2020 Synology Inc. All rights reserved.

case ${MakeClean} in
	[Yy][Ee][Ss])
		if [ -f ffbuild/config.mak ]; then
			make distclean
		fi
		;;
esac

case ${CleanOnly} in
	[Yy][Ee][Ss])
		return
		;;
esac

CONFIGURE="./configure"

case "$PLATFORM_FAMILY" in
	SYNOPLAT_F_I686|SYNOPLAT_F_X86_64)
		arch="i686"
		;;
	SYNOPLAT_F_ARMV7)
		arch="armv7"
		;;
	SYNOPLAT_F_ARMV8)
		arch="arm64"
		;;
	*)
		SkipThisProject
		return
		;;
esac

PACKAGE_DIR="/var/packages/CodecPack/target"
COMMON_RPATH="-Wl,-rpath=${PACKAGE_DIR}/pack/lib/ffmpeg41 -Wl,-rpath=${PACKAGE_DIR}/lib/libva"
COMMON_RPATH_LINK="-Wl,-rpath-link=${SysRootPrefix}/pkg/lib"
# add mediaserver and videostation defines due to apply specific patches
CFLAGS="${CFLAGS} ${CUSTOM_CFLAGS} -DSYNO_CODECPACK -DSYNO_MEDIASERVER -DSYNO_VIDEOSTATION"
LDFLAGS="${LDFLAGS} ${COMMON_RPATH} ${COMMON_RPATH_LINK}"

PTHREAD_OPTION="--enable-pthreads"
if checkPlatformFunction SYNO_FEA_FFMPEG_DISABLE_PTHREAD; then
	PTHREAD_OPTION="--disable-pthreads"
fi

COMMON_CONFIG="
	--prefix=/usr/pkg
	--pkg-config=/usr/bin/pkg-config
	--incdir=\${prefix}/include/ffmpeg
	--arch=${arch}
	--target-os=linux
	--cross-prefix=${ToolChainPrefix}
	--enable-cross-compile
	--enable-optimizations
	--enable-pic
	--enable-gpl
	--enable-shared
	--disable-static
	--enable-version3
	--enable-encoders
	${PTHREAD_OPTION}
	--disable-protocols
	--disable-protocol=rtp
	--enable-protocol=file
	--enable-protocol=http
	--enable-protocol=https
	--enable-protocol=pipe
	--disable-muxer=image2 --disable-muxer=image2pipe
	--disable-swscale-alpha
	--disable-ffplay
	--disable-ffprobe
	--disable-doc
	--disable-devices
	--disable-bzlib
	--disable-altivec
	--enable-libopencore-amrnb
	--enable-libopencore-amrwb
	--enable-libmp3lame
	--disable-cuvid
	--disable-nvenc
	--disable-decoder=amrnb
	--disable-encoder=zmbv
	--disable-encoder=dca
	--disable-decoder=dca
	--disable-encoder=ac3
	--disable-encoder=ac3_fixed
	--disable-encoder=eac3
	--disable-decoder=eac3
	--disable-encoder=truehd
	--disable-decoder=truehd
	--disable-decoder=aac
	--disable-decoder=aac_fixed
	--disable-encoder=aac
	--enable-libx264
	--enable-encoder=libx264
	--extra-cflags=-I${SysRootPrefix}/pkg/include
	--extra-ldflags=-L${SysRootPrefix}/pkg/lib
	"

if checkPlatformFunction SYNO_PLAT_NEON_LIBSWSCALE; then
	# for alpine neon libswscale patch
	export EXPORT_BUILD_TARGET="ALPINE"
fi

if [ "i686" = "${arch}" ]; then
	CUSTOM_CONFIG="
		--x86asmexe=yasm
		--enable-x86asm
	"
else
	CUSTOM_CONFIG=""
fi

if checkPlatformFunction SYNO_FEA_VA_API ; then
	CUSTOM_CONFIG="
		${CUSTOM_CONFIG}
		--enable-vaapi
		--enable-encoder=h264_vaapi
	"
fi

env CC=${CC} \
	CFLAGS="${CFLAGS}" \
	LDFLAGS="${LDFLAGS}" \
	PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:${SysRootPrefix}/pkg/lib/pkgconfig" \
	${CONFIGURE} \
		${COMMON_CONFIG} \
		${CUSTOM_CONFIG}

## check HEVC VAAPI HWACCEL is enabled
if checkPlatformFunction SYNO_FEA_VA_API ; then
    if grep -q '^CONFIG_HEVC_VAAPI_HWACCEL=yes$' "ffbuild/config.mak"; then
        echo "HEVC VAAPI HWACCEL check ok"
    else
        echo "Error: NO HEVC VAAPI HWACCEL"
        exit 1
    fi
fi

make ${MAKE_FLAGS}

cp ffmpeg ffmpeg41
# vim:ft=sh
