summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--audio/out/ao_alsa.c2
-rw-r--r--audio/out/ao_dsound.c2
-rw-r--r--audio/out/ao_null.c3
-rw-r--r--audio/out/ao_sndio.c3
4 files changed, 6 insertions, 4 deletions
diff --git a/audio/out/ao_alsa.c b/audio/out/ao_alsa.c
index 10580ffbff..6b0c34e320 100644
--- a/audio/out/ao_alsa.c
+++ b/audio/out/ao_alsa.c
@@ -675,7 +675,7 @@ static int get_space(struct ao *ao)
unsigned space = snd_pcm_status_get_avail(status);
if (space > p->buffersize) // Buffer underrun?
space = p->buffersize;
- return space;
+ return space / p->outburst * p->outburst;
alsa_error:
return 0;
diff --git a/audio/out/ao_dsound.c b/audio/out/ao_dsound.c
index 126989936e..da1742e077 100644
--- a/audio/out/ao_dsound.c
+++ b/audio/out/ao_dsound.c
@@ -585,7 +585,7 @@ static int get_space(struct ao *ao)
int space = check_free_buffer_size(ao);
if (space < p->min_free_space)
return 0;
- return (space - p->min_free_space) / ao->sstride;
+ return (space - p->min_free_space) / p->outburst * p->outburst / ao->sstride;
}
/**
diff --git a/audio/out/ao_null.c b/audio/out/ao_null.c
index 2c93cc273b..f12cbdede5 100644
--- a/audio/out/ao_null.c
+++ b/audio/out/ao_null.c
@@ -148,7 +148,8 @@ static int get_space(struct ao *ao)
struct priv *priv = ao->priv;
drain(ao);
- return priv->buffersize - priv->latency - priv->buffered;
+ int samples = priv->buffersize - priv->latency - priv->buffered;
+ return samples / priv->outburst * priv->outburst;
}
static int play(struct ao *ao, void **data, int samples, int flags)
diff --git a/audio/out/ao_sndio.c b/audio/out/ao_sndio.c
index 457da588a1..c75027dffc 100644
--- a/audio/out/ao_sndio.c
+++ b/audio/out/ao_sndio.c
@@ -273,7 +273,8 @@ static int get_space(struct ao *ao)
; /* nothing */
sio_revents(p->hdl, p->pfd);
- return (p->par.bufsz * p->par.pchan * p->par.bps - p->delay) / ao->sstride;
+ int samples = (p->par.bufsz * p->par.pchan * p->par.bps - p->delay) / ao->sstride;
+ return samples / p->par.round * p->par.round;
}
/*