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
This commit is contained in:
J. Alexander Treuman 2006-07-26 20:51:50 +00:00
parent 907fe56029
commit 8dcc3d31ac
5 changed files with 0 additions and 279 deletions

View File

@ -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

View File

@ -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>

View File

@ -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

View File

@ -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);
}

View File

@ -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 */