aboutsummaryrefslogtreecommitdiffstats
path: root/configure.ac
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--configure.ac66
1 files changed, 65 insertions, 1 deletions
diff --git a/configure.ac b/configure.ac
index 9c695a254..e2b5f16f7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -278,13 +278,77 @@ if test x$enable_aac = xyes; then
CPPFLAGS=$CFLAGS
AC_CHECK_HEADER(faad.h,,enable_aac=no)
if test x$enable_aac = xyes; then
+ AC_CHECK_DECL(FAAD2_VERSION,,enable_aac=no,[#include <faad.h>])
+ fi
+ if test x$enable_aac = xyes; then
AC_CHECK_DECL(faacDecInit2,,enable_aac=no,[#include <faad.h>])
fi
if test x$enable_aac = xyes; then
AC_CHECK_LIB(faad,faacDecInit2,[MPD_LIBS="$MPD_LIBS $FAAD_LIBS";MPD_CFLAGS="$MPD_CFLAGS $FAAD_CFLAGS";MP4FF_SUBDIR="mp4ff";MP4FF_LIB="mp4ff/libmp4ff.la"],enable_aac=no)
fi
if test x$enable_aac = xyes; then
- AC_CHECK_MEMBERS([faacDecConfiguration.downMatrix,faacDecConfiguration.dontUpSampleImplicitSBR],,,[#include <faad.h>])
+ AC_MSG_CHECKING(that FAAD2 uses buffer and bufferlen)
+ AC_COMPILE_IFELSE([
+#include <faad.h>
+
+int main() {
+ char buffer;
+ long bufferlen = 0;
+ faacDecHandle decoder;
+ faacDecFrameInfo frameInfo;
+ faacDecConfigurationPtr config;
+ unsigned char channels;
+ long sampleRate;
+ mp4AudioSpecificConfig mp4ASC;
+
+ decoder = faacDecOpen();
+ config = faacDecGetCurrentConfiguration(decoder);
+ config->outputFormat = FAAD_FMT_16BIT;
+ faacDecSetConfiguration(decoder,config);
+ AudioSpecificConfig(&buffer, bufferlen, &mp4ASC);
+ faacDecInit(decoder,&buffer,bufferlen,&sampleRate,&channels);
+ faacDecInit2(decoder,&buffer,bufferlen,&sampleRate,&channels);
+ faacDecDecode(decoder,&frameInfo,&buffer,bufferlen);
+
+ return 0;
+}
+],[AC_MSG_RESULT(yes);AC_DEFINE(HAVE_FAAD_BUFLEN_FUNCS,1,[Define if FAAD2 uses buflen in function calls])],[AC_MSG_RESULT(no);
+ AC_MSG_CHECKING(that FAAD2 can even be used)
+ AC_COMPILE_IFELSE([
+#include <faad.h>
+
+int main() {
+ char buffer;
+ faacDecHandle decoder;
+ faacDecFrameInfo frameInfo;
+ faacDecConfigurationPtr config;
+ unsigned char channels;
+ long sampleRate;
+ long bufferlen = 0;
+ unsigned long dummy1_32;
+ unsigned char dummy2_8, dummy3_8, dummy4_8, dummy5_8, dummy6_8,
+ dummy7_8, dummy8_8;
+
+ decoder = faacDecOpen();
+ config = faacDecGetCurrentConfiguration(decoder);
+ config->outputFormat = FAAD_FMT_16BIT;
+ faacDecSetConfiguration(decoder,config);
+ AudioSpecificConfig(&buffer,&dummy1_32,&dummy2_8,
+ &dummy3_8,&dummy4_8,&dummy5_8,
+ &dummy6_8,&dummy7_8,&dummy8_8);
+ faacDecInit(decoder,&buffer,&sampleRate,&channels);
+ faacDecInit2(decoder,&buffer,bufferlen,&sampleRate,&channels);
+ faacDecDecode(decoder,&frameInfo,&buffer);
+ faacDecClose(decoder);
+
+ return 0;
+}
+],AC_MSG_RESULT(yes),[AC_MSG_RESULT(no);enable_aac=no])
+ ])
+ fi
+ if test x$enable_aac = xyes; then
+ AC_CHECK_TYPES(mp4AudioSpecificConfig,,,[#include <faad.h>])
+ AC_CHECK_MEMBERS([faacDecConfiguration.downMatrix,faacDecConfiguration.dontUpSampleImplicitSBR,faacDecFrameInfo.samplerate],,,[#include <faad.h>])
AC_DEFINE(HAVE_FAAD,1,[Define to use FAAD2 for AAC decoding])
else
AC_MSG_WARN([faad2 lib needed for MP4/AAC support -- disabling MP4/AAC support])