diff options
author | J. Alexander Treuman <jat@spatialrift.net> | 2006-07-26 20:51:50 +0000 |
---|---|---|
committer | J. Alexander Treuman <jat@spatialrift.net> | 2006-07-26 20:51:50 +0000 |
commit | 8dcc3d31ac92e0eb632f17bd6ccf5c34fa08106d (patch) | |
tree | a584b0472482591f0ddbfeb558f2fd91c4e8e0ba | |
parent | 907fe56029ead527a439127d39e54c9283b5d65e (diff) | |
download | mpd-8dcc3d31ac92e0eb632f17bd6ccf5c34fa08106d.tar.gz mpd-8dcc3d31ac92e0eb632f17bd6ccf5c34fa08106d.tar.xz mpd-8dcc3d31ac92e0eb632f17bd6ccf5c34fa08106d.zip |
Remove the fifo plugin. It's currently useless for the average user, and making it more presentable isn't something I'm willing to do before 0.12. It will likely be added back after 0.12, along with some very experimental stuff to make it more usable.
git-svn-id: https://svn.musicpd.org/mpd/trunk@4472 09075e82-0dd4-0310-85a5-a0d7c8717e4f
-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 */ |