From cdd98bc3a07c5a5122e0be1ea7426076363471a7 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Mon, 6 Aug 2012 21:17:19 -0500
Subject: faac 1.28

---
 abs/core/faac/PKGBUILD          |  38 ++++++-----
 abs/core/faac/__changelog       |   2 -
 abs/core/faac/altivec.patch     |  40 ++++++++++++
 abs/core/faac/mp4v2-2.0.0.patch | 138 ++++++++++++++++++++++++++++++++++++++++
 4 files changed, 199 insertions(+), 19 deletions(-)
 delete mode 100644 abs/core/faac/__changelog
 create mode 100644 abs/core/faac/altivec.patch
 create mode 100644 abs/core/faac/mp4v2-2.0.0.patch

diff --git a/abs/core/faac/PKGBUILD b/abs/core/faac/PKGBUILD
index 7b6b3a7..e56599e 100644
--- a/abs/core/faac/PKGBUILD
+++ b/abs/core/faac/PKGBUILD
@@ -1,36 +1,40 @@
-# $Id: PKGBUILD 71335 2010-03-06 18:43:34Z andrea $
-# Maintainer: Hugo Doria <hugo@archlinux.org>
+# $Id: PKGBUILD 159954 2012-05-27 10:22:19Z tomegun $
+# Maintainer: Tom Gundersen <teg@jklm.no>
+# Contributor: Hugo Doria <hugo@archlinux.org>
 # Contributor: Sarah Hay <sarah@archlinux.org>
 # Contributor: dorphell <dorphell@archlinux.org>
 
 pkgname=faac
 pkgver=1.28
-pkgrel=2
-pkgdesc="FAAC is an AAC audio encoder"
+pkgrel=4
+pkgdesc="An AAC audio encoder"
 arch=('i686' 'x86_64')
 url="http://www.audiocoding.com/"
 license=('GPL' 'custom')
-depends=('libmp4v2>=1.9.1' 'glibc')
-makedepends=('automake' 'autoconf' 'libtool')
+depends=('libmp4v2' 'glibc')
 options=('!libtool')
 source=("http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz"
-	'mp4v2-1.9.patch')
-md5sums=('80763728d392c7d789cde25614c878f6'
-         '9d52a17e68fa15ca94e88e1457b94b74')
+        'altivec.patch' 'mp4v2-1.9.patch' 'mp4v2-2.0.0.patch')
 
 build() {
-  cd ${srcdir}/${pkgname}-${pkgver}
-  patch -Np1 -i ${srcdir}/mp4v2-1.9.patch || return 1
+  cd "${srcdir}"/${pkgname}-${pkgver}
+  patch -p1 -i ../mp4v2-1.9.patch
+  patch -p0 -i ../mp4v2-2.0.0.patch
+  patch -p0 -i ../altivec.patch
   find . -type f -print0 | xargs -0 sed -i 's/\r//g'
   ./bootstrap
-  ./configure --prefix=/usr --with-mp4v2
-  make || return 1
+  ./configure --prefix=/usr
+  make
 }
 
 package() {
-  cd ${srcdir}/${pkgname}-${pkgver}
-  make DESTDIR=${pkgdir} install
+  cd "${srcdir}"/${pkgname}-${pkgver}
+  make DESTDIR="${pkgdir}" install
 
-  install -Dm644 ${srcdir}/${pkgname}-${pkgver}/libfaac/kiss_fft/COPYING \
-    ${pkgdir}/usr/share/licenses/faac/LICENSE
+  install -Dm644 "${srcdir}"/${pkgname}-${pkgver}/libfaac/kiss_fft/COPYING \
+    "${pkgdir}"/usr/share/licenses/faac/LICENSE
 }
