Author: kwizart
Update of /cvs/nonfree/rpms/faac/devel
In directory old02.ovh.rpmfusion.lan:/tmp/cvs-serv22528/devel
Modified Files:
faac-libmp4v2.patch faac.spec
Log Message:
Fix build with faac
faac-libmp4v2.patch:
common/mp4v2/Makefile.am | 2
common/mp4v2/atom_avcC.cpp | 2
common/mp4v2/atom_ohdr.cpp | 2
common/mp4v2/atom_stz2.cpp | 2
common/mp4v2/mp4atom.cpp | 2
common/mp4v2/mp4atom.h | 2
common/mp4v2/mp4file.cpp | 12 ++---
common/mp4v2/mp4file.h | 2
common/mp4v2/mp4property.cpp | 8 +--
common/mp4v2/mp4property.h | 18 +++----
common/mp4v2/mp4track.cpp | 2
common/mp4v2/mp4track.h | 2
common/mp4v2/mpeg4ip.h | 18 -------
common/mp4v2/ocidescriptors.cpp | 2
config.h.in | 45 ++++++++++++++++---
configure.in | 15 ++++--
frontend/Makefile.am | 4 +
frontend/input.c | 60 ++++++++++++--------------
frontend/main.c | 91 ++++++++++++++++++++++++++++++++++++----
include/faac.h | 16 +++----
libfaac/Makefile.am | 1
libfaac/aacquant.c | 4 -
libfaac/backpred.c | 4 -
libfaac/backpred.h | 4 -
libfaac/bitstream.c | 12 ++---
libfaac/bitstream.h | 4 -
libfaac/filtbank.c | 10 ++--
libfaac/filtbank.h | 10 ++--
libfaac/frame.c | 30 +++++++++----
libfaac/frame.h | 46 +-------------------
libfaac/huffman.c | 32 +++++++++++---
libfaac/huffman.h | 4 -
libfaac/ltp.c | 6 +-
libfaac/ltp.h | 6 +-
libfaac/psych.h | 3 -
libfaac/psychkni.c | 10 ----
libfaac/tns.c | 4 -
libfaac/tns.h | 4 -
38 files changed, 293 insertions(+), 208 deletions(-)
Index: faac-libmp4v2.patch
===================================================================
RCS file: /cvs/nonfree/rpms/faac/devel/faac-libmp4v2.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- faac-libmp4v2.patch 12 Mar 2009 00:49:56 -0000 1.1
+++ faac-libmp4v2.patch 6 Dec 2014 13:39:11 -0000 1.2
@@ -1,29 +1,1466 @@
+diff -up faac-1.28/common/mp4v2/atom_avcC.cpp.mp4v2 faac-1.28/common/mp4v2/atom_avcC.cpp
+--- faac-1.28/common/mp4v2/atom_avcC.cpp.mp4v2 2009-01-25 02:14:34.000000000 +0100
++++ faac-1.28/common/mp4v2/atom_avcC.cpp 2014-12-06 14:28:06.549172766 +0100
+@@ -29,7 +29,7 @@
+ class SizeTableProperty : public MP4TableProperty
+ {
+ public:
+- SizeTableProperty(char *name, MP4IntegerProperty *pCountProperty) :
++ SizeTableProperty(const char *name, MP4IntegerProperty *pCountProperty) :
+ MP4TableProperty(name, pCountProperty) {};
+ protected:
+ void ReadEntry(MP4File *pFile, u_int32_t index) {
+diff -up faac-1.28/common/mp4v2/atom_ohdr.cpp.mp4v2 faac-1.28/common/mp4v2/atom_ohdr.cpp
+--- faac-1.28/common/mp4v2/atom_ohdr.cpp.mp4v2 2009-01-25 02:14:34.000000000 +0100
++++ faac-1.28/common/mp4v2/atom_ohdr.cpp 2014-12-06 14:28:06.549172766 +0100
+@@ -21,7 +21,7 @@ public:
+ \param useCountedFormat counted format flag.
+ \param useUnicode unicode flag.
+ */
+- OhdrMP4StringProperty(char* name, bool useCountedFormat = false,
++ OhdrMP4StringProperty(const char* name, bool useCountedFormat = false,
+ bool useUnicode = false): MP4StringProperty(name, useCountedFormat,
+ useUnicode) {
+ }
+diff -up faac-1.28/common/mp4v2/atom_stz2.cpp.mp4v2 faac-1.28/common/mp4v2/atom_stz2.cpp
+--- faac-1.28/common/mp4v2/atom_stz2.cpp.mp4v2 2009-01-25 02:14:34.000000000 +0100
++++ faac-1.28/common/mp4v2/atom_stz2.cpp 2014-12-06 14:28:06.549172766 +0100
+@@ -30,7 +30,7 @@
+ class MP4HalfSizeTableProperty : public MP4TableProperty
+ {
+ public:
+- MP4HalfSizeTableProperty(char *name, MP4IntegerProperty *pCountProperty) :
++ MP4HalfSizeTableProperty(const char *name, MP4IntegerProperty *pCountProperty) :
+ MP4TableProperty(name, pCountProperty) {};
+
+ // The count is half the actual size
+diff -up faac-1.28/common/mp4v2/Makefile.am.mp4v2 faac-1.28/common/mp4v2/Makefile.am
+--- faac-1.28/common/mp4v2/Makefile.am.mp4v2 2009-01-25 02:14:34.000000000 +0100
++++ faac-1.28/common/mp4v2/Makefile.am 2014-12-06 14:28:06.548172765 +0100
+@@ -91,6 +91,4 @@ libmp4v2_a_SOURCES = \
+
+ EXTRA_DIST = API_CHANGES \
+ INTERNALS \
+- libmp4v260.dsp \
+- libmp4v2_st60.dsp \
+ TODO
+diff -up faac-1.28/common/mp4v2/mp4atom.cpp.mp4v2 faac-1.28/common/mp4v2/mp4atom.cpp
+--- faac-1.28/common/mp4v2/mp4atom.cpp.mp4v2 2009-01-25 02:14:34.000000000 +0100
++++ faac-1.28/common/mp4v2/mp4atom.cpp 2014-12-06 14:28:06.549172766 +0100
+@@ -806,7 +806,7 @@ void MP4Atom::AddVersionAndFlags()
+ AddProperty(new MP4Integer24Property("flags"));
+ }
+
+-void MP4Atom::AddReserved(char* name, u_int32_t size)
++void MP4Atom::AddReserved(const char* name, u_int32_t size)
+ {
+ MP4BytesProperty* pReserved = new MP4BytesProperty(name, size);
+ pReserved->SetReadOnly();
+diff -up faac-1.28/common/mp4v2/mp4atom.h.mp4v2 faac-1.28/common/mp4v2/mp4atom.h
+--- faac-1.28/common/mp4v2/mp4atom.h.mp4v2 2009-01-25 02:14:34.000000000 +0100
++++ faac-1.28/common/mp4v2/mp4atom.h 2014-12-06 14:28:06.549172766 +0100
+@@ -204,7 +204,7 @@ protected:
+
+ void AddVersionAndFlags();
+
+- void AddReserved(char* name, u_int32_t size);
++ void AddReserved(const char* name, u_int32_t size);
+
+ void ExpectChildAtom(const char* name,
+ bool mandatory, bool onlyOne = true);
+diff -up faac-1.28/common/mp4v2/mp4file.cpp.mp4v2 faac-1.28/common/mp4v2/mp4file.cpp
+--- faac-1.28/common/mp4v2/mp4file.cpp.mp4v2 2009-01-25 02:14:34.000000000 +0100
++++ faac-1.28/common/mp4v2/mp4file.cpp 2014-12-06 14:28:06.550172767 +0100
+@@ -718,7 +718,7 @@ void MP4File::Rename(const char* oldFile
+ }
+ }
+
+-void MP4File::ProtectWriteOperation(char* where)
++void MP4File::ProtectWriteOperation(const char* where)
+ {
+ if (m_mode == 'r') {
+ throw new MP4Error("operation not permitted in read mode", where);
+@@ -1274,7 +1274,7 @@ MP4TrackId MP4File::AddSceneTrack()
+ }
+
+ // NULL terminated list of brands which require the IODS atom
+-char *brandsWithIods[] = { "mp42",
++const char *brandsWithIods[] = { "mp42",
+ "isom",
+ NULL};
+
+@@ -2211,11 +2211,11 @@ u_int32_t MP4File::GetNumberOfTracks(con
+ for (u_int32_t i = 0; i < m_pTracks.Size(); i++) {
+ if (!strcmp(normType, m_pTracks[i]->GetType())) {
+ if (subType) {
+- if (normType == MP4_AUDIO_TRACK_TYPE) {
++ if (!strcmp(normType,MP4_AUDIO_TRACK_TYPE)) {
+ if (subType != GetTrackEsdsObjectTypeId(m_pTracks[i]->GetId())) {
+ continue;
+ }
+- } else if (normType == MP4_VIDEO_TRACK_TYPE) {
++ } else if (!strcmp(normType,MP4_VIDEO_TRACK_TYPE)) {
+ if (subType != GetTrackEsdsObjectTypeId(m_pTracks[i]->GetId())) {
+ continue;
+ }
+@@ -2278,11 +2278,11 @@ MP4TrackId MP4File::FindTrackId(u_int16_
+ for (u_int32_t i = 0; i < m_pTracks.Size(); i++) {
+ if (!strcmp(normType, m_pTracks[i]->GetType())) {
+ if (subType) {
+- if (normType == MP4_AUDIO_TRACK_TYPE) {
++ if (!strcmp(normType,MP4_AUDIO_TRACK_TYPE)) {
+ if (subType != GetTrackEsdsObjectTypeId(m_pTracks[i]->GetId())) {
+ continue;
+ }
+- } else if (normType == MP4_VIDEO_TRACK_TYPE) {
++ } else if (!strcmp(normType,MP4_VIDEO_TRACK_TYPE)) {
+ if (subType != GetTrackEsdsObjectTypeId(m_pTracks[i]->GetId())) {
+ continue;
+ }
+diff -up faac-1.28/common/mp4v2/mp4file.h.mp4v2 faac-1.28/common/mp4v2/mp4file.h
+--- faac-1.28/common/mp4v2/mp4file.h.mp4v2 2009-01-25 02:14:34.000000000 +0100
++++ faac-1.28/common/mp4v2/mp4file.h 2014-12-06 14:28:06.550172767 +0100
+@@ -700,7 +700,7 @@ protected:
+ const char* TempFileName();
+ void Rename(const char* existingFileName, const char* newFileName);
+
+- void ProtectWriteOperation(char* where);
++ void ProtectWriteOperation(const char* where);
+
+ void FindIntegerProperty(const char* name,
+ MP4Property** ppProperty, u_int32_t* pIndex = NULL);
+diff -up faac-1.28/common/mp4v2/mp4property.cpp.mp4v2
faac-1.28/common/mp4v2/mp4property.cpp
+--- faac-1.28/common/mp4v2/mp4property.cpp.mp4v2 2009-01-25 02:14:34.000000000 +0100
++++ faac-1.28/common/mp4v2/mp4property.cpp 2014-12-06 14:28:06.550172767 +0100
+@@ -313,7 +313,7 @@ void MP4Float32Property::Dump(FILE* pFil
+
+ // MP4StringProperty
+
+-MP4StringProperty::MP4StringProperty(char* name,
++MP4StringProperty::MP4StringProperty(const char* name,
+ bool useCountedFormat, bool useUnicode)
+ : MP4Property(name)
+ {
+@@ -420,7 +420,7 @@ void MP4StringProperty::Dump(FILE* pFile
+
+ // MP4BytesProperty
+
+-MP4BytesProperty::MP4BytesProperty(char* name, u_int32_t valueSize,
++MP4BytesProperty::MP4BytesProperty(const char* name, u_int32_t valueSize,
+ u_int32_t defaultValueSize)
+ : MP4Property(name)
+ {
+@@ -549,7 +549,7 @@ void MP4BytesProperty::Dump(FILE* pFile,
+
+ // MP4TableProperty
+
+-MP4TableProperty::MP4TableProperty(char* name, MP4IntegerProperty* pCountProperty)
++MP4TableProperty::MP4TableProperty(const char* name, MP4IntegerProperty*
pCountProperty)
+ : MP4Property(name)
+ {
+ m_pCountProperty = pCountProperty;
+@@ -725,7 +725,7 @@ void MP4TableProperty::Dump(FILE* pFile,
+
+ // MP4DescriptorProperty
+
+-MP4DescriptorProperty::MP4DescriptorProperty(char* name,
++MP4DescriptorProperty::MP4DescriptorProperty(const char* name,
+ u_int8_t tagsStart, u_int8_t tagsEnd, bool mandatory, bool onlyOne)
+ : MP4Property(name)
+ {
+diff -up faac-1.28/common/mp4v2/mp4property.h.mp4v2 faac-1.28/common/mp4v2/mp4property.h
+--- faac-1.28/common/mp4v2/mp4property.h.mp4v2 2009-01-25 02:14:34.000000000 +0100
++++ faac-1.28/common/mp4v2/mp4property.h 2014-12-06 14:28:06.550172767 +0100
+@@ -100,7 +100,7 @@ MP4ARRAY_DECL(MP4Property, MP4Property*)
+
+ class MP4IntegerProperty : public MP4Property {
+ protected:
+- MP4IntegerProperty(char* name)
++ MP4IntegerProperty(const char* name)
+ : MP4Property(name) { };
+
+ public:
+@@ -118,7 +118,7 @@ public:
+ #define MP4INTEGER_PROPERTY_DECL2(isize, xsize) \
+ class MP4Integer##xsize##Property : public MP4IntegerProperty { \
+ public: \
+- MP4Integer##xsize##Property(char* name) \
++ MP4Integer##xsize##Property(const char* name) \
+ : MP4IntegerProperty(name) { \
+ SetCount(1); \
+ m_values[0] = 0; \
+@@ -188,7 +188,7 @@ MP4INTEGER_PROPERTY_DECL(64);
+
+ class MP4BitfieldProperty : public MP4Integer64Property {
+ public:
+- MP4BitfieldProperty(char* name, u_int8_t numBits)
++ MP4BitfieldProperty(const char* name, u_int8_t numBits)
+ : MP4Integer64Property(name) {
+ ASSERT(numBits != 0);
+ ASSERT(numBits <= 64);
+@@ -213,7 +213,7 @@ protected:
+
+ class MP4Float32Property : public MP4Property {
+ public:
+- MP4Float32Property(char* name)
++ MP4Float32Property(const char* name)
+ : MP4Property(name) {
+ m_useFixed16Format = false;
+ m_useFixed32Format = false;
+@@ -280,7 +280,7 @@ protected:
+
+ class MP4StringProperty : public MP4Property {
+ public:
+- MP4StringProperty(char* name,
++ MP4StringProperty(const char* name,
+ bool useCountedFormat = false, bool useUnicode = false);
+
+ ~MP4StringProperty();
+@@ -355,7 +355,7 @@ protected:
+
+ class MP4BytesProperty : public MP4Property {
+ public:
+- MP4BytesProperty(char* name, u_int32_t valueSize = 0,
++ MP4BytesProperty(const char* name, u_int32_t valueSize = 0,
+ u_int32_t defaultValueSize = 0);
+
+ ~MP4BytesProperty();
+@@ -419,7 +419,7 @@ protected:
+
+ class MP4TableProperty : public MP4Property {
+ public:
+- MP4TableProperty(char* name, MP4IntegerProperty* pCountProperty);
++ MP4TableProperty(const char* name, MP4IntegerProperty* pCountProperty);
+
+ ~MP4TableProperty();
+
+@@ -469,7 +469,7 @@ protected:
+
+ class MP4DescriptorProperty : public MP4Property {
+ public:
+- MP4DescriptorProperty(char* name = NULL,
++ MP4DescriptorProperty(const char* name = NULL,
+ u_int8_t tagsStart = 0, u_int8_t tagsEnd = 0,
+ bool mandatory = false, bool onlyOne = false);
+
+@@ -531,7 +531,7 @@ protected:
+
+ class MP4QosQualifierProperty : public MP4DescriptorProperty {
+ public:
+- MP4QosQualifierProperty(char* name = NULL,
++ MP4QosQualifierProperty(const char* name = NULL,
+ u_int8_t tagsStart = 0, u_int8_t tagsEnd = 0,
+ bool mandatory = false, bool onlyOne = false) :
+ MP4DescriptorProperty(name, tagsStart, tagsEnd, mandatory, onlyOne) { }
+diff -up faac-1.28/common/mp4v2/mp4track.cpp.mp4v2 faac-1.28/common/mp4v2/mp4track.cpp
+--- faac-1.28/common/mp4v2/mp4track.cpp.mp4v2 2009-01-25 02:14:34.000000000 +0100
++++ faac-1.28/common/mp4v2/mp4track.cpp 2014-12-06 14:28:06.551172768 +0100
+@@ -1360,7 +1360,7 @@ void MP4Track::UpdateSyncSamples(MP4Samp
+ }
+ }
+
+-MP4Atom* MP4Track::AddAtom(char* parentName, char* childName)
++MP4Atom* MP4Track::AddAtom(const char* parentName, const char* childName)
+ {
+ MP4Atom* pChildAtom = MP4Atom::CreateAtom(childName);
+
+diff -up faac-1.28/common/mp4v2/mp4track.h.mp4v2 faac-1.28/common/mp4v2/mp4track.h
+--- faac-1.28/common/mp4v2/mp4track.h.mp4v2 2009-01-25 02:14:34.000000000 +0100
++++ faac-1.28/common/mp4v2/mp4track.h 2014-12-06 14:28:06.551172768 +0100
+@@ -168,7 +168,7 @@ protected:
+ void UpdateSyncSamples(MP4SampleId sampleId,
+ bool isSyncSample);
+
+- MP4Atom* AddAtom(char* parentName, char* childName);
++ MP4Atom* AddAtom(const char* parentName, const char* childName);
+
+ void UpdateDurations(MP4Duration duration);
+ MP4Duration ToMovieDuration(MP4Duration trackDuration);
+diff -up faac-1.28/common/mp4v2/mpeg4ip.h.mp4v2 faac-1.28/common/mp4v2/mpeg4ip.h
+--- faac-1.28/common/mp4v2/mpeg4ip.h.mp4v2 2009-01-26 23:42:35.000000000 +0100
++++ faac-1.28/common/mp4v2/mpeg4ip.h 2014-12-06 14:28:06.551172768 +0100
+@@ -120,14 +120,6 @@
+ #endif
+ #include <sys/param.h>
+
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-char *strcasestr(const char *haystack, const char *needle);
+-#ifdef __cplusplus
+-}
+-#endif
+-
+ #define OPEN_RDWR O_RDWR
+ #define OPEN_CREAT O_CREAT
+ #define OPEN_RDONLY O_RDONLY
+@@ -135,7 +127,6 @@ char *strcasestr(const char *haystack, c
+ #define closesocket close
+ #define IOSBINARY ios::bin
+
+-#if SIZEOF_LONG == 8
+ #define MAX_UINT64 -1LU
+ #define D64F "ld"
+ #define U64F "lu"
+@@ -143,15 +134,6 @@ char *strcasestr(const char *haystack, c
+
+ #define TO_D64(a) (a##L)
+ #define TO_U64(a) (a##LU)
+-#else
+-#define MAX_UINT64 -1LLU
+-#define D64F "lld"
+-#define U64F "llu"
+-#define X64F "llx"
+-
+-#define TO_D64(a) (a##LL)
+-#define TO_U64(a) (a##LLU)
+-#endif
+
+ #ifdef HAVE_FPOS_T___POS
+ #define FPOS_TO_VAR(fpos, typed, var) (var) = (typed)((fpos).__pos)
+diff -up faac-1.28/common/mp4v2/ocidescriptors.cpp.mp4v2
faac-1.28/common/mp4v2/ocidescriptors.cpp
+--- faac-1.28/common/mp4v2/ocidescriptors.cpp.mp4v2 2004-07-27 10:28:24.000000000 +0200
++++ faac-1.28/common/mp4v2/ocidescriptors.cpp 2014-12-06 14:28:06.551172768 +0100
+@@ -171,7 +171,7 @@ void MP4ExpandedTextDescriptor::Mutate()
+
+ class MP4CreatorTableProperty : public MP4TableProperty {
+ public:
+- MP4CreatorTableProperty(char* name, MP4Integer8Property* pCountProperty) :
++ MP4CreatorTableProperty(const char* name, MP4Integer8Property* pCountProperty) :
+ MP4TableProperty(name, pCountProperty) {
+ };
+ protected:
+diff -up faac-1.28/config.h.in.mp4v2 faac-1.28/config.h.in
+--- faac-1.28/config.h.in.mp4v2 2009-02-10 09:36:59.000000000 +0100
++++ faac-1.28/config.h.in 2014-12-06 14:28:06.552172769 +0100
+@@ -1,5 +1,11 @@
+ /* config.h.in. Generated from configure.in by autoheader. */
+
++#ifndef CONFIG_H
++#define CONFIG_H
++
++/* Define if building universal (internal helper macro) */
++#undef AC_APPLE_UNIVERSAL_BUILD
++
+ /* Define if you want to encode for DRM */
+ #undef DRM
+
+@@ -7,17 +13,20 @@
+ don't. */
+ #undef HAVE_DECL_MP4CREATE
+
+-/* Define to 1 if you have the declaration of `MP4MetadataDelete', and to 0 if
+- you don't. */
+-#undef HAVE_DECL_MP4METADATADELETE
++/* Define to 1 if you have the declaration of `MP4TagsAlloc', and to 0 if you
++ don't. */
++#undef HAVE_DECL_MP4TAGSALLOC
+
+ /* Define to 1 if you have the <dlfcn.h> header file. */
+ #undef HAVE_DLFCN_H
+
++/* define if needed */
++#undef HAVE_EXTERNAL_LIBMP4V2
++
+ /* Define to 1 if you have the <float.h> header file. */
+ #undef HAVE_FLOAT_H
+
+-/* Define to 1 if `__pos' is member of `fpos_t'. */
++/* Define to 1 if `__pos' is a member of `fpos_t'. */
+ #undef HAVE_FPOS_T___POS
+
+ /* Define to 1 if you have the <getopt.h> header file. */
+@@ -92,6 +101,10 @@
+ /* Define to 1 if the system has the type `u_int32_t'. */
+ #undef HAVE_U_INT32_T
+
++/* Define to the sub-directory in which libtool stores uninstalled libraries.
++ */
++#undef LT_OBJDIR
++
+ /* Name of package */
+ #undef PACKAGE
+
+@@ -107,6 +120,9 @@
+ /* Define to the one symbol short name of this package. */
+ #undef PACKAGE_TARNAME
+
++/* Define to the home page for this package. */
++#undef PACKAGE_URL
++
+ /* Define to the version of this package. */
+ #undef PACKAGE_VERSION
+
+@@ -119,9 +135,22 @@
+ /* Version number of package */
+ #undef VERSION
+
+-/* Define to 1 if your processor stores words with the most significant byte
+- first (like Motorola and SPARC, unlike Intel and VAX). */
+-#undef WORDS_BIGENDIAN
++/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
++ significant byte first (like Motorola and SPARC, unlike Intel). */
++#if defined AC_APPLE_UNIVERSAL_BUILD
++# if defined __BIG_ENDIAN__
++# define WORDS_BIGENDIAN 1
++# endif
++#else
++# ifndef WORDS_BIGENDIAN
++# undef WORDS_BIGENDIAN
++# endif
++#endif
++
++/* Enable large inode numbers on Mac OS X 10.5. */
++#ifndef _DARWIN_USE_64_BIT_INODE
++# define _DARWIN_USE_64_BIT_INODE 1
++#endif
+
+ /* Number of bits in a file offset, on hosts where this is settable. */
+ #undef _FILE_OFFSET_BITS
+@@ -131,3 +160,5 @@
+
+ /* Define to `long int' if <sys/types.h> does not define. */
+ #undef off_t
++
++#endif /* CONFIG_H */
diff -up faac-1.28/configure.in.mp4v2 faac-1.28/configure.in
--- faac-1.28/configure.in.mp4v2 2009-02-05 01:55:38.000000000 +0100
-+++ faac-1.28/configure.in 2009-03-12 01:42:20.000000000 +0100
-@@ -36,6 +36,8 @@ AC_CHECK_DECLS([MP4Create, MP4MetadataDe
++++ faac-1.28/configure.in 2014-12-06 14:28:06.576172795 +0100
+@@ -4,13 +4,16 @@ AC_CONFIG_AUX_DIR(.)
+ AM_INIT_AUTOMAKE
+
+ AM_CONFIG_HEADER(config.h)
++AH_TOP([#ifndef CONFIG_H
++#define CONFIG_H])
++AH_BOTTOM([#endif /* CONFIG_H */])
+
+ AC_ARG_WITH( mp4v2, [ --with-mp4v2 compile libmp4v2],WITHMP4V2=$withval,
WITHMP4V2=yes)
+ AC_ARG_ENABLE( drm, [ --enable-drm Digital Radio Mondiale support],
enable_drm=$enableval, enable_drm=no)
+
+ AC_DEFUN([MY_DEFINE], [ AC_DEFINE($1, 1, [define if needed]) ])
+
+-CFLAGS=${CFLAGS:-"-O2 -Wall"}
++CFLAGS=${CFLAGS:-"-O2 -Wall -fexceptions"}
+
+ AC_PROG_CC
+ AC_PROG_CXX
+@@ -28,14 +31,18 @@ AC_CHECK_DECL(strcasecmp, MY_DEFINE(HAVE
+ 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 <mp4.h>])
++ external_mp4v2=no, [#include <mp4v2/mp4v2.h>])
if test x$external_mp4v2 = xyes; then
AC_MSG_NOTICE([*** Building with external mp4v2 ***])
-+ MY_DEFINE(HAVE_LIBMP4V2)
-+ LIBS="-lmp4v2 $LIBS"
++ 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 ***])
-diff -up faac-1.28/configure.mp4v2 faac-1.28/configure
---- faac-1.28/configure.mp4v2 2009-02-10 09:36:58.000000000 +0100
-+++ faac-1.28/configure 2009-03-12 01:42:20.000000000 +0100
-@@ -19938,6 +19938,13 @@ fi
- if test x$external_mp4v2 = xyes; then
- { echo "$as_me:$LINENO: *** Building with external mp4v2 ***" >&5
- echo "$as_me: *** Building with external mp4v2 ***" >&6;}
+diff -up faac-1.28/frontend/input.c.mp4v2 faac-1.28/frontend/input.c
+--- faac-1.28/frontend/input.c.mp4v2 2009-01-25 19:50:32.000000000 +0100
++++ faac-1.28/frontend/input.c 2014-12-06 14:28:06.577172797 +0100
+@@ -16,7 +16,7 @@
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+- * $Id$
++ * $Id$
+ */
+
+ #ifdef HAVE_CONFIG_H
+@@ -116,17 +116,35 @@ static void unsuperr(const char *name)
+ fprintf(stderr, "%s: file format not supported\n", name);
+ }
+
++
++static int seekchunk(FILE *f, riffsub_t *riffsub, char *name)
++{
++ while (1)
++ {
++ if (fread(riffsub, 1, sizeof(*riffsub), f) != sizeof(*riffsub))
++ return 0;
+
-+cat >>confdefs.h <<\_ACEOF
-+#define HAVE_LIBMP4V2 1
-+_ACEOF
++ riffsub->len = UINT32(riffsub->len);
++ if (riffsub->len & 1)
++ riffsub->len++;
+
-+LIBS="-lmp4v2 $LIBS"
++ if (!memcmp(&(riffsub->label), name, 4))
++ break;
+
++ fseek(f, riffsub->len, SEEK_CUR);
++ }
++
++ return 1;
++}
++
+ pcmfile_t *wav_open_read(const char *name, int rawinput)
+ {
+- int i;
+- int skip;
+ FILE *wave_f;
+ riff_t riff;
+ riffsub_t riffsub;
+ struct WAVEFORMATEXTENSIBLE wave;
+ char *riffl = "RIFF";
+ char *wavel = "WAVE";
+- char *bextl = "BEXT";
+ char *fmtl = "fmt ";
+ char *datal = "data";
+ int fmtsize;
+@@ -156,19 +174,8 @@ pcmfile_t *wav_open_read(const char *nam
+ if (memcmp(&(riff.chunk_type), wavel, 4))
+ return NULL;
+
+- // handle broadcast extensions. added by pro-tools,otherwise it must be fmt chunk.
+- if (fread(&riffsub, 1, sizeof(riffsub), wave_f) != sizeof(riffsub))
+- return NULL;
+- riffsub.len = UINT32(riffsub.len);
+-
+- if (!memcmp(&(riffsub.label), bextl, 4))
+- {
+- fseek(wave_f, riffsub.len, SEEK_CUR);
+-
+- if (fread(&riffsub, 1, sizeof(riffsub), wave_f) != sizeof(riffsub))
+- return NULL;
+- riffsub.len = UINT32(riffsub.len);
+- }
++ if (!seekchunk(wave_f, &riffsub, fmtl))
++ return NULL;
+
+ if (memcmp(&(riffsub.label), fmtl, 4))
+ return NULL;
+@@ -178,22 +185,11 @@ pcmfile_t *wav_open_read(const char *nam
+ if (fread(&wave, 1, fmtsize, wave_f) != fmtsize)
+ return NULL;
+
+- for (skip = riffsub.len - fmtsize; skip > 0; skip--)
+- fgetc(wave_f);
++ fseek(wave_f, riffsub.len - fmtsize, SEEK_CUR);
++
++ if (!seekchunk(wave_f, &riffsub, datal))
++ return NULL;
+
+- for (i = 0;; i++)
+- {
+- if (fread(&riffsub, 1, sizeof(riffsub), wave_f) != sizeof(riffsub))
+- return NULL;
+- riffsub.len = UINT32(riffsub.len);
+- if (!memcmp(&(riffsub.label), datal, 4))
+- break;
+- if (i > 10)
+- return NULL;
+-
+- for (skip = riffsub.len; skip > 0; skip--)
+- fgetc(wave_f);
+- }
+ if (UINT16(wave.Format.wFormatTag) != WAVE_FORMAT_PCM &&
UINT16(wave.Format.wFormatTag) != WAVE_FORMAT_FLOAT)
+ {
+ if (UINT16(wave.Format.wFormatTag) == WAVE_FORMAT_EXTENSIBLE)
+diff -up faac-1.28/frontend/main.c.mp4v2 faac-1.28/frontend/main.c
+--- faac-1.28/frontend/main.c.mp4v2 2009-01-24 02:10:20.000000000 +0100
++++ faac-1.28/frontend/main.c 2014-12-06 14:28:06.578172797 +0100
+@@ -18,7 +18,7 @@
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+- * $Id$
++ * $Id$
+ */
+
+ #ifdef _MSC_VER
+@@ -29,7 +29,10 @@
+ #include "config.h"
+ #endif
+
+-#ifdef HAVE_LIBMP4V2
++#ifdef HAVE_EXTERNAL_LIBMP4V2
++# include <mp4v2/mp4v2.h>
++# define HAVE_LIBMP4V2
++#elif defined(HAVE_LIBMP4V2)
+ # include <mp4.h>
+ #endif
+
+@@ -715,7 +718,7 @@ int main(int argc, char *argv[])
+ break;
+ #endif
+ case 'L':
+- fprintf(stderr, faac_copyright_string);
++ fprintf(stderr, "%s", faac_copyright_string);
+ dieMessage = license;
+ break;
+ case 'X':
+@@ -870,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;
+ }
+
+@@ -882,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);
+@@ -902,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);
+@@ -920,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
+ {
+@@ -1025,9 +1072,16 @@ int main(int argc, char *argv[])
+ {
+ int bytesWritten;
+
+- samplesRead = wav_read_float32(infile, pcmbuf, samplesInput, chanmap);
++ if (total_samples < infile->samples)
++ samplesRead = wav_read_float32(infile, pcmbuf, samplesInput,
++ chanmap);
++ else
++ samplesRead = 0;
+
+ #ifdef HAVE_LIBMP4V2
++ if (total_samples + (samplesRead / infile->channels) >
infile->samples)
++ samplesRead = (infile->samples - total_samples) *
infile->channels;
++
+ total_samples += samplesRead / infile->channels;
+ #endif
+
+@@ -1138,11 +1192,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
+@@ -1167,6 +1229,19 @@ int main(int argc, char *argv[])
+
+ /*
+ $Log$
+ Revision 1.2 2014/12/06 13:39:11 kwizart
+ Fix build with faac
+
++Revision 1.86 2012/02/25 17:34:01 knik
++Fix format string security error.
++
++Revision 1.85 2012/02/23 13:26:45 knik
++Support for libmp4v2 r479; Port faac to the iTMF Generic and Tags API.
++Authors: Jaakko Perttilä, Sebastien NOEL, Fabian Greffrath
++
++Revision 1.84 2010/09/27 10:32:17 knik
++Patch by Arthur Yarwood: read correct number of samples from data chunk
++
++Revision 1.83 2009/07/27 18:12:38 menno
++FAAC now able to use external updated libmp4v2
++
+ Revision 1.82 2009/01/24 01:10:20 menno
+ Made JPEG detection less restrictive
+
+diff -up faac-1.28/frontend/Makefile.am.mp4v2 faac-1.28/frontend/Makefile.am
+--- faac-1.28/frontend/Makefile.am.mp4v2 2008-12-16 01:56:00.000000000 +0100
++++ faac-1.28/frontend/Makefile.am 2014-12-06 14:28:06.576172795 +0100
+@@ -8,5 +8,9 @@ INCLUDES = -I$(top_srcdir)/include -I$(t
+ LDADD = $(top_builddir)/libfaac/libfaac.la $(top_srcdir)/common/mp4v2/libmp4v2.a -lm
-lstdc++
else
- if test x$WITHMP4V2 = xyes; then
- { echo "$as_me:$LINENO: *** Building with internal mp4v2 ***" >&5
+ INCLUDES = -I$(top_srcdir)/include
++if WITH_EXTERNAL_MP4V2
++LDADD = $(top_builddir)/libfaac/libfaac.la -lm -lmp4v2
++else
+ LDADD = $(top_builddir)/libfaac/libfaac.la -lm
+ endif
++endif
+diff -up faac-1.28/include/faac.h.mp4v2 faac-1.28/include/faac.h
+--- faac-1.28/include/faac.h.mp4v2 2009-01-25 19:50:32.000000000 +0100
++++ faac-1.28/include/faac.h 2014-12-06 14:28:06.578172797 +0100
+@@ -16,7 +16,7 @@
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+- * $Id$
++ * $Id$
+ */
+
+ #ifndef _FAAC_H_
+@@ -26,14 +26,16 @@
+ extern "C" {
+ #endif /* __cplusplus */
+
+-#if defined(_WIN32) && !defined(__MINGW32__)
+-# ifndef FAACAPI
+-# define FAACAPI __stdcall
++
++#if !defined(FAACAPI) && defined(__GNUC__) && (__GNUC__ >= 4)
++# if defined(_WIN32)
++# define FAACAPI __stdcall __declspec(dllexport)
++# else
++# define FAACAPI __attribute__((visibility("default")))
+ # endif
+-#else
+-# ifndef FAACAPI
++#endif
++#ifndef FAACAPI
+ # define FAACAPI
+-# endif
+ #endif
+
+ #pragma pack(push, 1)
+diff -up faac-1.28/libfaac/aacquant.c.mp4v2 faac-1.28/libfaac/aacquant.c
+--- faac-1.28/libfaac/aacquant.c.mp4v2 2008-03-24 00:00:25.000000000 +0100
++++ faac-1.28/libfaac/aacquant.c 2014-12-06 14:28:06.580172800 +0100
+@@ -17,13 +17,13 @@
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+- * $Id$
++ * $Id$
+ */
+
+ #include <math.h>
+ #include <stdlib.h>
+
+-#include "frame.h"
++#include <faac.h>
+ #include "aacquant.h"
+ #include "coder.h"
+ #include "huffman.h"
+diff -up faac-1.28/libfaac/backpred.c.mp4v2 faac-1.28/libfaac/backpred.c
+--- faac-1.28/libfaac/backpred.c.mp4v2 2001-09-04 20:39:35.000000000 +0200
++++ faac-1.28/libfaac/backpred.c 2014-12-06 14:28:06.580172800 +0100
+@@ -24,7 +24,7 @@ copyright notice must be included in all
+ Copyright (c) 1997.
+ **********************************************************************/
+ /*
+- * $Id$
++ * $Id$
+ */
+
+ #include <math.h>
+@@ -34,7 +34,7 @@ Copyright (c) 1997.
+ #include "backpred.h"
+
+
+-void PredInit(faacEncHandle hEncoder)
++void PredInit(faacEncStruct* hEncoder)
+ {
+ unsigned int channel;
+
+diff -up faac-1.28/libfaac/backpred.h.mp4v2 faac-1.28/libfaac/backpred.h
+--- faac-1.28/libfaac/backpred.h.mp4v2 2001-06-08 20:01:09.000000000 +0200
++++ faac-1.28/libfaac/backpred.h 2014-12-06 14:28:06.580172800 +0100
+@@ -16,7 +16,7 @@
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+- * $Id$
++ * $Id$
+ */
+
+ #ifndef _AAC_BACK_H_INCLUDED
+@@ -43,7 +43,7 @@ void PredCalcPrediction(double *act_spec
+ ChannelInfo *channelInfo,
+ int chanNum);
+
+-void PredInit(faacEncHandle hEncoder);
++void PredInit(faacEncStruct* hEncoder);
+
+ void CopyPredInfo(CoderInfo *right, CoderInfo *left);
+
+diff -up faac-1.28/libfaac/bitstream.c.mp4v2 faac-1.28/libfaac/bitstream.c
+--- faac-1.28/libfaac/bitstream.c.mp4v2 2007-06-05 20:59:47.000000000 +0200
++++ faac-1.28/libfaac/bitstream.c 2014-12-06 14:28:06.581172801 +0100
+@@ -24,7 +24,7 @@ copyright notice must be included in all
+ Copyright (c) 1997.
+ **********************************************************************/
+ /*
+- * $Id$
++ * $Id$
+ */
+
+ #include <stdio.h>
+@@ -37,12 +37,12 @@ Copyright (c) 1997.
+ #include "ltp.h"
+ #include "util.h"
+
+-static int CountBitstream(faacEncHandle hEncoder,
++static int CountBitstream(faacEncStruct* hEncoder,
+ CoderInfo *coderInfo,
+ ChannelInfo *channelInfo,
+ BitStream *bitStream,
+ int numChannels);
+-static int WriteADTSHeader(faacEncHandle hEncoder,
++static int WriteADTSHeader(faacEncStruct* hEncoder,
+ BitStream *bitStream,
+ int writeFlag);
+ static int WriteCPE(CoderInfo *coderInfoL,
+@@ -152,7 +152,7 @@ static int WriteFAACStr(BitStream *bitSt
+ }
+
+
+-int WriteBitstream(faacEncHandle hEncoder,
++int WriteBitstream(faacEncStruct* hEncoder,
+ CoderInfo *coderInfo,
+ ChannelInfo *channelInfo,
+ BitStream *bitStream,
+@@ -243,7 +243,7 @@ int WriteBitstream(faacEncHandle hEncode
+ return bits;
+ }
+
+-static int CountBitstream(faacEncHandle hEncoder,
++static int CountBitstream(faacEncStruct* hEncoder,
+ CoderInfo *coderInfo,
+ ChannelInfo *channelInfo,
+ BitStream *bitStream,
+@@ -329,7 +329,7 @@ static int CountBitstream(faacEncHandle
+ return bits;
+ }
+
+-static int WriteADTSHeader(faacEncHandle hEncoder,
++static int WriteADTSHeader(faacEncStruct* hEncoder,
+ BitStream *bitStream,
+ int writeFlag)
+ {
+diff -up faac-1.28/libfaac/bitstream.h.mp4v2 faac-1.28/libfaac/bitstream.h
+--- faac-1.28/libfaac/bitstream.h.mp4v2 2004-07-04 14:10:52.000000000 +0200
++++ faac-1.28/libfaac/bitstream.h 2014-12-06 14:28:06.581172801 +0100
+@@ -32,7 +32,7 @@ copyright notice must be included in all
+ Copyright (c) 1996.
+ **********************************************************************/
+ /*
+- * $Id$
++ * $Id$
+ */
+
+ #ifndef BITSTREAM_H
+@@ -149,7 +149,7 @@ typedef struct
+
+
+
+-int WriteBitstream(faacEncHandle hEncoder,
++int WriteBitstream(faacEncStruct* hEncoder,
+ CoderInfo *coderInfo,
+ ChannelInfo *channelInfo,
+ BitStream *bitStream,
+diff -up faac-1.28/libfaac/filtbank.c.mp4v2 faac-1.28/libfaac/filtbank.c
+--- faac-1.28/libfaac/filtbank.c.mp4v2 2005-02-02 08:51:12.000000000 +0100
++++ faac-1.28/libfaac/filtbank.c 2014-12-06 14:28:06.581172801 +0100
+@@ -22,7 +22,7 @@ Copyright(c)1996.
+ * *
+ ****************************************************************************/
+ /*
+- * $Id$
++ * $Id$
+ */
+
+ /*
+@@ -51,7 +51,7 @@ static void IMDCT ( FFT_Tables *fft_
+
+
+
+-void FilterBankInit(faacEncHandle hEncoder)
++void FilterBankInit(faacEncStruct* hEncoder)
+ {
+ unsigned int i, channel;
+
+@@ -75,7 +75,7 @@ void FilterBankInit(faacEncHandle hEncod
+ CalculateKBDWindow(hEncoder->kbd_window_short, 6, BLOCK_LEN_SHORT*2);
+ }
+
+-void FilterBankEnd(faacEncHandle hEncoder)
++void FilterBankEnd(faacEncStruct* hEncoder)
+ {
+ unsigned int channel;
+
+@@ -90,7 +90,7 @@ void FilterBankEnd(faacEncHandle hEncode
+ if (hEncoder->kbd_window_short) FreeMemory(hEncoder->kbd_window_short);
+ }
+
+-void FilterBank(faacEncHandle hEncoder,
++void FilterBank(faacEncStruct* hEncoder,
+ CoderInfo *coderInfo,
+ double *p_in_data,
+ double *p_out_mdct,
+@@ -202,7 +202,7 @@ void FilterBank(faacEncHandle hEncoder,
+ if (transf_buf) FreeMemory(transf_buf);
+ }
+
+-void IFilterBank(faacEncHandle hEncoder,
++void IFilterBank(faacEncStruct* hEncoder,
+ CoderInfo *coderInfo,
+ double *p_in_data,
+ double *p_out_data,
+diff -up faac-1.28/libfaac/filtbank.h.mp4v2 faac-1.28/libfaac/filtbank.h
+--- faac-1.28/libfaac/filtbank.h.mp4v2 2005-02-02 08:51:49.000000000 +0100
++++ faac-1.28/libfaac/filtbank.h 2014-12-06 14:28:06.581172801 +0100
+@@ -16,7 +16,7 @@
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+- * $Id$
++ * $Id$
+ */
+
+ #ifndef FILTBANK_H
+@@ -41,18 +41,18 @@ extern "C" {
+ #define SINE_WINDOW 0
+ #define KBD_WINDOW 1
+
+-void FilterBankInit ( faacEncHandle hEncoder );
++void FilterBankInit ( faacEncStruct* hEncoder );
+
+-void FilterBankEnd ( faacEncHandle hEncoder );
++void FilterBankEnd ( faacEncStruct* hEncoder );
+
+-void FilterBank( faacEncHandle hEncoder,
++void FilterBank( faacEncStruct* hEncoder,
+ CoderInfo *coderInfo,
+ double *p_in_data,
+ double *p_out_mdct,
+ double *p_overlap,
+ int overlap_select );
+
+-void IFilterBank( faacEncHandle hEncoder,
++void IFilterBank( faacEncStruct* hEncoder,
+ CoderInfo *coderInfo,
+ double *p_in_data,
+ double *p_out_mdct,
+diff -up faac-1.28/libfaac/frame.c.mp4v2 faac-1.28/libfaac/frame.c
+--- faac-1.28/libfaac/frame.c.mp4v2 2004-11-17 15:26:06.000000000 +0100
++++ faac-1.28/libfaac/frame.c 2014-12-06 14:28:06.581172801 +0100
+@@ -16,7 +16,7 @@
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+- * $Id$
++ * $Id$
+ */
+
+ /*
+@@ -87,8 +87,9 @@ int FAACAPI faacEncGetVersion( char **fa
+ }
+
+
+-int FAACAPI faacEncGetDecoderSpecificInfo(faacEncHandle hEncoder,unsigned char**
ppBuffer,unsigned long* pSizeOfDecoderSpecificInfo)
++int FAACAPI faacEncGetDecoderSpecificInfo(faacEncHandle hpEncoder,unsigned char**
ppBuffer,unsigned long* pSizeOfDecoderSpecificInfo)
+ {
++ faacEncStruct* hEncoder = (faacEncStruct*)hpEncoder;
+ BitStream* pBitStream = NULL;
+
+ if((hEncoder == NULL) || (ppBuffer == NULL) || (pSizeOfDecoderSpecificInfo == NULL))
{
+@@ -118,16 +119,18 @@ int FAACAPI faacEncGetDecoderSpecificInf
+ }
+
+
+-faacEncConfigurationPtr FAACAPI faacEncGetCurrentConfiguration(faacEncHandle hEncoder)
++faacEncConfigurationPtr FAACAPI faacEncGetCurrentConfiguration(faacEncHandle hpEncoder)
+ {
++ faacEncStruct* hEncoder = (faacEncStruct*)hpEncoder;
+ faacEncConfigurationPtr config = &(hEncoder->config);
+
+ return config;
+ }
+
+-int FAACAPI faacEncSetConfiguration(faacEncHandle hEncoder,
++int FAACAPI faacEncSetConfiguration(faacEncHandle hpEncoder,
+ faacEncConfigurationPtr config)
+ {
++ faacEncStruct* hEncoder = (faacEncStruct*)hpEncoder;
+ int i;
+
+ hEncoder->config.allowMidside = config->allowMidside;
+@@ -196,6 +199,7 @@ int FAACAPI faacEncSetConfiguration(faac
+ {47000, 10000},
+ {64000, 16000},
+ {76000, 20000},
++ {128000, 20000},
+ #endif
+ {0, 0}
+ };
+@@ -277,7 +281,7 @@ int FAACAPI faacEncSetConfiguration(faac
+ config->psymodelidx = (sizeof(psymodellist) / sizeof(psymodellist[0])) - 2;
+
+ hEncoder->config.psymodelidx = config->psymodelidx;
+- hEncoder->psymodel = psymodellist[hEncoder->config.psymodelidx].model;
++ hEncoder->psymodel = (psymodel_t
*)psymodellist[hEncoder->config.psymodelidx].ptr;
+ hEncoder->psymodel->PsyInit(&hEncoder->gpsyInfo, hEncoder->psyInfo,
hEncoder->numChannels,
+ hEncoder->sampleRate, hEncoder->srInfo->cb_width_long,
+ hEncoder->srInfo->num_cb_long, hEncoder->srInfo->cb_width_short,
+@@ -297,7 +301,7 @@ faacEncHandle FAACAPI faacEncOpen(unsign
+ unsigned long *maxOutputBytes)
+ {
+ unsigned int channel;
+- faacEncHandle hEncoder;
++ faacEncStruct* hEncoder;
+
+ *inputSamples = FRAME_LEN*numChannels;
+ *maxOutputBytes = (6144/8)*numChannels;
+@@ -334,7 +338,7 @@ faacEncHandle FAACAPI faacEncOpen(unsign
+ hEncoder->config.psymodellist = (psymodellist_t *)psymodellist;
+ hEncoder->config.psymodelidx = 0;
+ hEncoder->psymodel =
+- hEncoder->config.psymodellist[hEncoder->config.psymodelidx].model;
++ (psymodel_t
*)hEncoder->config.psymodellist[hEncoder->config.psymodelidx].ptr;
+ hEncoder->config.shortctl = SHORTCTL_NORMAL;
+
+ /* default channel map is straight-through */
+@@ -401,8 +405,9 @@ faacEncHandle FAACAPI faacEncOpen(unsign
+ return hEncoder;
+ }
+
+-int FAACAPI faacEncClose(faacEncHandle hEncoder)
++int FAACAPI faacEncClose(faacEncHandle hpEncoder)
+ {
++ faacEncStruct* hEncoder = (faacEncStruct*)hpEncoder;
+ unsigned int channel;
+
+ /* Deinitialize coder functions */
+@@ -441,13 +446,14 @@ int FAACAPI faacEncClose(faacEncHandle h
+ return 0;
+ }
+
+-int FAACAPI faacEncEncode(faacEncHandle hEncoder,
++int FAACAPI faacEncEncode(faacEncHandle hpEncoder,
+ int32_t *inputBuffer,
+ unsigned int samplesInput,
+ unsigned char *outputBuffer,
+ unsigned int bufferSize
+ )
+ {
++ faacEncStruct* hEncoder = (faacEncStruct*)hpEncoder;
+ unsigned int channel, i;
+ int sb, frameBytes;
+ unsigned int offset;
+@@ -1116,6 +1122,12 @@ static SR_INFO srInfo[12+1] =
+
+ /*
+ $Log$
+ Revision 1.2 2014/12/06 13:39:11 kwizart
+ Fix build with faac
+
++Revision 1.69 2012/03/01 18:34:17 knik
++Build faac against the public API exposed in <faac.h> instead of the private API
defined in "libfaac/frame.h".
++
++Revision 1.68 2009/06/05 16:09:38 menno
++Allow higher bitrates
++
+ Revision 1.67 2004/11/17 14:26:06 menno
+ Infinite loop fix
+ dunno if this is good, encoder might be tuned to use energies from before MS encoding.
But since the MS encoded samples are used in quantisation this might actually be better.
Please test.
+diff -up faac-1.28/libfaac/frame.h.mp4v2 faac-1.28/libfaac/frame.h
+--- faac-1.28/libfaac/frame.h.mp4v2 2009-01-25 19:50:32.000000000 +0100
++++ faac-1.28/libfaac/frame.h 2014-12-06 14:28:06.582172802 +0100
+@@ -16,7 +16,7 @@
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+- * $Id$
++ * $Id$
+ */
+
+ #ifndef FRAME_H
+@@ -36,6 +36,8 @@
+ # include <stdint.h>
+ #endif
+
++#include <faac.h>
++
+ #ifndef HAVE_INT32_T
+ typedef signed int int32_t;
+ #endif
+@@ -50,23 +52,8 @@ extern "C" {
+ #include "aacquant.h"
+ #include "fft.h"
+
+-#if defined(_WIN32) && !defined(__MINGW32__)
+- #ifndef FAACAPI
+- #define FAACAPI __stdcall
+- #endif
+-#else
+- #ifndef FAACAPI
+- #define FAACAPI
+- #endif
+-#endif
+-
+ #pragma pack(push, 1)
+
+-typedef struct {
+- psymodel_t *model;
+- char *name;
+-} psymodellist_t;
+-
+ #include <faaccfg.h>
+
+ typedef struct {
+@@ -124,32 +111,7 @@ typedef struct {
+
+ /* output bits difference in average bitrate mode */
+ int bitDiff;
+-} faacEncStruct, *faacEncHandle;
+-
+-int FAACAPI faacEncGetVersion(char **faac_id_string,
+- char **faac_copyright_string);
+-
+-int FAACAPI faacEncGetDecoderSpecificInfo(faacEncHandle hEncoder,
+- unsigned char** ppBuffer,
+- unsigned long* pSizeOfDecoderSpecificInfo);
+-
+-faacEncConfigurationPtr FAACAPI faacEncGetCurrentConfiguration(faacEncHandle hEncoder);
+-int FAACAPI faacEncSetConfiguration (faacEncHandle hEncoder, faacEncConfigurationPtr
config);
+-
+-faacEncHandle FAACAPI faacEncOpen(unsigned long sampleRate,
+- unsigned int numChannels,
+- unsigned long *inputSamples,
+- unsigned long *maxOutputBytes);
+-
+-int FAACAPI faacEncEncode(faacEncHandle hEncoder,
+- int32_t *inputBuffer,
+- unsigned int samplesInput,
+- unsigned char *outputBuffer,
+- unsigned int bufferSize
+- );
+-
+-int FAACAPI faacEncClose(faacEncHandle hEncoder);
+-
++} faacEncStruct;
+
+ #pragma pack(pop)
+
+diff -up faac-1.28/libfaac/huffman.c.mp4v2 faac-1.28/libfaac/huffman.c
+--- faac-1.28/libfaac/huffman.c.mp4v2 2005-02-02 08:53:20.000000000 +0100
++++ faac-1.28/libfaac/huffman.c 2014-12-06 14:28:06.582172802 +0100
+@@ -23,7 +23,7 @@ must be included in all copies or deriva
+
+ ***********/
+ /*
+- * $Id$
++ * $Id$
+ */
+
+ #include <math.h>
+@@ -1197,8 +1197,19 @@ int WriteScalefactors(CoderInfo *coderIn
+ /* only send scalefactors if using non-zero codebooks */
+ diff = scale_factors[index] - previous_is_factor;
+ if ((diff < 60)&&(diff >= -60))
+- length = huff12[diff+60][FIRSTINTAB];
+- else length = 0;
++ {
++ length = huff12[diff+60][FIRSTINTAB];
++ }
++ else if ( diff >= 60 ) // frank 30.Oct.2007 added this because faad2
decoder and QuickTime choke when nothing is written and the codebook says a number is
expected.
++ {
++ diff = 59;
++ length = huff12[119][FIRSTINTAB]; //max
++ }
++ else
++ {
++ diff = -60;
++ length = huff12[0][FIRSTINTAB]; // min
++ }
+ bit_count+=length;
+ previous_is_factor = scale_factors[index];
+ if (writeFlag == 1 ) {
+@@ -1209,8 +1220,19 @@ int WriteScalefactors(CoderInfo *coderIn
+ /* only send scalefactors if using non-zero codebooks */
+ diff = scale_factors[index] - previous_scale_factor;
+ if ((diff < 60)&&(diff >= -60))
+- length = huff12[diff+60][FIRSTINTAB];
+- else length = 0;
++ {
++ length = huff12[diff+60][FIRSTINTAB];
++ }
++ else if ( diff >= 60 ) // frank 30.Oct.2007 added this because faad2
decoder and QuickTime choke when nothing is written and the codebook says a number is
expected.
++ {
++ diff = 59;
++ length = huff12[119][FIRSTINTAB]; //max
++ }
++ else
++ {
++ diff = -60;
++ length = huff12[0][FIRSTINTAB]; //min
++ }
+ bit_count+=length;
+ previous_scale_factor = scale_factors[index];
+ if (writeFlag == 1 ) {
+diff -up faac-1.28/libfaac/huffman.h.mp4v2 faac-1.28/libfaac/huffman.h
+--- faac-1.28/libfaac/huffman.h.mp4v2 2004-07-12 10:46:43.000000000 +0200
++++ faac-1.28/libfaac/huffman.h 2014-12-06 14:28:06.582172802 +0100
+@@ -22,7 +22,7 @@ must be included in all copies or deriva
+
+ ***********/
+ /*
+- * $Id$
++ * $Id$
+ */
+
+ #ifndef HUFFMAN_H
+@@ -47,7 +47,7 @@ extern "C" {
+
+ #define ABS(A) ((A) < 0 ? (-A) : (A))
+
+-#include "frame.h"
++#include <faac.h>
+
+ void HuffmanInit(CoderInfo *coderInfo, unsigned int numChannels);
+ void HuffmanEnd(CoderInfo *coderInfo, unsigned int numChannels);
+diff -up faac-1.28/libfaac/ltp.c.mp4v2 faac-1.28/libfaac/ltp.c
+--- faac-1.28/libfaac/ltp.c.mp4v2 2003-06-26 21:20:31.000000000 +0200
++++ faac-1.28/libfaac/ltp.c 2014-12-06 14:28:06.582172802 +0100
+@@ -24,7 +24,7 @@ Copyright (c)1997.
+
+ ***************************************************************************/
+ /*
+- * $Id$
++ * $Id$
+ */
+
+ #include <stdio.h>
+@@ -275,7 +275,7 @@ static double ltp_enc_tf(faacEncHandle h
+ return (bit_gain);
+ }
+
+-void LtpInit(faacEncHandle hEncoder)
++void LtpInit(faacEncStruct* hEncoder)
+ {
+ int i;
+ unsigned int channel;
+@@ -306,7 +306,7 @@ void LtpInit(faacEncHandle hEncoder)
+ }
+ }
+
+-void LtpEnd(faacEncHandle hEncoder)
++void LtpEnd(faacEncStruct* hEncoder)
+ {
+ unsigned int channel;
+
+diff -up faac-1.28/libfaac/ltp.h.mp4v2 faac-1.28/libfaac/ltp.h
+--- faac-1.28/libfaac/ltp.h.mp4v2 2001-06-08 20:01:09.000000000 +0200
++++ faac-1.28/libfaac/ltp.h 2014-12-06 14:28:06.582172802 +0100
+@@ -16,7 +16,7 @@
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+- * $Id$
++ * $Id$
+ */
+
+ #ifndef LTP_H
+@@ -26,8 +26,8 @@
+
+
+
+-void LtpInit(faacEncHandle hEncoder);
+-void LtpEnd(faacEncHandle hEncoder);
++void LtpInit(faacEncStruct* hEncoder);
++void LtpEnd(faacEncStruct* hEncoder);
+ int LtpEncode(faacEncHandle hEncoder,
+ CoderInfo *coderInfo,
+ LtpInfo *ltpInfo,
+diff -up faac-1.28/libfaac/Makefile.am.mp4v2 faac-1.28/libfaac/Makefile.am
+--- faac-1.28/libfaac/Makefile.am.mp4v2 2007-08-20 20:03:23.000000000 +0200
++++ faac-1.28/libfaac/Makefile.am 2014-12-06 14:28:06.579172799 +0100
+@@ -7,6 +7,7 @@ endif
+ libfaac_la_SOURCES = $(main_SOURCES) $(drm_SOURCES)
+ libfaac_la_INCLUDES = aacquant.h channels.h filtbank.h hufftab.h psych.h backpred.h
coder.h frame.h midside.h tns.h bitstream.h fft.h huffman.h ltp.h util.h
+ libfaac_la_LIBADD = -lm
++libfaac_la_CFLAGS = -fvisibility=hidden
+
+ INCLUDES = -I$(top_srcdir)/include
+
+diff -up faac-1.28/libfaac/psych.h.mp4v2 faac-1.28/libfaac/psych.h
+--- faac-1.28/libfaac/psych.h.mp4v2 2005-04-24 21:16:14.000000000 +0200
++++ faac-1.28/libfaac/psych.h 2014-12-06 14:28:06.582172802 +0100
+@@ -16,7 +16,7 @@
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+- * $Id$
++ * $Id$
+ */
+
+ #ifndef PSYCH_H
+@@ -40,7 +40,6 @@ typedef struct {
+
+ /* Previous input samples */
+ double *prevSamples;
+- double *prevSamplesS;
+
+ int block_type;
+
+diff -up faac-1.28/libfaac/psychkni.c.mp4v2 faac-1.28/libfaac/psychkni.c
+--- faac-1.28/libfaac/psychkni.c.mp4v2 2005-04-24 21:16:14.000000000 +0200
++++ faac-1.28/libfaac/psychkni.c 2014-12-06 14:28:06.583172803 +0100
+@@ -16,7 +16,7 @@
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+- * $Id$
++ * $Id$
+ */
+ #include <stdio.h>
+ #include <stdlib.h>
+@@ -26,7 +26,7 @@
+ #include "coder.h"
+ #include "fft.h"
+ #include "util.h"
+-#include "frame.h"
++#include <faac.h>
+
+ typedef float psyfloat;
+
+@@ -231,10 +231,6 @@ static void PsyInit(GlobalPsyInfo * gpsy
+
+ psyInfo[channel].sizeS = size;
+
+- psyInfo[channel].prevSamplesS =
+- (double *) AllocMemory(size * sizeof(double));
+- memset(psyInfo[channel].prevSamplesS, 0, size * sizeof(double));
+-
+ for (j = 0; j < 8; j++)
+ {
+ psydata->fftEnrgPrevS[j] =
+@@ -273,8 +269,6 @@ static void PsyEnd(GlobalPsyInfo * gpsyI
+ {
+ psydata_t *psydata = psyInfo[channel].data;
+
+- if (psyInfo[channel].prevSamplesS)
+- FreeMemory(psyInfo[channel].prevSamplesS);
+ for (j = 0; j < 8; j++)
+ {
+ if (psydata->fftEnrgPrevS[j])
+diff -up faac-1.28/libfaac/tns.c.mp4v2 faac-1.28/libfaac/tns.c
+--- faac-1.28/libfaac/tns.c.mp4v2 2003-11-24 19:08:28.000000000 +0100
++++ faac-1.28/libfaac/tns.c 2014-12-06 14:28:06.583172803 +0100
+@@ -24,7 +24,7 @@ copyright notice must be included in all
+ Copyright (c) 1997.
+ **********************************************************************/
+ /*
+- * $Id$
++ * $Id$
+ */
+
+ #include <math.h>
+@@ -84,7 +84,7 @@ static void TnsInvFilter(int length,doub
+ /*****************************************************/
+ /* InitTns: */
+ /*****************************************************/
+-void TnsInit(faacEncHandle hEncoder)
++void TnsInit(faacEncStruct* hEncoder)
+ {
+ unsigned int channel;
+ int fsIndex = hEncoder->sampleRateIdx;
+diff -up faac-1.28/libfaac/tns.h.mp4v2 faac-1.28/libfaac/tns.h
+--- faac-1.28/libfaac/tns.h.mp4v2 2003-11-24 19:08:28.000000000 +0100
++++ faac-1.28/libfaac/tns.h 2014-12-06 14:28:06.583172803 +0100
+@@ -24,7 +24,7 @@ copyright notice must be included in all
+ Copyright (c) 1997.
+ **********************************************************************/
+ /*
+- * $Id$
++ * $Id$
+ */
+
+ #ifndef TNS_H
+@@ -35,7 +35,7 @@ extern "C" {
+ #endif /* __cplusplus */
+
+
+-void TnsInit(faacEncHandle hEncoder);
++void TnsInit(faacEncStruct* hEncoder);
+ void TnsEncode(TnsInfo* tnsInfo, int numberOfBands,int maxSfb,enum WINDOW_TYPE
blockType,
+ int* sfbOffsetTable,double* spec);
+ void TnsEncodeFilterOnly(TnsInfo* tnsInfo, int numberOfBands, int maxSfb,
Index: faac.spec
===================================================================
RCS file: /cvs/nonfree/rpms/faac/devel/faac.spec,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- faac.spec 31 Aug 2014 20:39:15 -0000 1.12
+++ faac.spec 6 Dec 2014 13:39:11 -0000 1.13
@@ -1,17 +1,15 @@
Name: faac
Version: 1.28
-Release: 6%{?dist}
+Release: 7%{?dist}
Summary: Encoder and encoding library for MPEG2/4 AAC
Group: Applications/Multimedia
License: LGPLv2+
URL:
http://www.audiocoding.com/
Source0:
http://downloads.sourceforge.net/sourceforge/%{name}/%{name}-%{version}.t...
-Patch0: %{name}-libmp4v2.patch
+Patch0: %{name}-libmp4v2_2.0.patch
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
-
-BuildRequires: libmp4v2-devel
+BuildRequires: libmp4v2-devel >= 2.0.0
%description
@@ -32,9 +30,8 @@
This package contains development files and documentation for libfaac.
%prep
-%setup -q
+%setup -q -n %{name}-%{version}
%patch0 -p1 -b .mp4v2
-touch -r configure.in.mp4v2 configure.in
#fix permissions
find . -type f \( -name \*.h -or -name \*.c \) -exec chmod 644 {} \;
chmod 644 AUTHORS COPYING ChangeLog NEWS README TODO docs/*
@@ -42,6 +39,10 @@
#fix encoding
/usr/bin/iconv -f iso8859-1 -t utf-8 AUTHORS > AUTHORS.conv && touch -r
AUTHORS AUTHORS.conv && /bin/mv -f AUTHORS.conv AUTHORS
+# Autotools
+autoreconf -vif
+
+
%build
%configure --disable-static
# remove rpath from libtool
@@ -51,13 +52,9 @@
%install
-rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT INSTALL="install -p"
-%clean
-rm -rf $RPM_BUILD_ROOT
-
%post -p /sbin/ldconfig
@@ -65,19 +62,21 @@
%files
-%defattr(-,root,root,-)
%doc AUTHORS COPYING ChangeLog NEWS README TODO docs/*
%{_bindir}/*
%{_libdir}/*.so.*
%{_mandir}/man1/%{name}*
%files devel
-%defattr(-,root,root,-)
%exclude %{_libdir}/*.la
%{_libdir}/*.so
%{_includedir}/*.h
%changelog
+* Sat Dec 6 2014 Nicolas Chauvet <kwizart(a)gmail.com> - 1.28-7
+- Fix build with libmp4v2-devel - rfbz#3188
+- Clean-up spec file
+
* Sun Aug 31 2014 SĂ©rgio Basto <sergio(a)serjux.com> - 1.28-6
- Rebuilt for
https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild