aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--configure.ac13
-rw-r--r--src/audio.c20
-rw-r--r--src/audio.h4
-rw-r--r--src/flac_decode.c1
-rw-r--r--src/mp3_decode.c1
5 files changed, 31 insertions, 8 deletions
diff --git a/configure.ac b/configure.ac
index ea934d775..d9efd1f0c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -27,6 +27,7 @@ AM_CONFIG_HEADER(config.h)
MPD_CFLAGS="-Wall"
MPD_LIBS=""
+AC_ARG_ENABLE(audio,[ --disable-audio disable support for playing],,enable_ao=yes)
AC_ARG_ENABLE(iconv,[ --disable-iconv disable iconv support],,enable_iconv=yes)
AC_ARG_ENABLE(ipv6,[ --disable-ipv6 disable IPv6 support],,enable_ipv6=yes)
AC_ARG_ENABLE(alsa,[ --disable-alsa disable Alsa Mixer support],,enable_alsa=yes)
@@ -91,7 +92,11 @@ AP_maGiC_VALUE
)
fi
-XIPH_PATH_AO(MPD_LIBS="$MPD_LIBS $AO_LIBS" MPD_CFLAGS="$MPD_CFLAGS $AO_CFLAGS",AC_MSG_ERROR(Must have libao installed!!!))
+if test x$enable_ao = xyes; then
+ XIPH_PATH_AO(MPD_LIBS="$MPD_LIBS $AO_LIBS" MPD_CFLAGS="$MPD_CFLAGS $AO_CFLAGS",AC_MSG_ERROR(Must have libao installed!!!))
+ AC_DEFINE(HAVE_AUDIO, 1, [Define to play audio])
+fi
+
AC_CHECK_HEADER(sys/soundcard.h,enable_oss=yes,[AC_MSG_WARN(Soundcard headers not found -- disabling OSS mixer);enable_oss=no;AC_DEFINE(NO_OSS_MIXER,1,[Define to disable OSS mixer support])])
if test x$enable_alsa = xyes; then
@@ -502,6 +507,12 @@ fi
echo ""
echo "Audio Format Support:"
+if test x$enable_ao = xyes; then
+ echo "Playing audio .................enabled"
+else
+ echo "Playing audio .................disabled"
+fi
+
if test x$enable_id3 = xyes; then
echo "ID3 tag support ...............enabled"
if test x$use_mpd_id3tag = xyes; then
diff --git a/src/audio.c b/src/audio.c
index f8ad963ea..df497203e 100644
--- a/src/audio.c
+++ b/src/audio.c
@@ -25,6 +25,9 @@
#include <assert.h>
#include <signal.h>
+#ifdef HAVE_AUDIO
+#include <ao/ao.h>
+
int audio_write_size;
int audio_ao_driver_id;
@@ -32,8 +35,10 @@ ao_option * audio_ao_options;
AudioFormat audio_format;
ao_device * audio_device = NULL;
+#endif
void initAudioDriver() {
+#ifdef HAVE_AUDIO
ao_info * ai;
char * dup;
char * stk1;
@@ -107,15 +112,19 @@ void initAudioDriver() {
}
}
free(dup);
+#endif
}
void finishAudioDriver() {
+#ifdef HAVE_AUDIO
ao_free_options(audio_ao_options);
ao_shutdown();
+#endif
}
int isCurrentAudioFormat(AudioFormat * audioFormat) {
+#ifdef HAVE_AUDIO
if(!audio_device || !audioFormat) return 0;
if(audio_format.bits!=audioFormat->bits ||
@@ -124,11 +133,12 @@ int isCurrentAudioFormat(AudioFormat * audioFormat) {
{
return 0;
}
-
+#endif
return 1;
}
int initAudio(AudioFormat * audioFormat) {
+#ifdef HAVE_AUDIO
ao_sample_format format;
if(audio_device && !isCurrentAudioFormat(audioFormat)) {
@@ -154,12 +164,13 @@ int initAudio(AudioFormat * audioFormat) {
if(audio_device==NULL) return -1;
}
-
+#endif
return 0;
}
int playAudio(char * playChunk, int size) {
+#ifdef HAVE_AUDIO
int send;
if(audio_device==NULL) {
@@ -181,19 +192,23 @@ int playAudio(char * playChunk, int size) {
size-=send;
}
+#endif
return 0;
}
void finishAudio() {
+#ifdef HAVE_AUDIO
if(audio_device) {
blockSignals();
ao_close(audio_device);
audio_device = NULL;
unblockSignals();
}
+#endif
}
void audioError() {
+#ifdef HAVE_AUDIO
if(errno==AO_ENOTLIVE) {
ERROR("not a live ao device\n");
}
@@ -203,4 +218,5 @@ void audioError() {
else if(errno==AO_EBADOPTION) {
ERROR("bad driver option\n");
}
+#endif
}
diff --git a/src/audio.h b/src/audio.h
index da9784d1b..917644f15 100644
--- a/src/audio.h
+++ b/src/audio.h
@@ -24,7 +24,6 @@
#include "mpd_types.h"
#include <stdio.h>
-#include <ao/ao.h>
#define AUDIO_AO_DRIVER_DEFAULT "default"
@@ -34,9 +33,6 @@ typedef struct _AudioFormat {
mpd_sint8 bits;
} AudioFormat;
-extern int audio_ao_driver_id;
-extern ao_option * audio_ao_options;
-
void initAudioDriver();
void finishAudioDriver();
diff --git a/src/flac_decode.c b/src/flac_decode.c
index 25857cb6e..611b198f6 100644
--- a/src/flac_decode.c
+++ b/src/flac_decode.c
@@ -45,7 +45,6 @@ typedef struct {
/* this code is based on flac123, from flac-tools */
int flacSendChunk(FlacData * data);
-void flacPlayfile(const char * file, Buffer * cb, ao_sample_format * format);
void flacError(const FLAC__FileDecoder *, FLAC__StreamDecoderErrorStatus, void *);
void flacPrintErroredState(FLAC__FileDecoderState state, char * file);
void flacMetadata(const FLAC__FileDecoder *, const FLAC__StreamMetadata *, void *);
diff --git a/src/mp3_decode.c b/src/mp3_decode.c
index 84192078b..f0b57f59e 100644
--- a/src/mp3_decode.c
+++ b/src/mp3_decode.c
@@ -42,6 +42,7 @@
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
+#include <errno.h>
#define FRAMES_CUSHION 2000