1
0
mirror of https://github.com/mpv-player/mpv synced 2025-01-13 18:45:25 +00:00

ao_arts, ao_esd: remove these AOs

Delete ao_arts and ao_esd. Both have been deprecated upstream.
This commit is contained in:
Uoti Urpala 2012-05-06 18:29:48 +03:00
parent 3076dd8199
commit e5f8ab3bca
5 changed files with 0 additions and 691 deletions

View File

@ -435,7 +435,6 @@ SRCS_MPLAYER-$(AA) += libvo/vo_aa.c
SRCS_MPLAYER-$(ALSA) += libao2/ao_alsa.c
SRCS_MPLAYER-$(APPLE_IR) += input/appleir.c
SRCS_MPLAYER-$(APPLE_REMOTE) += input/ar.c
SRCS_MPLAYER-$(ARTS) += libao2/ao_arts.c
SRCS_MPLAYER-$(BL) += libvo/vo_bl.c
SRCS_MPLAYER-$(CACA) += libvo/vo_caca.c
SRCS_MPLAYER-$(COREAUDIO) += libao2/ao_coreaudio.c
@ -446,7 +445,6 @@ SRCS_MPLAYER-$(DIRECT3D) += libvo/vo_direct3d.c libvo/w32_common.c
SRCS_MPLAYER-$(DIRECTFB) += libvo/vo_directfb2.c libvo/vo_dfbmga.c
SRCS_MPLAYER-$(DIRECTX) += libao2/ao_dsound.c libvo/vo_directx.c
SRCS_MPLAYER-$(DXR3) += libvo/vo_dxr3.c
SRCS_MPLAYER-$(ESD) += libao2/ao_esd.c
SRCS_MPLAYER-$(FBDEV) += libvo/vo_fbdev.c libvo/vo_fbdev2.c
SRCS_MPLAYER-$(GGI) += libvo/vo_ggi.c
SRCS_MPLAYER-$(GIF) += libvo/vo_gif89a.c

58
configure vendored
View File

@ -438,8 +438,6 @@ Video output:
Audio output:
--disable-alsa disable ALSA audio output [autodetect]
--disable-ossaudio disable OSS audio output [autodetect]
--disable-arts disable aRts audio output [autodetect]
--disable-esd disable esd audio output [autodetect]
--disable-rsound disable RSound audio output [autodetect]
--disable-pulse disable Pulseaudio audio output [autodetect]
--disable-portaudio disable PortAudio audio output [autodetect]
@ -597,8 +595,6 @@ _iconv=auto
_langinfo=auto
_rtc=auto
_ossaudio=auto
_arts=auto
_esd=auto
_rsound=auto
_pulse=auto
_portaudio=auto
@ -915,10 +911,6 @@ for ac_option do
--disable-libdv) _libdv=no ;;
--enable-ossaudio) _ossaudio=yes ;;
--disable-ossaudio) _ossaudio=no ;;
--enable-arts) _arts=yes ;;
--disable-arts) _arts=no ;;
--enable-esd) _esd=yes ;;
--disable-esd) _esd=no ;;
--enable-rsound) _rsound=yes ;;
--disable-rsound) _rsound=no ;;
--enable-pulse) _pulse=yes ;;
@ -4772,51 +4764,6 @@ fi
echores "$_ossaudio"
echocheck "aRts"
if test "$_arts" = auto ; then
_arts=no
if ( artsc-config --version ) >> "$TMPLOG" 2>&1 ; then
statement_check artsc.h 'arts_init()' $(artsc-config --libs) $(artsc-config --cflags) &&
_arts=yes
fi
fi
if test "$_arts" = yes ; then
def_arts='#define CONFIG_ARTS 1'
aomodules="arts $aomodules"
libs_mplayer="$libs_mplayer $(artsc-config --libs)"
extra_cflags="$extra_cflags $(artsc-config --cflags)"
else
noaomodules="arts $noaomodules"
fi
echores "$_arts"
echocheck "EsounD"
if test "$_esd" = auto ; then
_esd=no
if ( esd-config --version ) >> "$TMPLOG" 2>&1 ; then
statement_check esd.h 'esd_open_sound("test")' $(esd-config --libs) $(esd-config --cflags) && _esd=yes
fi
fi
echores "$_esd"
if test "$_esd" = yes ; then
def_esd='#define CONFIG_ESD 1'
aomodules="esd $aomodules"
libs_mplayer="$libs_mplayer $(esd-config --libs)"
extra_cflags="$extra_cflags $(esd-config --cflags)"
echocheck "esd_get_latency()"
statement_check esd.h 'esd_get_latency(0)' $(esd-config --libs) $(esd-config --cflags) &&
_esd_latency=yes && def_esd_latency='#define CONFIG_ESD_LATENCY 1'
echores "$_esd_latency"
else
def_esd='#undef CONFIG_ESD'
def_esd_latency='#undef CONFIG_ESD_LATENCY'
noaomodules="esd $noaomodules"
fi
echocheck "RSound"
if test "$_rsound" = auto ; then
_rsound=no
@ -6335,7 +6282,6 @@ AA = $_aa
ALSA = $_alsa
APPLE_IR = $_apple_ir
APPLE_REMOTE = $_apple_remote
ARTS = $_arts
AUDIO_INPUT = $_audio_input
BITMAP_FONT = $_bitmap_font
BL = $_bl
@ -6356,7 +6302,6 @@ DVDNAV_INTERNAL = $dvdnav_internal
DVDREAD = $_dvdread
DVDREAD_INTERNAL = $_dvdread_internal
DXR3 = $_dxr3
ESD = $_esd
FAAD = $_faad
FASTMEMCPY = $_fastmemcpy
FBDEV = $_fbdev
@ -6672,10 +6617,7 @@ $def_xmms
/* Audio output drivers */
$def_alsa
$def_arts
$def_coreaudio
$def_esd
$def_esd_latency
$def_jack
$def_nas
$def_openal