+md5sums=('80763728d392c7d789cde25614c878f6'
+         'e1ee422ab524fb1f78d178700c3a0e7f'
+         '9d52a17e68fa15ca94e88e1457b94b74'
+         '979ff4f13f36217cb15c92df9fd75f0c')
diff --git a/abs/core/faac/__changelog b/abs/core/faac/__changelog
deleted file mode 100644
index b91559b..0000000
--- a/abs/core/faac/__changelog
+++ /dev/null
@@ -1,2 +0,0 @@
-change depends to libmp4v2>=1.9.1 as an earlier version (1.6) caused faac build to error.
-
diff --git a/abs/core/faac/altivec.patch b/abs/core/faac/altivec.patch
new file mode 100644
index 0000000..ae461ef
--- /dev/null
+++ b/abs/core/faac/altivec.patch
@@ -0,0 +1,40 @@
+http://bugs.gentoo.org/306881
+
+--- configure.in
++++ configure.in
+@@ -33,7 +33,12 @@
+ AC_CHECK_DECLS([MP4Create, MP4MetadataDelete],
+                AC_CHECK_LIB(mp4v2, MP4MetadataDelete, external_mp4v2=yes,
+                             external_mp4v2=no, -lstdc++),
+-               external_mp4v2=no, [#include <mp4v2/mp4v2.h>])
++               external_mp4v2=no, [
++	       #if defined(__ALTIVEC__)
++	       #undef bool
++	       #endif
++	       #include <mp4v2/mp4v2.h>
++	       ])
+ 
+ if test x$external_mp4v2 = xyes; then
+   AC_MSG_NOTICE([*** Building with external mp4v2 ***])
+--- frontend/main.c
++++ frontend/main.c
+@@ -30,6 +30,9 @@
+ #endif
+ 
+ #ifdef HAVE_LIBMP4V2
++#if defined(__ALTIVEC__)
++# undef bool
++#endif
+ # include <mp4v2/mp4v2.h>
+ #endif
+ 
+--- common/mp4v2/mpeg4ip.h
++++ common/mp4v2/mpeg4ip.h
+@@ -123,7 +123,6 @@
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+-char *strcasestr(const char *haystack, const char *needle);
+ #ifdef __cplusplus
+ }
+ #endif
diff --git a/abs/core/faac/mp4v2-2.0.0.patch b/abs/core/faac/mp4v2-2.0.0.patch
new file mode 100644
index 0000000..f4ac8e6
--- /dev/null
+++ b/abs/core/faac/mp4v2-2.0.0.patch
@@ -0,0 +1,138 @@
+http://bugs.gentoo.org/397575
+http://sourceforge.net/tracker/?func=detail&aid=3476707&group_id=704&atid=100704
+
+--- configure.in
++++ configure.in
+@@ -33,8 +33,8 @@ AC_CHECK_LIB(gnugetopt, getopt_long)
+ AM_CONDITIONAL(WITH_MP4V2, false)
+ AM_CONDITIONAL(WITH_EXTERNAL_MP4V2, false)
+ 
+-AC_CHECK_DECLS([MP4Create, MP4MetadataDelete],
+-               AC_CHECK_LIB(mp4v2, MP4MetadataDelete, external_mp4v2=yes,
++AC_CHECK_DECLS([MP4Create],
++               AC_CHECK_LIB(mp4v2, MP4Create, external_mp4v2=yes,
+                             external_mp4v2=no, -lstdc++),
+                external_mp4v2=no, [#include <mp4v2/mp4v2.h>])
+ 
+@@ -42,6 +42,7 @@ if test x$external_mp4v2 = xyes; then
+   AC_MSG_NOTICE([*** Building with external mp4v2 ***])
+   MY_DEFINE(HAVE_EXTERNAL_LIBMP4V2)
+   AM_CONDITIONAL(WITH_EXTERNAL_MP4V2, true)
++  AC_CHECK_DECLS([MP4TagsAlloc], [], [], [#include <mp4v2/mp4v2.h>])
+ else
+   if test x$WITHMP4V2 = xyes; then
+      AC_MSG_NOTICE([*** Building with internal mp4v2 ***])
+--- frontend/main.c
++++ frontend/main.c
+@@ -873,8 +873,12 @@ int main(int argc, char *argv[])
+     if (!faacEncSetConfiguration(hEncoder, myFormat)) {
+         fprintf(stderr, "Unsupported output format!\n");
+ #ifdef HAVE_LIBMP4V2
++#ifdef MP4_CLOSE_DO_NOT_COMPUTE_BITRATE /* r479 fix */
++        if (container == MP4_CONTAINER) MP4Close(MP4hFile, 0);
++#else
+         if (container == MP4_CONTAINER) MP4Close(MP4hFile);
+ #endif
++#endif
+         return 1;
+     }
+ 
+@@ -885,12 +889,10 @@ int main(int argc, char *argv[])
+         unsigned long ASCLength = 0;
+     char *version_string;
+ 
+-#ifdef MP4_CREATE_EXTENSIBLE_FORMAT
+-    /* hack to compile against libmp4v2 >= 1.0RC3
+-     * why is there no version identifier in mp4.h? */
++#ifdef MP4_DETAILS_ERROR /* r453 fix */
+         MP4hFile = MP4Create(aacFileName, MP4_DETAILS_ERROR, 0);
+ #else
+-    MP4hFile = MP4Create(aacFileName, MP4_DETAILS_ERROR, 0, 0);
++        MP4hFile = MP4Create(aacFileName, 0);
+ #endif
+         if (!MP4_IS_VALID_FILE_HANDLE(MP4hFile)) {
+             fprintf(stderr, "Couldn't create output file %s\n", aacFileName);
+@@ -905,12 +907,22 @@ int main(int argc, char *argv[])
+     free(ASC);
+ 
+     /* set metadata */
++#if HAVE_DECL_MP4TAGSALLOC
++    const MP4Tags* tags;
++    tags = MP4TagsAlloc();
++    MP4TagsFetch( tags, MP4hFile );
++#endif
+     version_string = malloc(strlen(faac_id_string) + 6);
+     strcpy(version_string, "FAAC ");
+     strcpy(version_string + 5, faac_id_string);
++#if !HAVE_DECL_MP4TAGSALLOC
+     MP4SetMetadataTool(MP4hFile, version_string);
++#else
++    MP4TagsSetEncodingTool(tags, version_string);
++#endif
+     free(version_string);
+ 
++#if !HAVE_DECL_MP4TAGSALLOC
+     if (artist) MP4SetMetadataArtist(MP4hFile, artist);
+     if (writer) MP4SetMetadataWriter(MP4hFile, writer);
+     if (title) MP4SetMetadataName(MP4hFile, title);
+@@ -923,8 +935,40 @@ int main(int argc, char *argv[])
+     if (comment) MP4SetMetadataComment(MP4hFile, comment);
+         if (artSize) {
+         MP4SetMetadataCoverArt(MP4hFile, art, artSize);
++#else
++    if (artist) MP4TagsSetArtist(tags, artist);
++    if (writer) MP4TagsSetComposer(tags, writer);
++    if (title) MP4TagsSetName(tags, title);
++    if (album) MP4TagsSetAlbum(tags, album);
++    if (trackno > 0) {
++        MP4TagTrack tt;
++        tt.index = trackno;
++        tt.total = ntracks;
++        MP4TagsSetTrack(tags, &tt);
++    }
++    if (discno > 0) {
++        MP4TagDisk td;
++        td.index = discno;
++        td.total = ndiscs;
++        MP4TagsSetDisk(tags, &td);
++    }
++    if (compilation) MP4TagsSetCompilation(tags, compilation);
++    if (year) MP4TagsSetReleaseDate(tags, year);
++    if (genre) MP4TagsSetGenre(tags, genre);
++    if (comment) MP4TagsSetComments(tags, comment);
++    if (artSize) {
++        MP4TagArtwork mp4art;
++        mp4art.data = art;
++        mp4art.size = artSize;
++        mp4art.type = MP4_ART_UNDEFINED; // delegate typing to libmp4v2
++        MP4TagsAddArtwork( tags, &mp4art );
++#endif
+         free(art);
+     }
++#if HAVE_DECL_MP4TAGSALLOC
++    MP4TagsStore( tags, MP4hFile );
++    MP4TagsFree( tags );
++#endif
+     }
+     else
+     {
+@@ -1141,11 +1185,19 @@ int main(int argc, char *argv[])
+         /* clean up */
+         if (container == MP4_CONTAINER)
+         {
++#ifdef MP4_CLOSE_DO_NOT_COMPUTE_BITRATE /* r479 fix */
++            MP4Close(MP4hFile, 0);
++#else
+             MP4Close(MP4hFile);
++#endif
+             if (optimizeFlag == 1)
+             {
+                 fprintf(stderr, "\n\nMP4 format optimization... ");
++#ifdef MP4_DETAILS_ERROR /* r453 fix */
+                 MP4Optimize(aacFileName, NULL, 0);
++#else
++                MP4Optimize(aacFileName, NULL);
++#endif
+                 fprintf(stderr, "Done!");
+             }
+         } else
-- 
cgit v0.12

