#!/bin/bash
# Copyright (c) 2017-2021 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

case "$PLATFORM_FAMILY" in
	SYNOPLAT_F_X86_64)
		arch="i686"
		;;
	*)
		echo "This platform($PLATFORM_FAMILY) is not supported yet."
		SkipThisProject
		return
		;;
esac

CONFIGURE="./configure"

PACKAGE_DIR="/var/packages/CodecPack/target"
COMMON_RPATH="-Wl,-rpath=${PACKAGE_DIR}/lib/ffmpeg41-for-synoface \
	-Wl,-rpath=${PACKAGE_DIR}/lib -Wl,-rpath=${PACKAGE_DIR}/lib/libva"
COMMON_RPATH_LINK="-Wl,-rpath-link=${SysRootPrefix}/pkg/lib"

CFLAGS="${CFLAGS} -DSYNO_SURVEILLANCESTATION"
LDFLAGS="${LDFLAGS} ${COMMON_RPATH} ${COMMON_RPATH_LINK}"

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

CUDA_CONFIG="
	--enable-cuda
	--enable-cuvid
	--enable-nvenc
	--enable-ffnvcodec
	"

VAAPI_CONFIG="
	--enable-vaapi
"

#support trancode platform with lame, x264
if [ "i686" = "${arch}" ]; then
	CUSTOM_CONFIG=""
	if [ ${DSM_SHLIB_MAJOR} -lt 7 ]; then
		if [ "SYNOPLAT_F_X86_64" = "$PLATFORM_FAMILY" ]; then
			CUSTOM_CONFIG=${CUDA_CONFIG}
		fi
	fi

	if checkPlatformFunction SYNO_FEA_VA_API ; then
		CUSTOM_CONFIG="
			${CUSTOM_CONFIG}
			${VAAPI_CONFIG}
		"
	fi

	env CC=${CC} \
		CFLAGS="${CFLAGS}" \
		LDFLAGS="${LDFLAGS}" \
		PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:${SysRootPrefix}/pkg/lib/pkgconfig" \
		${CONFIGURE} \
			${COMMON_CONFIG} \
			--enable-yasm \
			--x86asmexe=yasm \
			--enable-x86asm \
			${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
else
	echo "This platform($arch) is not supported yet."
	return
fi

make ${MAKE_FLAGS}

cp ffmpeg ffmpeg41-for-synoface
