summaryrefslogtreecommitdiffstats
path: root/audio/out/ao_rsound.c
diff options
context:
space:
mode:
Diffstat (limited to 'audio/out/ao_rsound.c')
-rw-r--r--audio/out/ao_rsound.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/audio/out/ao_rsound.c b/audio/out/ao_rsound.c
index 162fb21feb..123ee14ef5 100644
--- a/audio/out/ao_rsound.c
+++ b/audio/out/ao_rsound.c
@@ -114,6 +114,8 @@ static int init(struct ao *ao)
rsd_set_param(priv->rd, RSD_SAMPLERATE, &ao->samplerate);
rsd_set_param(priv->rd, RSD_CHANNELS, &ao->channels.num);
+ ao->format = af_fmt_from_planar(ao->format);
+
int rsd_format = set_format(ao);
rsd_set_param(priv->rd, RSD_FORMAT, &rsd_format);
@@ -161,13 +163,13 @@ static void audio_resume(struct ao *ao)
static int get_space(struct ao *ao)
{
struct priv *priv = ao->priv;
- return rsd_get_avail(priv->rd);
+ return rsd_get_avail(priv->rd) / ao->sstride;
}
-static int play(struct ao *ao, void *data, int len, int flags)
+static int play(struct ao *ao, void **data, int samples, int flags)
{
struct priv *priv = ao->priv;
- return rsd_write(priv->rd, data, len);
+ return rsd_write(priv->rd, data[0], samples * ao->sstride) / ao->sstride;
}
static float get_delay(struct ao *ao)