aboutsummaryrefslogtreecommitdiffstats
path: root/m4/faad.m4
diff options
context:
space:
mode:
Diffstat (limited to 'm4/faad.m4')
-rw-r--r--m4/faad.m4190
1 files changed, 190 insertions, 0 deletions
diff --git a/m4/faad.m4 b/m4/faad.m4
new file mode 100644
index 000000000..f7c360409
--- /dev/null
+++ b/m4/faad.m4
@@ -0,0 +1,190 @@
+AC_DEFUN([AM_PATH_FAAD],
+[dnl ##
+dnl faad
+dnl ##
+
+AC_ARG_ENABLE(aac,
+ AS_HELP_STRING([--disable-aac],
+ [disable AAC support (default: enable)]),,
+ enable_aac=yes)
+
+AC_ARG_WITH(faad,
+ AS_HELP_STRING([--with-faad=PFX],
+ [prefix where faad2 is installed (optional)]),,
+ faad_prefix="")
+AC_ARG_WITH(faad-libraries,
+ AS_HELP_STRING([--with-faad-libraries=DIR],
+ [directory where faad2 library is installed (optional)]),,
+ faad_libraries="")
+AC_ARG_WITH(faad-includes,
+ AS_HELP_STRING([--with-faad-includes=DIR],
+ [directory where faad2 header files are installed (optional)]),,
+ faad_includes="")
+
+if test x$enable_aac = xyes; then
+ if test "x$faad_libraries" != "x" ; then
+ FAAD_LIBS="-L$faad_libraries"
+ elif test "x$faad_prefix" != "x" ; then
+ FAAD_LIBS="-L$faad_prefix/lib"
+ fi
+
+ FAAD_LIBS="$FAAD_LIBS -lfaad"
+
+ if test "x$faad_includes" != "x" ; then
+ FAAD_CFLAGS="-I$faad_includes"
+ elif test "x$faad_prefix" != "x" ; then
+ FAAD_CFLAGS="-I$faad_prefix/include"
+ fi
+
+ oldcflags=$CFLAGS
+ oldlibs=$LIBS
+ oldcppflags=$CPPFLAGS
+ CFLAGS="$CFLAGS $MPD_CFLAGS $FAAD_CFLAGS -I."
+ LIBS="$LIBS $MPD_LIBS $FAAD_LIBS"
+ 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"],enable_aac=no)
+ if test x$enable_aac = xno; then
+ enable_aac=yes
+ AC_CHECK_LIB(faad,NeAACDecInit2,[MPD_LIBS="$MPD_LIBS $FAAD_LIBS";MPD_CFLAGS="$MPD_CFLAGS $FAAD_CFLAGS"],enable_aac=no)
+ fi
+ fi
+ if test x$enable_aac = xyes; then
+ 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_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])
+ fi
+ CFLAGS=$oldcflags
+ LIBS=$oldlibs
+ CPPFLAGS=$oldcppflags
+fi
+
+if test x$enable_aac = xyes; then
+ oldcflags=$CFLAGS
+ oldlibs=$LIBS
+ oldcppflags=$CPPFLAGS
+ CFLAGS="$CFLAGS $MPD_CFLAGS $FAAD_CFLAGS -Werror"
+ LIBS="$LIBS $MPD_LIBS $FAAD_LIBS"
+ CPPFLAGS=$CFLAGS
+
+ AC_MSG_CHECKING(for broken libfaad headers)
+ AC_COMPILE_IFELSE([
+#include <faad.h>
+#include <stddef.h>
+#include <stdint.h>
+
+int main() {
+ unsigned char channels;
+ uint32_t sample_rate;
+
+ faacDecInit2(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
+fi
+
+if test x$enable_aac = xyes; then
+ enable_mp4=yes
+ MP4FF_LIBS="-lmp4ff"
+
+ oldcflags=$CFLAGS
+ oldlibs=$LIBS
+ oldcppflags=$CPPFLAGS
+ CFLAGS="$CFLAGS $FAAD_CFLAGS"
+ LIBS="$LIBS $MP4FF_LIBS"
+ CPPFLAGS=$CFLAGS
+
+ AC_CHECK_HEADER(mp4ff.h,,enable_mp4=no)
+
+ if test x$enable_mp4 = xyes; then
+ AC_CHECK_LIB(mp4ff,mp4ff_open_read,,enable_mp4=no)
+ fi
+
+ if test x$enable_mp4 = xyes; then
+ AC_SUBST(MP4FF_LIBS)
+ AC_DEFINE(HAVE_MP4, 1, [Define to use FAAD2+mp4ff for MP4 decoding])
+ else
+ AC_MSG_WARN([libmp4ff needed for MP4 support -- disabling MP4 support])
+ unset MP4FF_LIBS
+ fi
+
+ CFLAGS=$oldcflags
+ LIBS=$oldlibs
+ CPPFLAGS=$oldcppflags
+fi
+]) \ No newline at end of file