-]], [[
- struct ip_mreqn mn;
- mn.imr_ifindex = 0;
-]])],[have_ip_mreqn=yes],[have_ip_mreqn=no])
-AC_MSG_RESULT($have_ip_mreqn)
-if test ${have_ip_mreqn} = yes; then
- AC_DEFINE(HAVE_IP_MREQN, 1, define to 1 you have struct ip_mreqn)
-fi
-########################################################################### osx
-
-AC_MSG_CHECKING(for CoreAudio (MacOs))
-AC_LINK_IFELSE([AC_LANG_PROGRAM([[
- #include <CoreAudio/CoreAudio.h>
-]], [[
- AudioDeviceID id;
-]])],[have_core_audio=yes],[have_core_audio=no])
-AC_MSG_RESULT($have_core_audio)
-if test ${have_core_audio} = yes; then
- f1="-framework CoreAudio"
- f2="-framework AudioToolbox"
- f3="-framework AudioUnit"
- f4="-framework CoreServices"
- core_audio_ldflags="$f1 $f2 $f3 $f4"
- AC_SUBST(core_audio_ldflags)
- AC_DEFINE(HAVE_CORE_AUDIO, 1, define to 1 on Mac Os X)
-fi
-####################################################### ogg/vorbis/speex/opus
-have_ogg="yes"
-OLD_CPPFLAGS="$CPPFLAGS"
-OLD_LDFLAGS="$LDFLAGS"
-OLD_LIBS="$LIBS"
-AC_ARG_WITH(ogg_headers, [AS_HELP_STRING(--with-ogg-headers=dir,
- [look for ogg headers also in dir])])
-AC_ARG_WITH(ogg_libs, [AS_HELP_STRING(--with-ogg-libs=dir,
- [look for ogg libs also in dir])])
-AC_ARG_WITH(vorbis_headers, [AS_HELP_STRING(--with-vorbis-headers=dir,
- [look for vorbis headers also in dir])])
-AC_ARG_WITH(vorbis_libs, [AS_HELP_STRING(--with-vorbis-libs=dir,
- [look for vorbis libs also in dir])])
-AC_ARG_WITH(speex_headers, [AS_HELP_STRING(--with-speex-headers=dir,
- [look for speex headers also in dir])])
-AC_ARG_WITH(speex_libs, [AS_HELP_STRING(--with-speex-libs=dir,
- [look for speex libs also in dir])])
-AC_ARG_WITH(opus_headers, [AS_HELP_STRING(--with-opus-headers=dir,
- [look for opus headers also in dir])])
-AC_ARG_WITH(opus_libs, [AS_HELP_STRING(--with-opus-libs=dir,
- [look for opus libs also in dir])])
-
-if test -n "$with_ogg_headers"; then
- ogg_cppflags="-I$with_ogg_headers"
- CPPFLAGS="$CPPFLAGS $ogg_cppflags"
-fi
-if test -n "$with_ogg_libs"; then
- ogg_libs="-L$with_ogg_libs"
- LDFLAGS="$LDFLAGS $ogg_libs"
-fi
-AC_CHECK_HEADERS([ogg/ogg.h], [], [ have_ogg="no"; ])
-AC_CHECK_LIB([ogg], [ogg_stream_init], [], [ have_ogg="no" ])
-
-have_vorbis="yes"
-have_speex="yes"
-have_opus="yes"
-if test "$have_ogg" = "yes"; then
- # vorbis
- if test -n "$with_vorbis_headers"; then
- vorbis_cppflags="-I$with_vorbis_headers"
- CPPFLAGS="$CPPFLAGS $vorbis_cppflags"
- fi
- if test -n "$with_vorbis_libs"; then
- vorbis_libs="-L$with_vorbis_libs"
- LDFLAGS="$LDFLAGS $vorbis_libs"
- fi
- AC_CHECK_HEADERS([vorbis/codec.h], [], [ have_vorbis="no" ])
- AC_CHECK_LIB([vorbis], [vorbis_info_init], [], [ have_vorbis="no" ])
-
- # speex
- if test -n "$with_speex_headers"; then
- speex_cppflags="-I$with_speex_headers"
- CPPFLAGS="$CPPFLAGS $speex_cppflags"
- fi
- if test -n "$with_speex_libs"; then
- speex_libs="-L$with_speex_libs"
- LDFLAGS="$LDFLAGS $speex_libs"
- fi
- AC_CHECK_LIB([speex], [speex_decoder_init], [], [ have_speex="no" ])
- AC_CHECK_HEADERS([speex/speex.h], [], [ have_speex="no" ])
-
- # opus
- if test -n "$with_opus_headers"; then
- opus_cppflags="-I$with_opus_headers"
- CPPFLAGS="$CPPFLAGS $opus_cppflags"
- fi
- if test -n "$with_opus_libs"; then
- opus_libs="-L$with_opus_libs"
- LDFLAGS="$LDFLAGS $opus_libs"
- fi
- AC_CHECK_LIB([opus], [opus_multistream_decode], [], [ have_opus="no" ])
- AC_CHECK_HEADERS([opus/opus.h], [], [ have_opus="no" ])
-else
- AC_MSG_WARN([vorbis/speex/opus depend on libogg, which was not detected])
- have_vorbis="no"
- have_speex="no"
- have_opus="no"
-fi
-
-msg="support in para_server/para_filter/para_afh"
-if test "$have_vorbis" = "yes" || \
- test "$have_speex" = "yes" || \
- test "$have_opus" = "yes"; then
- AC_SUBST(ogg_cppflags)
- ogg_ldflags="$ogg_libs -logg"
- if test "$OSTYPE" = "Darwin"; then
- ogg_ldflags="-Wl,-bind_at_load $ogg_ldflags"
- fi
- AC_SUBST(ogg_ldflags)
-fi
-if test "$have_vorbis" = "yes"; then
- AC_DEFINE(HAVE_OGGVORBIS, 1, define to 1 to turn on ogg/vorbis support)
- vorbis_ldflags="$vorbis_libs -lvorbis -lvorbisfile"
- AC_SUBST(vorbis_ldflags)
-fi
-if test "$have_speex" = "yes"; then
- AC_DEFINE(HAVE_SPEEX, 1, define to 1 to turn on ogg/speex support)
- AC_SUBST(speex_cppflags)
- speex_ldflags="$speex_libs -lspeex"
- AC_SUBST(speex_ldflags)
-else
- AC_MSG_WARN([no ogg/speex $msg])
-fi
-if test "$have_opus" = "yes"; then
- AC_DEFINE(HAVE_OPUS, 1, define to 1 to turn on ogg/opus support)
- AC_SUBST(opus_cppflags)
- opus_ldflags="$opus_libs -lopus"
- AC_SUBST(opus_ldflags)
- audio_format_handlers="$audio_format_handlers opus"
-else
- AC_MSG_WARN([no ogg/opus $msg])
-fi
-CPPFLAGS="$OLD_CPPFLAGS"
-LDFLAGS="$OLD_LDFLAGS"
-LIBS="$OLD_LIBS"
+])
+########################################################################### ogg
+STASH_FLAGS
+LIB_ARG_WITH([ogg], [-logg])
+HAVE_OGG=yes
+AC_CHECK_HEADERS([ogg/ogg.h], [], [HAVE_OGG=no])
+AC_CHECK_LIB([ogg], [ogg_stream_init], [], [HAVE_OGG=no])
+AC_CHECK_LIB([ogg], [ogg_stream_flush_fill], [
+ AC_DEFINE(HAVE_OGG_STREAM_FLUSH_FILL, 1, [libogg >= 1.3.0])])
+LIB_SUBST_FLAGS(ogg)
+UNSTASH_FLAGS
+######################################################################### vorbis
+STASH_FLAGS
+LIB_ARG_WITH([vorbis], [-lvorbis -lvorbisfile])
+HAVE_VORBIS=yes
+AC_CHECK_HEADERS([vorbis/codec.h], [], [HAVE_VORBIS=no])
+AC_CHECK_LIB([vorbis], [vorbis_info_init], [], [HAVE_VORBIS=no])
+LIB_SUBST_FLAGS(vorbis)
+UNSTASH_FLAGS
+######################################################################### speex
+STASH_FLAGS
+LIB_ARG_WITH([speex], [-lspeex])
+HAVE_SPEEX=yes
+AC_CHECK_HEADERS([speex/speex.h], [], [HAVE_SPEEX=no])
+AC_CHECK_LIB([speex], [speex_decoder_init], [], [HAVE_SPEEX=no])
+LIB_SUBST_FLAGS(speex)
+UNSTASH_FLAGS
+######################################################################### opus
+STASH_FLAGS
+LIB_ARG_WITH([opus], [-lopus])
+HAVE_OPUS=yes
+AC_CHECK_HEADERS([opus/opus.h], [], [HAVE_OPUS=no])
+AC_CHECK_LIB([opus], [opus_multistream_decode], [], [HAVE_OPUS=no])
+LIB_SUBST_FLAGS(opus)
+UNSTASH_FLAGS
+########################################################################### flac
+STASH_FLAGS
+LIB_ARG_WITH([flac], [-lFLAC -lm])
+HAVE_FLAC=yes
+AC_CHECK_HEADER(FLAC/stream_decoder.h, [], HAVE_FLAC=no)
+AC_CHECK_LIB([FLAC], [FLAC__stream_decoder_init_file], [], HAVE_FLAC=no)
+LIB_SUBST_FLAGS(flac)
+UNSTASH_FLAGS
+
+# some helper functions for codecs which use the ogg container format
+AC_DEFUN([NEED_OGG_OBJECTS], [{
+ test "$HAVE_OGG" = 'yes' -a \( \
+ "$HAVE_VORBIS" = 'yes' \
+ -o "$HAVE_SPEEX" = 'yes' \
+ -o "$HAVE_OPUS" = 'yes' \
+ -o "$HAVE_FLAC" = 'yes' \
+ \)
+}])
+AC_DEFUN([NEED_VORBIS_OBJECTS], [{
+ test "$HAVE_OGG" = 'yes' -a "$HAVE_VORBIS" = 'yes'
+}])
+AC_DEFUN([NEED_SPEEX_OBJECTS], [{
+ test "$HAVE_OGG" = 'yes' -a "$HAVE_SPEEX" = 'yes'
+}])
+AC_DEFUN([NEED_OPUS_OBJECTS], [{
+ test "$HAVE_OGG" = 'yes' -a "$HAVE_OPUS" = 'yes'
+}])
+AC_DEFUN([NEED_FLAC_OBJECTS], [{
+ test "$HAVE_OGG" = 'yes' -a "$HAVE_FLAC" = 'yes'
+}])