View File

@ -1,148 +0,0 @@
/*
* aRts audio output driver for MPlayer
*
* copyright (c) 2002 Michele Balistreri <brain87@gmx.net>
*
* This file is part of MPlayer.
*
* MPlayer 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.
*
* MPlayer 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 MPlayer; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include <artsc.h>
#include <stdio.h>
#include "config.h"
#include "audio_out.h"
#include "audio_out_internal.h"
#include "libaf/af_format.h"
#include "mp_msg.h"
#define OBTAIN_BITRATE(a) (((a != AF_FORMAT_U8) && (a != AF_FORMAT_S8)) ? 16 : 8)
/* Feel free to experiment with the following values: */
#define ARTS_PACKETS 10 /* Number of audio packets */
#define ARTS_PACKET_SIZE_LOG2 11 /* Log2 of audio packet size */
static arts_stream_t stream;
static const ao_info_t info =
{
"aRts audio output",
"arts",
"Michele Balistreri <brain87@gmx.net>",
""
};
LIBAO_EXTERN(arts)
static int control(int cmd, void *arg)
{
return CONTROL_UNKNOWN;
}
static int init(int rate_hz, int channels, int format, int flags)
{
int err;
int frag_spec;
if( (err=arts_init()) ) {
mp_tmsg(MSGT_AO, MSGL_ERR, "[AO ARTS] %s\n", arts_error_text(err));
return 0;
}
mp_tmsg(MSGT_AO, MSGL_INFO, "[AO ARTS] Connected to sound server.\n");
/*
* arts supports 8bit unsigned and 16bit signed sample formats
* (16bit apparently in little endian format, even in the case
* when artsd runs on a big endian cpu).
*
* Unsupported formats are translated to one of these two formats
* using mplayer's audio filters.
*/
switch (format) {
case AF_FORMAT_U8:
case AF_FORMAT_S8:
format = AF_FORMAT_U8;
break;
default:
format = AF_FORMAT_S16_LE; /* artsd always expects little endian?*/
break;
}
ao_data.format = format;
ao_data.channels = channels;
ao_data.samplerate = rate_hz;
ao_data.bps = (rate_hz*channels);
if(format != AF_FORMAT_U8 && format != AF_FORMAT_S8)
ao_data.bps*=2;
stream=arts_play_stream(rate_hz, OBTAIN_BITRATE(format), channels, "MPlayer");
if(stream == NULL) {
mp_tmsg(MSGT_AO, MSGL_ERR, "[AO ARTS] Unable to open a stream.\n");
arts_free();
return 0;
}
/* Set the stream to blocking: it will not block anyway, but it seems */
/* to be working better */
arts_stream_set(stream, ARTS_P_BLOCKING, 1);
frag_spec = ARTS_PACKET_SIZE_LOG2 | ARTS_PACKETS << 16;
arts_stream_set(stream, ARTS_P_PACKET_SETTINGS, frag_spec);
ao_data.buffersize = arts_stream_get(stream, ARTS_P_BUFFER_SIZE);
mp_tmsg(MSGT_AO, MSGL_INFO, "[AO ARTS] Stream opened.\n");
mp_tmsg(MSGT_AO, MSGL_INFO, "[AO ARTS] buffer size: %d\n",
ao_data.buffersize);
mp_tmsg(MSGT_AO, MSGL_INFO, "[AO ARTS] buffer size: %d\n",
arts_stream_get(stream, ARTS_P_PACKET_SIZE));
return 1;
}
static void uninit(int immed)
{
arts_close_stream(stream);
arts_free();
}
static int play(void* data,int len,int flags)
{
return arts_write(stream, data, len);
}
static void audio_pause(void)
{
}
static void audio_resume(void)
{
}
static void reset(void)
{
}
static int get_space(void)
{
return arts_stream_get(stream, ARTS_P_BUFFER_SPACE);
}
static float get_delay(void)
{
return ((float) (ao_data.buffersize - arts_stream_get(stream,
ARTS_P_BUFFER_SPACE))) / ((float) ao_data.bps);
}

