summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@mplayer2.org>2012-01-15 21:01:44 +0100
committerwm4 <wm4@mplayer2.org>2012-01-18 04:21:46 +0100
commit56c1ab1c62e4e35c7b62d2b8143f6e9247f4c96c (patch)
tree9352471dc57887ae3c8feaf01b9c7dd1772066f5
parent7187b4914838a302df78aa16c7a80b498f2be51a (diff)
downloadmpv-56c1ab1c62e4e35c7b62d2b8143f6e9247f4c96c.tar.bz2
mpv-56c1ab1c62e4e35c7b62d2b8143f6e9247f4c96c.tar.xz
libao2: try to identify some audio outputs that have persistent volume
The mplayer frontend (specifically, mixer.c) needs to know this. If the audio output doesn't remember the volume across reinitialization, the frontend will restore the volume settings. There is also the assumption that the volume setting isn't global in this case (i.e. changing it won't change the volume of other applications or annoy the user otherwise). None of these changes have been tested. I'm guessing that ESD and NAS do per-connection non-persistent volume settings.
-rw-r--r--libao2/ao_dsound.c2
-rw-r--r--libao2/ao_esd.c2
-rw-r--r--libao2/ao_nas.c2
-rw-r--r--libao2/ao_openal.c1
-rw-r--r--libao2/ao_sdl.c2
5 files changed, 9 insertions, 0 deletions
diff --git a/libao2/ao_dsound.c b/libao2/ao_dsound.c
index 605b0f16e0..a7d30ec357 100644
--- a/libao2/ao_dsound.c
+++ b/libao2/ao_dsound.c
@@ -418,6 +418,8 @@ static int init(int rate, int channels, int format, int flags)
int res;
if (!InitDirectSound()) return 0;
+ global_ao->no_persistent_volume = true;
+
// ok, now create the buffers
WAVEFORMATEXTENSIBLE wformat;
DSBUFFERDESC dsbpridesc;
diff --git a/libao2/ao_esd.c b/libao2/ao_esd.c
index d5423991bd..e7c6701aa0 100644
--- a/libao2/ao_esd.c
+++ b/libao2/ao_esd.c
@@ -164,6 +164,8 @@ static int init(int rate_hz, int channels, int format, int flags)
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) {
diff --git a/libao2/ao_nas.c b/libao2/ao_nas.c
index fb49c5e60e..d3274df9a5 100644
--- a/libao2/ao_nas.c
+++ b/libao2/ao_nas.c
@@ -424,6 +424,8 @@ static int init(int rate,int channels,int format,int flags)
(void)flags; /* shut up 'unused parameter' warning */
+ global_ao->no_persistent_volume = true;
+
nas_data=malloc(sizeof(struct ao_nas_data));
memset(nas_data, 0, sizeof(struct ao_nas_data));
diff --git a/libao2/ao_openal.c b/libao2/ao_openal.c
index e425b5769c..490aac0eb8 100644
--- a/libao2/ao_openal.c
+++ b/libao2/ao_openal.c
@@ -108,6 +108,7 @@ static int init(int rate, int channels, int format, int flags) {
const opt_t subopts[] = {
{NULL}
};
+ global_ao->no_persistent_volume = true;
if (subopt_parse(ao_subdevice, subopts) != 0) {
print_help();
return 0;
diff --git a/libao2/ao_sdl.c b/libao2/ao_sdl.c
index e9ae7298d5..6ff8b83cb3 100644
--- a/libao2/ao_sdl.c
+++ b/libao2/ao_sdl.c
@@ -135,6 +135,8 @@ static int init(int rate,int channels,int format,int flags){
/* SDL Audio Specifications */
SDL_AudioSpec aspec, obtained;
+ global_ao->no_persistent_volume = true;
+
/* Allocate ring-buffer memory */
buffer = av_fifo_alloc(BUFFSIZE);