diff --git a/INSTALL b/INSTALL
index 54ade434d..57712c094 100644
--- a/INSTALL
+++ b/INSTALL
@@ -141,6 +141,9 @@ For the sticker database.
libcue - http://libcue.sourceforge.net/
For CUE sheet support.
+libcdio - http://www.gnu.org/software/libcdio/
+For playing audio CDs.
+
pkg-config
----------
diff --git a/Makefile.am b/Makefile.am
index 0966a2a66..f02b389c8 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -106,6 +106,7 @@ mpd_headers = \
src/input/curl_input_plugin.h \
src/input/rewind_input_plugin.h \
src/input/mms_input_plugin.h \
+ src/input/cdio_paranoia_input_plugin.h \
src/text_file.h \
src/text_input_stream.h \
src/icy_server.h \
@@ -612,11 +613,13 @@ endif
INPUT_CFLAGS = \
$(CURL_CFLAGS) \
+ $(CDIO_PARANOIA_CFLAGS) \
$(FFMPEG_CFLAGS) \
$(MMS_CFLAGS)
INPUT_LIBS = \
$(CURL_LIBS) \
+ $(CDIO_PARANOIA_LIBS) \
$(FFMPEG_LIBS) \
$(MMS_LIBS)
@@ -632,6 +635,10 @@ INPUT_SRC += src/input/curl_input_plugin.c \
src/icy_metadata.c
endif
+if ENABLE_CDIO_PARANOIA
+INPUT_SRC += src/input/cdio_paranoia_input_plugin.c
+endif
+
if HAVE_FFMPEG
INPUT_SRC += src/input/ffmpeg_input_plugin.c
endif
diff --git a/NEWS b/NEWS
index 1a25bfd9b..f58f69110 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,6 @@
ver 0.17 (2010/??/??)
+* input:
+ - cdio_paranoia: new input plugin to play audio CDs
* output:
- osx: allow user to specify other audio devices
diff --git a/configure.ac b/configure.ac
index d8b2c5834..4d578c9f0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -135,6 +135,11 @@ AC_ARG_ENABLE(bzip2,
[enable bzip2 archive support (default: disabled)]),,
enable_bzip2=no)
+AC_ARG_ENABLE(cdio-paranoia,
+ AS_HELP_STRING([--enable-cdio-paranoia],
+ [enable support for audio CD support]),,
+ enable_cdio_paranoia=auto)
+
AC_ARG_ENABLE(cue,
AS_HELP_STRING([--enable-cue],
[enable support for libcue support]),,
@@ -633,6 +638,16 @@ if test x$enable_lastfm = xyes; then
fi
AM_CONDITIONAL(ENABLE_LASTFM, test x$enable_lastfm = xyes)
+dnl ---------------------------------- libcue ---------------------------------
+MPD_AUTO_PKG(cdio_paranoia, CDIO_PARANOIA, [libcdio_paranoia],
+ [libcdio_paranoia audio CD library], [libcdio_paranoia not found])
+if test x$enable_cdio_paranoia = xyes; then
+ AC_DEFINE([ENABLE_CDIO_PARANOIA], 1,
+ [Define to enable libcdio_paranoia support])
+fi
+
+AM_CONDITIONAL(ENABLE_CDIO_PARANOIA, test x$enable_cdio_paranoia = xyes)
+
dnl ---------------------------------- libogg ---------------------------------
if test x$with_tremor == xno || test -z $with_tremor; then
PKG_CHECK_MODULES(OGG, [ogg], enable_ogg=yes, enable_ogg=no)
@@ -1579,6 +1594,7 @@ echo -en '\nStreaming support:\n\t'
results(curl,[CURL])
results(lastfm,[Last.FM])
results(mms,[MMS])
+results(cdio_paranoia, [CDIO_PARANOIA])
echo -ne '\n\n##########################################\n\n'
diff --git a/doc/user.xml b/doc/user.xml
index 17bbdf91f..4dc04ff2e 100644
--- a/doc/user.xml
+++ b/doc/user.xml
@@ -621,6 +621,17 @@ cd mpd-version
Plays streams with the MMS protocol.
+
+
+ cdio_paranoia
+
+
+ Plays audio CDs. The URI has the form:
+ "cdda://[DEVICE][/TRACK]". The
+ simplest form cdda:// plays the whole
+ disc in the default drive.
+
+
diff --git a/src/input_registry.c b/src/input_registry.c
index 0b9b47d10..735ed4776 100644
--- a/src/input_registry.c
+++ b/src/input_registry.c
@@ -37,6 +37,10 @@
#include "input/mms_input_plugin.h"
#endif
+#ifdef ENABLE_CDIO_PARANOIA
+#include "input/cdio_paranoia_input_plugin.h"
+#endif
+
#include
const struct input_plugin *const input_plugins[] = {
@@ -52,6 +56,9 @@ const struct input_plugin *const input_plugins[] = {
#endif
#ifdef ENABLE_MMS
&input_plugin_mms,
+#endif
+#ifdef ENABLE_CDIO_PARANOIA
+ &input_plugin_cdio_paranoia,
#endif
NULL
};
diff --git a/src/ls.c b/src/ls.c
index c30765c62..2a90f9b64 100644
--- a/src/ls.c
+++ b/src/ls.c
@@ -48,6 +48,9 @@ static const char *remoteUrlPrefixes[] = {
"rtmp://",
"rtmpt://",
"rtmps://",
+#endif
+#ifdef ENABLE_CDIO_PARANOIA
+ "cdda://",
#endif
NULL
};