SUMMARY="The interactive audio codec Opus"
DESCRIPTION="Opus is a totally open, royalty-free, highly versatile audio \
codec. Opus is unmatched for interactive speech and music transmission over \
the Internet, but is also intended for storage and streaming applications. \
It is standardized by the Internet Engineering Task Force (IETF) as RFC 6716 \
which incorporated technology from Skype's SILK codec and Xiph.Org's CELT \
codec.

Opus can handle a wide range of audio applications, including Voice over IP, \
videoconferencing, in-game chat, and even remote live music performances. It \
can scale from low bitrate narrowband speech to very high quality stereo \
music.

Supported features are:

* Bitrates from 6 kb/s to 510 kb/s
* Sampling rates from 8 kHz (narrowband) to 48 kHz (fullband)
* Frame sizes from 2.5 ms to 60 ms
* Support for both constant bitrate (CBR) and variable bitrate (VBR)
* Audio bandwidth from narrowband to fullband
* Support for speech and music
* Support for mono and stereo
* Support for up to 255 channels (multistream frames)
* Dynamically adjustable bitrate, audio bandwidth, and frame size
* Good loss robustness and packet loss concealment (PLC)
* Floating point and fixed-point implementation"
HOMEPAGE="https://www.opus-codec.org/"
COPYRIGHT="2001-2019 Xiph.org"
LICENSE="BSD (3-clause)"
REVISION="1"
SOURCE_URI="https://archive.mozilla.org/pub/opus/opus-$portVersion.tar.gz"
CHECKSUM_SHA256="65b58e1e25b2a114157014736a3d9dfeaad8d41be1c8179866f144a2fb44ff9d"
PATCHES="opus-$portVersion.patchset"

ARCHITECTURES="all"
SECONDARY_ARCHITECTURES="x86_gcc2 x86"

libVersion="0.7.0"
libVersionCompat="$libVersion compat >= ${libVersion%%.*}"
portVersionCompat="$portVersion compat >= 1"

PROVIDES="
	opus$secondaryArchSuffix = $portVersionCompat
	lib:libopus$secondaryArchSuffix = $libVersionCompat
	"
REQUIRES="
	haiku$secondaryArchSuffix
	"

PROVIDES_devel="
	opus${secondaryArchSuffix}_devel = $portVersionCompat
	devel:libopus$secondaryArchSuffix = $libVersionCompat
	"
REQUIRES_devel="
	opus$secondaryArchSuffix == $portVersion base
	"

BUILD_REQUIRES="
	haiku${secondaryArchSuffix}_devel
	"
BUILD_PREREQUIRES="
	cmd:awk
	cmd:gcc$secondaryArchSuffix
	cmd:ld$secondaryArchSuffix
	cmd:make
	cmd:sed
	"

BUILD()
{
	local configureFlags
	if [ "$effectiveTargetArchitecture" = x86_gcc2 ]; then
		configureFlags=--disable-intrinsics
	fi
	runConfigure ./configure $configureFlags \
		--enable-custom-modes --disable-stack-protector
	make
}

INSTALL()
{
	make install

	# remove libtool library file
	rm -f "$libDir"/libopus.la

	prepareInstalledDevelLibs libopus
	fixPkgconfig

	packageEntries devel $developDir \
		$dataDir
}

TEST()
{
	make check
}
