SUMMARY="Audio and video recording, conversion, and streaming library"
DESCRIPTION="
FFmpeg is a complete, cross-platform solution to record, convert and stream \
audio and video. It includes libavcodec - the leading audio/video codec library.
"
HOMEPAGE="http://www.ffmpeg.org"
LICENSE="
	GNU LGPL v2.1
	GNU GPL v2
	"
COPYRIGHT="
	2000-2003 Fabrice Bellard
	2003-2012 the FFmpeg developers
	"
SRC_URI="http://www.ffmpeg.org/releases/ffmpeg-0.10.2.tar.bz2"
CHECKSUM_MD5="de1bd5fc4bbf3ef730a5361ee596fedd"
REVISION="5"
ARCHITECTURES="x86_gcc2 x86 x86_64"
SECONDARY_ARCHITECTURES="x86_gcc2 x86"

if [ $targetArchitecture == x86_gcc2 ]; then
	PATCHES="ffmpeg-0.10.2-gcc2.patch"
fi

PROVIDES="
	ffmpeg$secondaryArchSuffix = $portVersion compat >= 0.10
	lib:libavcodec$secondaryArchSuffix = 53.61.100 compat >= 53
	lib:libavdevice$secondaryArchSuffix = 53.4.100 compat >= 53
	lib:libavfilter$secondaryArchSuffix = 2.61.100 compat >= 2
	lib:libavformat$secondaryArchSuffix = 53.32.100 compat >= 53
	lib:libavutil$secondaryArchSuffix = 51.35.100 compat >= 51
	lib:libswresample$secondaryArchSuffix = 0.6.100 compat >= 0
	lib:libswscale$secondaryArchSuffix = 2.1.100 compat >= 2
	"
if [ -z "$secondaryArchSuffix" ]; then
	PROVIDES="$PROVIDES
		cmd:ffmpeg = $portVersion compat >= 0.10
		cmd:ffprobe = $portVersion compat >= 0.10
		cmd:ffserver = $portVersion compat >= 0.10
		"
fi

REQUIRES="
	haiku$secondaryArchSuffix >= $haikuVersion
	lib:libbz2$secondaryArchSuffix
	lib:libogg$secondaryArchSuffix
	lib:libspeex$secondaryArchSuffix
	lib:libtheoradec$secondaryArchSuffix
	lib:libtheoraenc$secondaryArchSuffix
	lib:libvorbis$secondaryArchSuffix
	lib:libvorbisenc$secondaryArchSuffix
	lib:libvpx$secondaryArchSuffix
	lib:libz$secondaryArchSuffix
	"
BUILD_REQUIRES="
	devel:libbz2$secondaryArchSuffix
	devel:libogg$secondaryArchSuffix
	devel:libspeex$secondaryArchSuffix
	devel:libtheora$secondaryArchSuffix
	devel:libvorbis$secondaryArchSuffix
	devel:libvpx$secondaryArchSuffix
	devel:libz$secondaryArchSuffix
	"
BUILD_PREREQUIRES="
	haiku${secondaryArchSuffix}_devel >= $haikuVersion
	cmd:gcc$secondaryArchSuffix
	cmd:ld$secondaryArchSuffix
	cmd:make
	cmd:perl
	cmd:pkg_config
	cmd:texi2html
	cmd:yasm
	"

GLOBAL_WRITABLE_FILES="
	settings/ffserver.conf
	"

PATCH()
{
	# patch hard-coded config file path
	sed -i "s,/etc/ffserver.conf,$sysconfDir/ffserver.conf," \
		ffserver.c \
		doc/ffserver.texi

	# patch hard-coded paths to perl
	sed -i "s,/usr/bin/perl,$portPackageLinksDir/cmd~perl/bin/perl," \
		Doxyfile \
		doc/texi2pod.pl
}

BUILD()
{
	# not an auto tools configure
	./configure \
		--prefix=$prefix \
		--bindir=$binDir \
		--datadir=$dataDir/$portName \
		--incdir=$includeDir \
		--libdir=$libDir \
		--shlibdir=$libDir \
		--mandir=$manDir \
		--disable-debug \
		--enable-shared \
		--enable-libvorbis \
		--enable-libspeex \
		--enable-libtheora \
		--enable-libvpx
	make $jobArgs
}

INSTALL()
{
	make install

	rm $binDir/ffprobe
		# TODO: Determine and fix what is wrong with ffprobe! The executable
		# seems to be broken. The NEEDED entries in the dynamic section look
		# weird and the runtime loader fails relocating with "Operation not
		# allowed".

	prepareInstalledDevelLibs \
		libavcodec \
		libavdevice \
		libavfilter \
		libavformat \
		libavutil \
		libswresample \
		libswscale
	fixPkgconfig

	# include the documented ffserver.conf
	mkdir -p $docDir
	cp doc/ffserver.conf $docDir

	# devel package
	packageEntries devel \
		$developDir

	# Remove stuff we don't need in the secondary architecture base package.
	if [ -n "$secondaryArchSuffix" ]; then
		rm -rf $prefix/bin
		rm -rf $documentationDir
	fi
}

# ----- devel package -------------------------------------------------------

PROVIDES_devel="
	ffmpeg${secondaryArchSuffix}_devel = $portVersion compat >= 0.10
	devel:libavcodec$secondaryArchSuffix = 53.61.100 compat >= 53
	devel:libavdevice$secondaryArchSuffix = 53.4.100 compat >= 53
	devel:libavfilter$secondaryArchSuffix = 2.61.100 compat >= 2
	devel:libavformat$secondaryArchSuffix = 53.32.100 compat >= 53
	devel:libavutil$secondaryArchSuffix = 51.35.100 compat >= 51
	devel:libswresample$secondaryArchSuffix = 0.6.100 compat >= 0
	devel:libswscale$secondaryArchSuffix = 2.1.100 compat >= 2
	"
REQUIRES_devel="
	ffmpeg$secondaryArchSuffix == $portVersion
	"
