summaryrefslogtreecommitdiffstats
path: root/extra/faad2
diff options
context:
space:
mode:
authorThierry N <thierryn1 at hispeed dot ch>2009-08-10 21:22:23 +0200
committerThierry N <thierryn1 at hispeed dot ch>2009-08-10 21:22:23 +0200
commit5c3261d6e3781d0a3946a5ccdb752122167c09d2 (patch)
tree168f271fdb99de12fa5702f3b5b4baa27fff9688 /extra/faad2
parentbf75aa7776bdbad21abdf3fff6cf6b1ce220c265 (diff)
downloadnutyx-extra-5c3261d6e3781d0a3946a5ccdb752122167c09d2.tar.gz
nutyx-extra-5c3261d6e3781d0a3946a5ccdb752122167c09d2.tar.bz2
nutyx-extra-5c3261d6e3781d0a3946a5ccdb752122167c09d2.tar.xz
nutyx-extra-5c3261d6e3781d0a3946a5ccdb752122167c09d2.zip
Ajout de faad2#2.6.1-1
Diffstat (limited to 'extra/faad2')
-rw-r--r--extra/faad2/.footprint15
-rw-r--r--extra/faad2/.md5sum5
-rwxr-xr-xextra/faad2/Pkgfile33
-rw-r--r--extra/faad2/faad2-2.0-gcc4.patch387
-rw-r--r--extra/faad2/faad2-2.6.1-abi_has_changed.patch15
-rw-r--r--extra/faad2/faad2-2.6.1-broken-pipe.patch23
-rw-r--r--extra/faad2/faad2-2.6.1-implicitdeclar.patch12
-rw-r--r--extra/faad2/faad2-2.6.1-libtool22.patch14
8 files changed, 504 insertions, 0 deletions
diff --git a/extra/faad2/.footprint b/extra/faad2/.footprint
new file mode 100644
index 000000000..243de49cd
--- /dev/null
+++ b/extra/faad2/.footprint
@@ -0,0 +1,15 @@
+drwxr-xr-x root/root usr/
+drwxr-xr-x root/root usr/bin/
+-rwxr-xr-x root/root usr/bin/faad
+drwxr-xr-x root/root usr/include/
+-rw-r--r-- root/root usr/include/faad.h
+-rw-r--r-- root/root usr/include/mp4ff.h
+-rw-r--r-- root/root usr/include/mp4ff_int_types.h
+-rw-r--r-- root/root usr/include/neaacdec.h
+drwxr-xr-x root/root usr/lib/
+-rw-r--r-- root/root usr/lib/libfaad.a
+-rwxr-xr-x root/root usr/lib/libfaad.la
+lrwxrwxrwx root/root usr/lib/libfaad.so -> libfaad.so.1.0.0
+lrwxrwxrwx root/root usr/lib/libfaad.so.1 -> libfaad.so.1.0.0
+-rwxr-xr-x root/root usr/lib/libfaad.so.1.0.0
+-rw-r--r-- root/root usr/lib/libmp4ff.a
diff --git a/extra/faad2/.md5sum b/extra/faad2/.md5sum
new file mode 100644
index 000000000..d45027f1f
--- /dev/null
+++ b/extra/faad2/.md5sum
@@ -0,0 +1,5 @@
+f4427ece45c87ac63102f891dc9208e1 faad2-2.6.1-abi_has_changed.patch
+6eb87d8c75da12d166ae460997bdbde2 faad2-2.6.1-broken-pipe.patch
+97a34cb3cd468ba868d9393241ef7391 faad2-2.6.1-implicitdeclar.patch
+fa91c19ea617b3ac8e7e198fb0a97b62 faad2-2.6.1-libtool22.patch
+74e92df40c270f216a8305fc87603c8a faad2-2.6.1.tar.gz
diff --git a/extra/faad2/Pkgfile b/extra/faad2/Pkgfile
new file mode 100755
index 000000000..120ecf24f
--- /dev/null
+++ b/extra/faad2/Pkgfile
@@ -0,0 +1,33 @@
+# Description: Profiles pour le decoder ACC MPEG4
+# URL: http://www.audiocoding.com
+# Maintainer: NuTyX core team
+# Packager: thierryn1 at hispeed dot ch
+# Depends on:
+
+name=faad2
+version=2.6.1
+release=1
+source=(http://downloads.sourceforge.net/sourceforge/faac/$name-$version.tar.gz\
+ faad2-2.6.1-libtool22.patch \
+ faad2-2.6.1-broken-pipe.patch \
+ faad2-2.6.1-implicitdeclar.patch
+ faad2-2.6.1-abi_has_changed.patch \
+
+ )
+
+
+build() {
+ cd $name
+# patch -p1 -i $SRC/$name-2.0-gcc4.patch
+ patch -p1 < ../faad2-2.6.1-libtool22.patch
+ patch -p1 < ../faad2-2.6.1-broken-pipe.patch
+ patch -p1 < ../faad2-2.6.1-implicitdeclar.patch
+ patch -p1 < ../faad2-2.6.1-abi_has_changed.patch
+ autoreconf -vif
+ ./configure --prefix=/usr
+ make
+ make DESTDIR=$PKG install
+ install -m644 common/mp4ff/mp4ff.h $PKG/usr/include/
+ install -m644 common/mp4ff/.libs/*.a $PKG/usr/lib
+ install -m644 common/mp4ff/mp4ff_int_types.h $PKG/usr/include
+}
diff --git a/extra/faad2/faad2-2.0-gcc4.patch b/extra/faad2/faad2-2.0-gcc4.patch
new file mode 100644
index 000000000..8e4c9a0bc
--- /dev/null
+++ b/extra/faad2/faad2-2.0-gcc4.patch
@@ -0,0 +1,387 @@
+# Looks a lot like Gentoo's 021_all_gcc4.patch, imho --Sten
+diff -ru faad2.orig/common/mp4ff/mp4atom.c faad2/common/mp4ff/mp4atom.c
+--- faad2.orig/common/mp4ff/mp4atom.c 2004-01-11 16:52:18.000000000 +0100
++++ faad2/common/mp4ff/mp4atom.c 2006-03-05 11:48:17.000000000 +0100
+@@ -31,15 +31,15 @@
+ #include "drms.h"
+
+ /* parse atom header size */
+-static int32_t mp4ff_atom_get_size(const int8_t *data)
++static int32_t mp4ff_atom_get_size(const uint8_t *data)
+ {
+ uint32_t result;
+ uint32_t a, b, c, d;
+
+- a = (uint8_t)data[0];
+- b = (uint8_t)data[1];
+- c = (uint8_t)data[2];
+- d = (uint8_t)data[3];
++ a = data[0];
++ b = data[1];
++ c = data[2];
++ d = data[3];
+
+ result = (a<<24) | (b<<16) | (c<<8) | d;
+ //if (result > 0 && result < 8) result = 8;
+@@ -182,7 +182,7 @@
+ {
+ uint64_t size;
+ int32_t ret;
+- int8_t atom_header[8];
++ uint8_t atom_header[8];
+
+ ret = mp4ff_read_data(f, atom_header, 8);
+ if (ret != 8)
+diff -ru faad2.orig/common/mp4ff/mp4ff.h faad2/common/mp4ff/mp4ff.h
+--- faad2.orig/common/mp4ff/mp4ff.h 2004-01-11 16:52:18.000000000 +0100
++++ faad2/common/mp4ff/mp4ff.h 2006-03-05 11:48:17.000000000 +0100
+@@ -125,4 +125,4 @@
+ }
+ #endif /* __cplusplus */
+
+-#endif
+\ No newline at end of file
++#endif
+diff -ru faad2.orig/common/mp4ff/mp4ff_int_types.h faad2/common/mp4ff/mp4ff_int_types.h
+--- faad2.orig/common/mp4ff/mp4ff_int_types.h 2003-12-13 23:26:56.000000000 +0100
++++ faad2/common/mp4ff/mp4ff_int_types.h 2006-03-05 11:48:18.000000000 +0100
+@@ -20,4 +20,4 @@
+ #endif
+
+
+-#endif
+\ No newline at end of file
++#endif
+diff -ru faad2.orig/common/mp4ff/mp4ffint.h faad2/common/mp4ff/mp4ffint.h
+--- faad2.orig/common/mp4ff/mp4ffint.h 2004-01-14 21:50:22.000000000 +0100
++++ faad2/common/mp4ff/mp4ffint.h 2006-03-05 11:48:18.000000000 +0100
+@@ -226,8 +226,8 @@
+
+
+ /* mp4util.c */
+-int32_t mp4ff_read_data(mp4ff_t *f, int8_t *data, uint32_t size);
+-int32_t mp4ff_write_data(mp4ff_t *f, int8_t *data, uint32_t size);
++int32_t mp4ff_read_data(mp4ff_t *f, uint8_t *data, uint32_t size);
++int32_t mp4ff_write_data(mp4ff_t *f, uint8_t *data, uint32_t size);
+ uint64_t mp4ff_read_int64(mp4ff_t *f);
+ uint32_t mp4ff_read_int32(mp4ff_t *f);
+ uint32_t mp4ff_read_int24(mp4ff_t *f);
+@@ -241,7 +241,7 @@
+ char * mp4ff_read_string(mp4ff_t * f,uint32_t length);
+
+ /* mp4atom.c */
+-static int32_t mp4ff_atom_get_size(const int8_t *data);
++static int32_t mp4ff_atom_get_size(const uint8_t *data);
+ static int32_t mp4ff_atom_compare(const int8_t a1, const int8_t b1, const int8_t c1, const int8_t d1,
+ const int8_t a2, const int8_t b2, const int8_t c2, const int8_t d2);
+ static uint8_t mp4ff_atom_name_to_type(const int8_t a, const int8_t b, const int8_t c, const int8_t d);
+@@ -301,7 +301,6 @@
+ mp4ff_t *mp4ff_open_edit(mp4ff_callback_t *f);
+ #endif
+ void mp4ff_close(mp4ff_t *ff);
+-void mp4ff_track_add(mp4ff_t *f);
+ int32_t parse_sub_atoms(mp4ff_t *f, const uint64_t total_size);
+ int32_t parse_atoms(mp4ff_t *f);
+
+@@ -326,4 +325,4 @@
+ }
+ #endif /* __cplusplus */
+
+-#endif
+\ No newline at end of file
++#endif
+diff -ru faad2.orig/common/mp4ff/mp4meta.c faad2/common/mp4ff/mp4meta.c
+--- faad2.orig/common/mp4ff/mp4meta.c 2004-01-11 16:52:18.000000000 +0100
++++ faad2/common/mp4ff/mp4meta.c 2006-03-05 11:48:18.000000000 +0100
+@@ -411,4 +411,4 @@
+ return mp4ff_meta_find_by_name(f, "cover", value);
+ }
+
+-#endif
+\ No newline at end of file
++#endif
+diff -ru faad2.orig/common/mp4ff/mp4tagupdate.c faad2/common/mp4ff/mp4tagupdate.c
+--- faad2.orig/common/mp4ff/mp4tagupdate.c 2004-01-06 12:59:47.000000000 +0100
++++ faad2/common/mp4ff/mp4tagupdate.c 2006-03-05 11:48:18.000000000 +0100
+@@ -143,7 +143,7 @@
+ bufptr = membuffer_get_ptr(buf);
+ if (bufptr==0) return 0;
+
+- if ((unsigned)mp4ff_read_data(src,(char*)bufptr + oldsize,bytes)!=bytes)
++ if ((unsigned)mp4ff_read_data(src,(uint8_t*)bufptr + oldsize,bytes)!=bytes)
+ {
+ membuffer_set_error(buf);
+ return 0;
+@@ -398,7 +398,7 @@
+ uint64_t atom_offset = base;
+ for(;;)
+ {
+- char atom_name[4];
++ uint8_t atom_name[4];
+ uint32_t atom_size;
+
+ mp4ff_set_position(f,atom_offset);
+@@ -618,7 +618,7 @@
+ /* copy moov atom to end of the file */
+ if (ff->last_atom != ATOM_MOOV)
+ {
+- char *free_data = "free";
++ uint8_t *free_data = (uint8_t*)"free";
+
+ /* rename old moov to free */
+ mp4ff_set_position(ff, ff->moov_offset + 4);
+@@ -626,14 +626,14 @@
+
+ mp4ff_set_position(ff, ff->file_size);
+ mp4ff_write_int32(ff,new_moov_size + 8);
+- mp4ff_write_data(ff,"moov",4);
++ mp4ff_write_data(ff,(uint8_t*)"moov",4);
+ mp4ff_write_data(ff, new_moov_data, new_moov_size);
+ }
+ else
+ {
+ mp4ff_set_position(ff, ff->moov_offset);
+ mp4ff_write_int32(ff,new_moov_size + 8);
+- mp4ff_write_data(ff,"moov",4);
++ mp4ff_write_data(ff,(uint8_t*)"moov",4);
+ mp4ff_write_data(ff, new_moov_data, new_moov_size);
+ }
+
+diff -ru faad2.orig/common/mp4ff/mp4util.c faad2/common/mp4ff/mp4util.c
+--- faad2.orig/common/mp4ff/mp4util.c 2004-01-11 16:52:19.000000000 +0100
++++ faad2/common/mp4ff/mp4util.c 2006-03-05 11:48:18.000000000 +0100
+@@ -28,7 +28,7 @@
+ #include "mp4ffint.h"
+ #include <stdlib.h>
+
+-int32_t mp4ff_read_data(mp4ff_t *f, int8_t *data, uint32_t size)
++int32_t mp4ff_read_data(mp4ff_t *f, uint8_t *data, uint32_t size)
+ {
+ int32_t result = 1;
+
+@@ -44,7 +44,7 @@
+ return f->stream->truncate(f->stream->user_data);
+ }
+
+-int32_t mp4ff_write_data(mp4ff_t *f, int8_t *data, uint32_t size)
++int32_t mp4ff_write_data(mp4ff_t *f, uint8_t *data, uint32_t size)
+ {
+ int32_t result = 1;
+
+@@ -105,13 +105,13 @@
+ {
+ uint32_t result;
+ uint32_t a, b, c, d;
+- int8_t data[4];
++ uint8_t data[4];
+
+ mp4ff_read_data(f, data, 4);
+- a = (uint8_t)data[0];
+- b = (uint8_t)data[1];
+- c = (uint8_t)data[2];
+- d = (uint8_t)data[3];
++ a = data[0];
++ b = data[1];
++ c = data[2];
++ d = data[3];
+
+ result = (a<<24) | (b<<16) | (c<<8) | d;
+ return (uint32_t)result;
+@@ -121,12 +121,12 @@
+ {
+ uint32_t result;
+ uint32_t a, b, c;
+- int8_t data[4];
++ uint8_t data[4];
+
+ mp4ff_read_data(f, data, 3);
+- a = (uint8_t)data[0];
+- b = (uint8_t)data[1];
+- c = (uint8_t)data[2];
++ a = data[0];
++ b = data[1];
++ c = data[2];
+
+ result = (a<<16) | (b<<8) | c;
+ return (uint32_t)result;
+@@ -136,11 +136,11 @@
+ {
+ uint32_t result;
+ uint32_t a, b;
+- int8_t data[2];
++ uint8_t data[2];
+
+ mp4ff_read_data(f, data, 2);
+- a = (uint8_t)data[0];
+- b = (uint8_t)data[1];
++ a = data[0];
++ b = data[1];
+
+ result = (a<<8) | b;
+ return (uint16_t)result;
+@@ -151,7 +151,7 @@
+ char * str = (char*)malloc(length + 1);
+ if (str!=0)
+ {
+- if ((uint32_t)mp4ff_read_data(f,str,length)!=length)
++ if ((uint32_t)mp4ff_read_data(f,(uint8_t*)str,length)!=length)
+ {
+ free(str);
+ str = 0;
+diff -ru faad2.orig/common/mp4v2/mp4meta.cpp faad2/common/mp4v2/mp4meta.cpp
+--- faad2.orig/common/mp4v2/mp4meta.cpp 2003-08-03 14:17:20.000000000 +0200
++++ faad2/common/mp4v2/mp4meta.cpp 2006-03-05 11:48:18.000000000 +0100
+@@ -830,7 +830,6 @@
+ MP4BytesProperty *pMetadataProperty = NULL;
+ char s[256];
+ int i = 0;
+- bool nameExists = false;
+
+ while (1)
+ {
+diff -ru faad2.orig/common/mp4v2/rtphint.h faad2/common/mp4v2/rtphint.h
+--- faad2.orig/common/mp4v2/rtphint.h 2003-06-29 23:41:00.000000000 +0200
++++ faad2/common/mp4v2/rtphint.h 2006-03-05 11:48:18.000000000 +0100
+@@ -35,8 +35,8 @@
+ return m_pPacket;
+ }
+
+- virtual u_int16_t GetDataSize() = NULL;
+- virtual void GetData(u_int8_t* pDest) = NULL;
++ virtual u_int16_t GetDataSize() = 0;
++ virtual void GetData(u_int8_t* pDest) = 0;
+
+ MP4Track* FindTrackFromRefIndex(u_int8_t refIndex);
+
+@@ -210,7 +210,7 @@
+
+ MP4RtpPacket* GetCurrentPacket() {
+ if (m_rtpPackets.Size() == 0) {
+- return NULL;
++ return 0;
+ }
+ return m_rtpPackets[m_rtpPackets.Size() - 1];
+ }
+@@ -250,10 +250,10 @@
+ }
+
+ void GetPayload(
+- char** ppPayloadName = NULL,
+- u_int8_t* pPayloadNumber = NULL,
+- u_int16_t* pMaxPayloadSize = NULL,
+- char **ppEncodingParams = NULL);
++ char** ppPayloadName = 0,
++ u_int8_t* pPayloadNumber = 0,
++ u_int16_t* pMaxPayloadSize = 0,
++ char **ppEncodingParams = 0);
+
+ void SetPayload(
+ const char* payloadName,
+@@ -265,7 +265,7 @@
+
+ void ReadHint(
+ MP4SampleId hintSampleId,
+- u_int16_t* pNumPackets = NULL);
++ u_int16_t* pNumPackets = 0);
+
+ u_int16_t GetHintNumberOfPackets();
+
+diff -ru faad2.orig/frontend/main.c faad2/frontend/main.c
+--- faad2.orig/frontend/main.c 2004-01-06 12:59:47.000000000 +0100
++++ faad2/frontend/main.c 2006-03-05 11:48:18.000000000 +0100
+@@ -36,6 +36,7 @@
+ #include <fcntl.h>
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <string.h>
+ #include <getopt.h>
+
+ #include <faad.h>
+@@ -377,8 +378,8 @@
+ float *song_length)
+ {
+ int tagsize;
+- unsigned long samplerate;
+- unsigned char channels;
++ uint32_t samplerate;
++ uint8_t channels;
+ void *sample_buffer;
+
+ audio_file *aufile;
+@@ -656,7 +657,7 @@
+ for (i = 0; i < numTracks; i++)
+ {
+ unsigned char *buff = NULL;
+- int buff_size = 0;
++ uint32_t buff_size = 0;
+ mp4AudioSpecificConfig mp4ASC;
+
+ mp4ff_get_decoder_config(infile, i, &buff, &buff_size);
+@@ -687,8 +688,8 @@
+ int infoOnly, int adts_out, float *song_length)
+ {
+ int track;
+- unsigned long samplerate;
+- unsigned char channels;
++ uint32_t samplerate;
++ uint8_t channels;
+ void *sample_buffer;
+
+ mp4ff_t *infile;
+@@ -707,7 +708,7 @@
+ mp4AudioSpecificConfig mp4ASC;
+
+ unsigned char *buffer;
+- int buffer_size;
++ uint32_t buffer_size;
+
+ char percents[200];
+ int percent, old_percent = -1;
+diff -ru faad2.orig/libfaad/decoder.c faad2/libfaad/decoder.c
+--- faad2.orig/libfaad/decoder.c 2004-02-04 21:07:24.000000000 +0100
++++ faad2/libfaad/decoder.c 2006-03-05 11:48:18.000000000 +0100
+@@ -50,7 +50,7 @@
+ uint16_t dbg_count;
+ #endif
+
+-int8_t* FAADAPI faacDecGetErrorMessage(uint8_t errcode)
++char* FAADAPI faacDecGetErrorMessage(uint8_t errcode)
+ {
+ if (errcode >= NUM_ERROR_MESSAGES)
+ return NULL;
+diff -ru faad2.orig/libfaad/decoder.h faad2/libfaad/decoder.h
+--- faad2.orig/libfaad/decoder.h 2004-01-05 15:05:11.000000000 +0100
++++ faad2/libfaad/decoder.h 2006-03-05 11:48:18.000000000 +0100
+@@ -76,7 +76,7 @@
+ #define LFE_CHANNEL (9)
+ #define UNKNOWN_CHANNEL (0)
+
+-int8_t* FAADAPI faacDecGetErrorMessage(uint8_t errcode);
++char* FAADAPI faacDecGetErrorMessage(uint8_t errcode);
+
+ uint32_t FAADAPI faacDecGetCapabilities(void);
+
+diff -ru faad2.orig/libfaad/error.c faad2/libfaad/error.c
+--- faad2.orig/libfaad/error.c 2004-01-28 20:17:25.000000000 +0100
++++ faad2/libfaad/error.c 2006-03-05 11:48:18.000000000 +0100
+@@ -28,7 +28,7 @@
+ #include "common.h"
+ #include "error.h"
+
+-int8_t *err_msg[] = {
++char *err_msg[] = {
+ "No error",
+ "Gain control not yet implemented",
+ "Pulse coding not allowed in short blocks",
+diff -ru faad2.orig/libfaad/error.h faad2/libfaad/error.h
+--- faad2.orig/libfaad/error.h 2004-01-28 20:17:25.000000000 +0100
++++ faad2/libfaad/error.h 2006-03-05 11:48:18.000000000 +0100
+@@ -33,7 +33,7 @@
+ #endif
+
+ #define NUM_ERROR_MESSAGES 26
+-extern int8_t *err_msg[];
++extern char *err_msg[];
+
+ #ifdef __cplusplus
+ }
diff --git a/extra/faad2/faad2-2.6.1-abi_has_changed.patch b/extra/faad2/faad2-2.6.1-abi_has_changed.patch
new file mode 100644
index 000000000..654d61355
--- /dev/null
+++ b/extra/faad2/faad2-2.6.1-abi_has_changed.patch
@@ -0,0 +1,15 @@
+Index: faad2/libfaad/Makefile.am
+===================================================================
+--- faad2.orig/libfaad/Makefile.am
++++ faad2/libfaad/Makefile.am
+@@ -3,7 +3,8 @@ lib_LTLIBRARIES = libfaad.la
+ include_HEADERS = $(top_srcdir)/include/faad.h \
+ $(top_srcdir)/include/neaacdec.h
+
+-libfaad_la_LDFLAGS = -lm
++libfaad_la_LDFLAGS = -version-info 1:0:0
++libfaad_la_LIBADD = -lm
+
+ libfaad_la_SOURCES = bits.c cfft.c decoder.c drc.c \
+ drm_dec.c error.c filtbank.c \
+
diff --git a/extra/faad2/faad2-2.6.1-broken-pipe.patch b/extra/faad2/faad2-2.6.1-broken-pipe.patch
new file mode 100644
index 000000000..0b356c92d
--- /dev/null
+++ b/extra/faad2/faad2-2.6.1-broken-pipe.patch
@@ -0,0 +1,23 @@
+--- faad2/frontend/main.c~ 2007-11-01 06:33:29.000000000 -0600
++++ faad2/frontend/main.c 2008-01-03 18:05:10.000000000 -0700
+@@ -640,7 +640,8 @@
+
+ if ((frameInfo.error == 0) && (frameInfo.samples > 0) && (!adts_out))
+ {
+- write_audio_file(aufile, sample_buffer, frameInfo.samples, 0);
++ if (write_audio_file(aufile, sample_buffer, frameInfo.samples, 0) == 0)
++ break;
+ }
+
+ /* fill buffer */
+@@ -976,7 +977,8 @@
+
+ if ((frameInfo.error == 0) && (sample_count > 0) && (!adts_out))
+ {
+- write_audio_file(aufile, sample_buffer, sample_count, delay);
++ if (write_audio_file(aufile, sample_buffer, sample_count, delay) == 0)
++ break;
+ }
+
+ if (frameInfo.error > 0)
+
diff --git a/extra/faad2/faad2-2.6.1-implicitdeclar.patch b/extra/faad2/faad2-2.6.1-implicitdeclar.patch
new file mode 100644
index 000000000..bb3abf1a6
--- /dev/null
+++ b/extra/faad2/faad2-2.6.1-implicitdeclar.patch
@@ -0,0 +1,12 @@
+diff -aur faad2-orig/frontend/main.c faad2/frontend/main.c
+--- faad2-orig/frontend/main.c 2007-11-01 08:33:29.000000000 -0400
++++ faad2/frontend/main.c 2008-06-21 19:33:08.000000000 -0400
+@@ -41,6 +41,7 @@
+ #include <stdarg.h>
+ #include <stdlib.h>
+ #include <getopt.h>
++#include <string.h>
+
+ #include <neaacdec.h>
+ #include <mp4ff.h>
+
diff --git a/extra/faad2/faad2-2.6.1-libtool22.patch b/extra/faad2/faad2-2.6.1-libtool22.patch
new file mode 100644
index 000000000..79bbce0c0
--- /dev/null
+++ b/extra/faad2/faad2-2.6.1-libtool22.patch
@@ -0,0 +1,14 @@
+Index: faad2/configure.in
+===================================================================
+--- faad2.orig/configure.in
++++ faad2/configure.in
+@@ -18,7 +18,7 @@ dnl Checks for programs.
+ AC_PROG_CC
+ AC_PROG_CPP
+ dnl disable for mpeg4ip plugin
+-dnl AC_PROG_CXX
++AC_PROG_CXX
+ AC_PROG_INSTALL
+ AC_PROG_LN_S
+ AC_PROG_MAKE_SET
+