aboutsummaryrefslogtreecommitdiffstats
path: root/m4
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2014-10-25 20:42:50 +0200
committerMax Kellermann <max@duempel.org>2014-10-25 20:42:50 +0200
commitbc5a53574c64eb51d2cbf31b26f4607e566eeaab (patch)
tree56cef63f7d9989ed5bbe98abb6025f4a7d0eb275 /m4
parent30df709736fd206a4799244e19e1d5052c75fb6f (diff)
downloadmpd-bc5a53574c64eb51d2cbf31b26f4607e566eeaab.tar.gz
mpd-bc5a53574c64eb51d2cbf31b26f4607e566eeaab.tar.xz
mpd-bc5a53574c64eb51d2cbf31b26f4607e566eeaab.zip
decoder/faad: remove workaround for ancient libfaad2 ABI bug
Many years ago, FAAD had a serious ABI bug: the NeAACDecInit() prototype in its header declared the "samplerate" parameter to be "unsigned long *", but internally, the function assumed it was "uint32_t *" instead. On 32 bit machines, that was no difference, but on 64 bit, this left one portion of the return value uninitialized; and worse, on big-endian, the wrong word was filled. This bug had to be worked around in MPD (commit 9c4e97a6). A few months later, the bug was fixed in the FAAD CVS in commit 1.117 on file libfaad/decoder.c; the commit message was: "Use public headers internally to prevent duplicate declarations" The commit message was too brief at best; the problem was not duplicate declarations, but a prototype mismatch. No mention of the bug fix in the ChangeLog. The MPD project never learned about this bug fix, and so MPD would always pass a "uin32_t *" dressed up as a "unsigned long *". Nearly 6 years later, it's about time to fix this second ABI problem. Let's kill the workaround!
Diffstat (limited to 'm4')
-rw-r--r--m4/faad.m431
1 files changed, 1 insertions, 30 deletions
diff --git a/m4/faad.m4 b/m4/faad.m4
index 5ca520e79..9dcb1ccab 100644
--- a/m4/faad.m4
+++ b/m4/faad.m4
@@ -62,36 +62,7 @@ int main() {
CPPFLAGS=$oldcppflags
fi
-if test x$enable_aac = xyes; then
- oldcflags=$CFLAGS
- oldlibs=$LIBS
- oldcppflags=$CPPFLAGS
- CFLAGS="$CFLAGS $FAAD_CFLAGS -Werror"
- LIBS="$LIBS $FAAD_LIBS"
- CPPFLAGS=$CFLAGS
-
- AC_MSG_CHECKING(for broken libfaad headers)
- AC_COMPILE_IFELSE([AC_LANG_SOURCE([
-#include <faad.h>
-#include <stddef.h>
-#include <stdint.h>
-
-int main() {
- unsigned char channels;
- uint32_t sample_rate;
-
- NeAACDecInit2(NULL, NULL, 0, &sample_rate, &channels);
- return 0;
-}
- ])],
- [AC_MSG_RESULT(correct)],
- [AC_MSG_RESULT(broken);
- AC_DEFINE(HAVE_FAAD_LONG, 1, [Define if faad.h uses the broken "unsigned long" pointers])])
-
- CFLAGS=$oldcflags
- LIBS=$oldlibs
- CPPFLAGS=$oldcppflags
-else
+if test x$enable_aac = xno; then
FAAD_LIBS=""
FAAD_CFLAGS=""
fi