View File

@ -1,477 +0,0 @@
/*
* EsounD audio output driver for MPlayer
*
* copyright (c) 2002 Juergen Keil <jk@tools.de>
*
* This file is part of MPlayer.
*
* MPlayer 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.
*
* MPlayer 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 MPlayer; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
/*
* TODO / known problems:
* - does not work well when the esd daemon has autostandby disabled
* (workaround: run esd with option "-as 2" - fortunatelly this is
* the default)
* - plays noise on a linux 2.4.4 kernel with a SB16PCI card, when using
* a local tcp connection to the esd daemon; there is no noise when using
* a unix domain socket connection.
* (there are EIO errors reported by the sound card driver, so this is
* most likely a linux sound card driver problem)
*/
#include <sys/types.h>
#include <sys/time.h>
#include <sys/socket.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <fcntl.h>
#include <time.h>
#ifdef __svr4__
#include <stropts.h>
#endif
#include <esd.h>
#include "config.h"
#include "audio_out.h"
#include "audio_out_internal.h"
#include "libaf/af_format.h"
#include "mp_msg.h"
#define ESD_RESAMPLES 0
#define ESD_DEBUG 0
#if ESD_DEBUG
#define dprintf(...) printf(__VA_ARGS__)
#else
#define dprintf(...) /**/
#endif
#define ESD_CLIENT_NAME "MPlayer"
#define ESD_MAX_DELAY (1.0f) /* max amount of data buffered in esd (#sec) */
static const ao_info_t info =
{
"EsounD audio output",
"esd",
"Juergen Keil <jk@tools.de>",
""
};
LIBAO_EXTERN(esd)
static int esd_fd = -1;
static int esd_play_fd = -1;
static esd_server_info_t *esd_svinfo;
static int esd_latency;
static int esd_bytes_per_sample;
static unsigned long esd_samples_written;
static struct timeval esd_play_start;
extern float audio_delay;
/*
* to set/get/query special features/parameters
*/
static int control(int cmd, void *arg)
{
esd_player_info_t *esd_pi;
esd_info_t *esd_i;
time_t now;
static time_t vol_cache_time;
static ao_control_vol_t vol_cache;
switch (cmd) {
case AOCONTROL_GET_VOLUME:
time(&now);
if (now == vol_cache_time) {
*(ao_control_vol_t *)arg = vol_cache;
return CONTROL_OK;
}
dprintf("esd: get vol\n");
if ((esd_i = esd_get_all_info(esd_fd)) == NULL)
return CONTROL_ERROR;
for (esd_pi = esd_i->player_list; esd_pi != NULL; esd_pi = esd_pi->next)
if (strcmp(esd_pi->name, ESD_CLIENT_NAME) == 0)
break;
if (esd_pi != NULL) {
ao_control_vol_t *vol = (ao_control_vol_t *)arg;
vol->left = esd_pi->left_vol_scale * 100 / ESD_VOLUME_BASE;
vol->right = esd_pi->right_vol_scale * 100 / ESD_VOLUME_BASE;
vol_cache = *vol;
vol_cache_time = now;
}
esd_free_all_info(esd_i);
return CONTROL_OK;
case AOCONTROL_SET_VOLUME:
dprintf("esd: set vol\n");
if ((esd_i = esd_get_all_info(esd_fd)) == NULL)
return CONTROL_ERROR;
for (esd_pi = esd_i->player_list; esd_pi != NULL; esd_pi = esd_pi->next)
if (strcmp(esd_pi->name, ESD_CLIENT_NAME) == 0)
break;
if (esd_pi != NULL) {
ao_control_vol_t *vol = (ao_control_vol_t *)arg;
esd_set_stream_pan(esd_fd, esd_pi->source_id,
vol->left * ESD_VOLUME_BASE / 100,
vol->right * ESD_VOLUME_BASE / 100);
vol_cache = *vol;
time(&vol_cache_time);
}
esd_free_all_info(esd_i);
return CONTROL_OK;
default:
return CONTROL_UNKNOWN;
}
}
/*
* open & setup audio device
* return: 1=success 0=fail
*/
static int init(int rate_hz, int channels, int format, int flags)
{
esd_format_t esd_fmt;
int bytes_per_sample;
int fl;
char *server = ao_subdevice; /* NULL for localhost */
float lag_seconds, lag_net = 0., lag_serv;
struct timeval proto_start, proto_end;
global_ao->no_persistent_volume = true;
if (esd_fd < 0) {
esd_fd = esd_open_sound(server);
if (esd_fd < 0) {
mp_tmsg(MSGT_AO, MSGL_ERR, "[AO ESD] esd_open_sound failed: %s\n",
strerror(errno));
return 0;
}
/* get server info, and measure network latency */
gettimeofday(&proto_start, NULL);
esd_svinfo = esd_get_server_info(esd_fd);
if(server) {
gettimeofday(&proto_end, NULL);
lag_net = (proto_end.tv_sec - proto_start.tv_sec) +
(proto_end.tv_usec - proto_start.tv_usec) / 1000000.0;
lag_net /= 2.0; /* round trip -> one way */
} else
lag_net = 0.0; /* no network lag */
/*
if (esd_svinfo) {
mp_msg(MSGT_AO, MSGL_INFO, "AO: [esd] server info:\n");
esd_print_server_info(esd_svinfo);
}
*/
}
esd_fmt = ESD_STREAM | ESD_PLAY;
#if ESD_RESAMPLES
/* let the esd daemon convert sample rate */
#else
/* let mplayer's audio filter convert the sample rate */
if (esd_svinfo != NULL)
rate_hz = esd_svinfo->rate;
#endif
ao_data.samplerate = rate_hz;
/* EsounD can play mono or stereo */
switch (channels) {
case 1:
esd_fmt |= ESD_MONO;
ao_data.channels = bytes_per_sample = 1;
break;
default:
esd_fmt |= ESD_STEREO;
ao_data.channels = bytes_per_sample = 2;
break;
}
/* EsounD can play 8bit unsigned and 16bit signed native */
switch (format) {
case AF_FORMAT_S8:
case AF_FORMAT_U8:
esd_fmt |= ESD_BITS8;
ao_data.format = AF_FORMAT_U8;
break;
default:
esd_fmt |= ESD_BITS16;
ao_data.format = AF_FORMAT_S16_NE;
bytes_per_sample *= 2;
break;
}
/* modify audio_delay depending on esd_latency
* latency is number of samples @ 44.1khz stereo 16 bit
* adjust according to rate_hz & bytes_per_sample
*/
#ifdef CONFIG_ESD_LATENCY
esd_latency = esd_get_latency(esd_fd);
#else
esd_latency = ((channels == 1 ? 2 : 1) * ESD_DEFAULT_RATE *
(ESD_BUF_SIZE + 64 * (4.0f / bytes_per_sample))
) / rate_hz;
esd_latency += ESD_BUF_SIZE * 2;
#endif
if(esd_latency > 0) {
lag_serv = (esd_latency * 4.0f) / (bytes_per_sample * rate_hz);
lag_seconds = lag_net + lag_serv;
audio_delay += lag_seconds;
mp_tmsg(MSGT_AO, MSGL_INFO,"[AO ESD] latency: [server: %0.2fs, net: %0.2fs] (adjust %0.2fs)\n",
lag_serv, lag_net, lag_seconds);
}
esd_play_fd = esd_play_stream_fallback(esd_fmt, rate_hz,
server, ESD_CLIENT_NAME);
if (esd_play_fd < 0) {
mp_tmsg(MSGT_AO, MSGL_ERR, "[AO ESD] failed to open ESD playback stream: %s\n", strerror(errno));
return 0;
}
/* enable non-blocking i/o on the socket connection to the esd server */
if ((fl = fcntl(esd_play_fd, F_GETFL)) >= 0)
fcntl(esd_play_fd, F_SETFL, O_NDELAY|fl);
#if ESD_DEBUG
{
int sbuf, rbuf, len;
len = sizeof(sbuf);
getsockopt(esd_play_fd, SOL_SOCKET, SO_SNDBUF, &sbuf, &len);
len = sizeof(rbuf);
getsockopt(esd_play_fd, SOL_SOCKET, SO_RCVBUF, &rbuf, &len);
dprintf("esd: send/receive socket buffer space %d/%d bytes\n",
sbuf, rbuf);
}
#endif
ao_data.bps = bytes_per_sample * rate_hz;
ao_data.outburst = ao_data.bps > 100000 ? 4*ESD_BUF_SIZE : 2*ESD_BUF_SIZE;
esd_play_start.tv_sec = 0;
esd_samples_written = 0;
esd_bytes_per_sample = bytes_per_sample;
return 1;
}
/*
* close audio device
*/
static void uninit(int immed)
{
if (esd_play_fd >= 0) {
esd_close(esd_play_fd);
esd_play_fd = -1;
}
if (esd_svinfo) {
esd_free_server_info(esd_svinfo);
esd_svinfo = NULL;
}
if (esd_fd >= 0) {
esd_close(esd_fd);
esd_fd = -1;
}
}
/*
* plays 'len' bytes of 'data'
* it should round it down to outburst*n
* return: number of bytes played
*/
static int play(void* data, int len, int flags)
{
int offs;
int nwritten;
int nsamples;
int n;
/* round down buffersize to a multiple of ESD_BUF_SIZE bytes */
len = len / ESD_BUF_SIZE * ESD_BUF_SIZE;
if (len <= 0)
return 0;
#define SINGLE_WRITE 0
#if SINGLE_WRITE
nwritten = write(esd_play_fd, data, len);
#else
for (offs = 0, nwritten=0; offs + ESD_BUF_SIZE <= len; offs += ESD_BUF_SIZE) {
/*
* note: we're writing to a non-blocking socket here.
* A partial write means, that the socket buffer is full.
*/
n = write(esd_play_fd, (char*)data + offs, ESD_BUF_SIZE);
if ( n < 0 ) {
if ( errno != EAGAIN )
dprintf("esd play: write failed: %s\n", strerror(errno));
break;
} else if ( n != ESD_BUF_SIZE ) {
nwritten += n;
break;
} else
nwritten += n;
}
#endif
if (nwritten > 0) {
if (!esd_play_start.tv_sec)
gettimeofday(&esd_play_start, NULL);
nsamples = nwritten / esd_bytes_per_sample;
esd_samples_written += nsamples;
dprintf("esd play: %d %lu\n", nsamples, esd_samples_written);
} else {
dprintf("esd play: blocked / %lu\n", esd_samples_written);
}
return nwritten;
}
/*
* stop playing, keep buffers (for pause)
*/
static void audio_pause(void)
{
/*
* not possible with esd. the esd daemom will continue playing
* buffered data (not more than ESD_MAX_DELAY seconds of samples)
*/
}
/*
* resume playing, after audio_pause()
*/
static void audio_resume(void)
{
/*
* not possible with esd.
*
* Let's hope the pause was long enough that the esd ran out of
* buffered data; we restart our time based delay computation
* for an audio resume.
*/
esd_play_start.tv_sec = 0;
esd_samples_written = 0;
}
/*
* stop playing and empty buffers (for seeking/pause)
*/
static void reset(void)
{
#ifdef __svr4__
/* throw away data buffered in the esd connection */
if (ioctl(esd_play_fd, I_FLUSH, FLUSHW))
perror("I_FLUSH");
#endif
}
/*
* return: how many bytes can be played without blocking
*/
static int get_space(void)
{
struct timeval tmout;
fd_set wfds;
float current_delay;
int space;
/*
* Don't buffer too much data in the esd daemon.
*
* If we send too much, esd will block in write()s to the sound
* device, and the consequence is a huge slow down for things like
* esd_get_all_info().
*/
if ((current_delay = get_delay()) >= ESD_MAX_DELAY) {
dprintf("esd get_space: too much data buffered\n");
return 0;
}
FD_ZERO(&wfds);
FD_SET(esd_play_fd, &wfds);
tmout.tv_sec = 0;
tmout.tv_usec = 0;
if (select(esd_play_fd + 1, NULL, &wfds, NULL, &tmout) != 1)
return 0;
if (!FD_ISSET(esd_play_fd, &wfds))
return 0;
/* try to fill 50% of the remaining "free" buffer space */
space = (ESD_MAX_DELAY - current_delay) * ao_data.bps * 0.5f;
/* round up to next multiple of ESD_BUF_SIZE */
space = (space + ESD_BUF_SIZE-1) / ESD_BUF_SIZE * ESD_BUF_SIZE;
dprintf("esd get_space: %d\n", space);
return space;
}
/*
* return: delay in seconds between first and last sample in buffer
*/
static float get_delay(void)
{
struct timeval now;
double buffered_samples_time;
double play_time;
if (!esd_play_start.tv_sec)
return 0;
buffered_samples_time = (float)esd_samples_written / ao_data.samplerate;
gettimeofday(&now, NULL);
play_time = now.tv_sec - esd_play_start.tv_sec;
play_time += (now.tv_usec - esd_play_start.tv_usec) / 1000000.;
/* dprintf("esd delay: %f %f\n", play_time, buffered_samples_time); */
if (play_time > buffered_samples_time) {
dprintf("esd: underflow\n");
esd_play_start.tv_sec = 0;
esd_samples_written = 0;
return 0;
}
dprintf("esd: get_delay %f\n", buffered_samples_time - play_time);
return buffered_samples_time - play_time;
}

View File

@ -90,12 +90,6 @@ static const struct ao_driver * const audio_out_drivers[] = {
&audio_out_sun,
#endif
// wrappers:
#ifdef CONFIG_ARTS
&audio_out_arts,
#endif
#ifdef CONFIG_ESD
&audio_out_esd,
#endif
#ifdef CONFIG_JACK
&audio_out_jack,
#endif