diff options
Diffstat (limited to '')
-rw-r--r-- | configure.ac | 14 | ||||
-rw-r--r-- | doc/mpd.conf.5 | 11 | ||||
-rw-r--r-- | src/Makefile.am | 1 | ||||
-rw-r--r-- | src/audio.c | 2 | ||||
-rw-r--r-- | src/audioOutputs/audioOutput_fifo.c | 251 |
5 files changed, 0 insertions, 279 deletions
diff --git a/configure.ac b/configure.ac index 3d08665ae..0349faa3b 100644 --- a/configure.ac +++ b/configure.ac @@ -69,7 +69,6 @@ AC_ARG_ENABLE(sun,[ --disable-sun disable sun support (default: enabl AC_ARG_ENABLE(oss,[ --disable-oss disable OSS support (default: enable)],[enable_oss=$enableval],[enable_oss=yes]) AC_ARG_ENABLE(alsa,[ --disable-alsa disable ALSA support (default: enable)],[enable_alsa=$enableval],[enable_alsa=yes]) AC_ARG_ENABLE(pulse,[ --disable-pulse disable support for the PulseAudio sound server (default: enable)],[enable_pulse=$enableval],[enable_pulse=yes]) -AC_ARG_ENABLE(fifo,[ --enable-fifo enable support for writing audio to a FIFO (default: disable)],[enable_fifo=$enableval],[enable_fifo=no]) AC_ARG_ENABLE(mvp,[ --enable-mvp enable support for Hauppauge Media MVP (default: disable)],[enable_mvp=$enableval],[enable_mvp=no]) AC_ARG_ENABLE(oggvorbis,[ --disable-oggvorbis disable Ogg Vorbis support (default: enable)],[enable_oggvorbis=$enableval],enable_oggvorbis=yes) AC_ARG_ENABLE(oggflac,[ --disable-oggflac disable OggFLAC support (default: enable)],[enable_oggflac=$enableval],enable_oggflac=yes) @@ -179,12 +178,6 @@ if test x$enable_pulse = xyes; then [enable_pulse=no;AC_MSG_WARN([PulseAudio not found -- disabling])]) fi -if test x$enable_fifo = xyes; then - AC_CHECK_FUNC([mkfifo], - [enable_fifo=yes;AC_DEFINE([HAVE_FIFO], 1, [Define to enable support for writing audio to a FIFO])], - [enable_fifo=no;AC_MSG_WARN([mkfifo not found -- disabling support for writing audio to a FIFO])]) -fi - if test x$enable_mvp = xyes; then AC_DEFINE(HAVE_MVP,1,[Define to enable Hauppauge Media MVP support]) fi @@ -679,12 +672,6 @@ else echo " PulseAudio support ............disabled" fi -if test x$enable_fifo = xyes; then - echo " FIFO support ..................enabled" -else - echo " FIFO support ..................disabled" -fi - if test x$enable_mvp = xyes; then echo " Media MVP support .............enabled" else @@ -706,7 +693,6 @@ if test x$enable_ao = xno && test x$enable_alsa = xno && test x$enable_osx = xno && test x$enable_pulse = xno && - test x$enable_fifo = xno && test x$enable_mvp = xno; then AC_MSG_ERROR("No Audio Output types configured!") fi diff --git a/doc/mpd.conf.5 b/doc/mpd.conf.5 index 809ea8dc7..8e9dc0ea9 100644 --- a/doc/mpd.conf.5 +++ b/doc/mpd.conf.5 @@ -257,17 +257,6 @@ default is "". This specifies how many bytes to write to the audio device at once. This parameter is to work around a bug in older versions of libao on sound cards with very small buffers. The default is 1024. -.SH REQUIRED FIFO OUTPUT PARAMETERS -.TP -.B path <path> -This specifies the path of the FIFO to output to. Must be an absolute path. -If the path does not exist it will be created when mpd is started, and removed -when mpd is stopped. The FIFO will be created with the same user and group as -mpd is running as. Default permissions can be modified by using the builtin -shell command "umask". If a FIFO already exists at the specified path it will -be reused, and will \fBnot\fP be removed when mpd is stopped. You can use the -"mkfifo" command to create this, and then you may modify the permissions to -your liking. .SH REQUIRED SHOUT OUTPUT PARAMETERS .TP .B name <name> diff --git a/src/Makefile.am b/src/Makefile.am index 805403165..08f7ed012 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -7,7 +7,6 @@ mpd_audioOutputs = \ audioOutputs/audioOutput_oss.c \ audioOutputs/audioOutput_osx.c \ audioOutputs/audioOutput_pulse.c \ - audioOutputs/audioOutput_fifo.c \ audioOutputs/audioOutput_mvp.c \ audioOutputs/audioOutput_shout.c diff --git a/src/audio.c b/src/audio.c index dbec007b8..2e8645882 100644 --- a/src/audio.c +++ b/src/audio.c @@ -77,7 +77,6 @@ extern AudioOutputPlugin aoPlugin; extern AudioOutputPlugin ossPlugin; extern AudioOutputPlugin osxPlugin; extern AudioOutputPlugin pulsePlugin; -extern AudioOutputPlugin fifoPlugin; extern AudioOutputPlugin mvpPlugin; extern AudioOutputPlugin shoutPlugin; @@ -89,7 +88,6 @@ void loadAudioDrivers(void) loadAudioOutputPlugin(&ossPlugin); loadAudioOutputPlugin(&osxPlugin); loadAudioOutputPlugin(&pulsePlugin); - loadAudioOutputPlugin(&fifoPlugin); loadAudioOutputPlugin(&mvpPlugin); loadAudioOutputPlugin(&shoutPlugin); } diff --git a/src/audioOutputs/audioOutput_fifo.c b/src/audioOutputs/audioOutput_fifo.c deleted file mode 100644 index d77e7e81c..000000000 --- a/src/audioOutputs/audioOutput_fifo.c +++ /dev/null @@ -1,251 +0,0 @@ -/* the Music Player Daemon (MPD) - * (c)2003-2006 by Warren Dukes (warren.dukes@gmail.com) - * This project's homepage is: http://www.musicpd.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "../audioOutput.h" - -#include <stdlib.h> - -#ifdef HAVE_FIFO - -#include "../conf.h" -#include "../log.h" - -#include <errno.h> -#include <fcntl.h> -#include <string.h> -#include <unistd.h> -#include <sys/stat.h> - -#define FIFO_BUFFER_SIZE 65536 /* pipe capacity on Linux >= 2.6.11 */ - -typedef struct _FifoData { - char *path; - int input; - int output; - int created; -} FifoData; - -static FifoData *newFifoData() -{ - FifoData *ret; - - ret = malloc(sizeof(FifoData)); - - ret->path = NULL; - ret->input = -1; - ret->output = -1; - ret->created = 0; - - return ret; -} - -static void freeFifoData(FifoData *fd) -{ - if (fd->path) free(fd->path); - free(fd); -} - -static int makeFifo(FifoData *fd) -{ - if (mkfifo(fd->path, 0666) < 0) { - ERROR("Couldn't create FIFO \"%s\": %s\n", fd->path, - strerror(errno)); - return -1; - } - - fd->created = 1; - - return 0; -} - -static int checkFifo(FifoData *fd) -{ - struct stat st; - - if (stat(fd->path, &st) < 0) { - if (errno == ENOENT) { - /* Path doesn't exist */ - return makeFifo(fd); - } - - ERROR("Failed to stat FIFO \"%s\": %s\n", fd->path, - strerror(errno)); - return -1; - } - - if (!S_ISFIFO(st.st_mode)) { - ERROR("\"%s\" already exists, but is not a FIFO\n", fd->path); - return -1; - } - - return 0; -} - -static int openFifo(FifoData *fd) -{ - if (checkFifo(fd) < 0) return -1; - - fd->input = open(fd->path, O_RDONLY|O_NONBLOCK); - if (fd->input < 0) { - ERROR("Could not open FIFO \"%s\" for reading: %s\n", fd->path, - strerror(errno)); - return -1; - } - - fd->output = open(fd->path, O_WRONLY|O_NONBLOCK); - if (fd->output < 0) { - ERROR("Could not open FIFO \"%s\" for writing: %s\n", fd->path, - strerror(errno)); - return -1; - } - - return 0; -} - -static void removeFifo(FifoData *fd) -{ - DEBUG("Removing FIFO \"%s\"\n", fd->path); - if (unlink(fd->path) < 0) { - ERROR("Could not remove FIFO \"%s\": %s\n", fd->path, - strerror(errno)); - return; - } - - fd->created = 0; -} - -static void closeFifo(FifoData *fd) -{ - struct stat st; - - if (fd->input >= 0) close(fd->input); - if (fd->output >= 0) close(fd->output); - if (fd->created && (stat(fd->path, &st) == 0)) removeFifo(fd); -} - -static int fifo_initDriver(AudioOutput *audioOutput, ConfigParam *param) -{ - BlockParam *path = NULL; - FifoData *fd; - - if (param) path = getBlockParam(param, "path"); - - if (!path) { - ERROR("No \"path\" parameter specified for fifo output " - "defined at line %i\n", param->line); - exit(EXIT_FAILURE); - } - - if (path->value[0] != '/') { - ERROR("\"path\" parameter for fifo output is not an absolute " - "path at line %i\n", param->line); - exit(EXIT_FAILURE); - } - - fd = newFifoData(); - fd->path = strdup(path->value); - audioOutput->data = fd; - - if (openFifo(fd) < 0) { - freeFifoData(fd); - return -1; - } - - return 0; -} - -static void fifo_finishDriver(AudioOutput *audioOutput) -{ - FifoData *fd; - - fd = audioOutput->data; - closeFifo(fd); - freeFifoData(fd); -} - -static int fifo_openDevice(AudioOutput *audioOutput) -{ - audioOutput->open = 1; - return 0; -} - -static void fifo_dropBufferedAudio(AudioOutput *audioOutput) -{ - FifoData *fd; - char buf[FIFO_BUFFER_SIZE]; - int bytes = 1; - - fd = audioOutput->data; - - while (bytes > 0) bytes = read(fd->input, buf, FIFO_BUFFER_SIZE); - if (bytes < 0 && errno != EAGAIN) { - WARNING("Flush of FIFO \"%s\" failed: %s\n", fd->path, - strerror(errno)); - } -} - -static void fifo_closeDevice(AudioOutput *audioOutput) -{ - audioOutput->open = 0; -} - -static int fifo_playAudio(AudioOutput *audioOutput, char *playChunk, int size) -{ - FifoData *fd; - int bytes; - int offset = 0; - - fd = audioOutput->data; - - while (1) { - bytes = write(fd->output, &playChunk[offset], size); - if (bytes < 0 && errno == EAGAIN) { - fifo_dropBufferedAudio(audioOutput); - } else if (bytes < 0) { - ERROR("Closing FIFO output \"%s\" due to write error: " - "%s\n", fd->path, strerror(errno)); - fifo_closeDevice(audioOutput); - return -1; - } else if (bytes < size) { - size -= bytes; - offset += bytes; - } else { - break; - } - } - - return 0; -} - -AudioOutputPlugin fifoPlugin = { - "fifo", - NULL, /* testDefaultDeviceFunc */ - fifo_initDriver, - fifo_finishDriver, - fifo_openDevice, - fifo_playAudio, - fifo_dropBufferedAudio, - fifo_closeDevice, - NULL, /* sendMetadataFunc */ -}; - -#else /* HAVE_FIFO */ - -DISABLED_AUDIO_OUTPUT_PLUGIN(fifoPlugin) - -#endif /* HAVE_FIFO */ |