summaryrefslogtreecommitdiffstats
path: root/audio/out/ao_opensles.c
diff options
context:
space:
mode:
Diffstat (limited to 'audio/out/ao_opensles.c')
-rw-r--r--audio/out/ao_opensles.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/audio/out/ao_opensles.c b/audio/out/ao_opensles.c
index 8c24320406..1348cebffb 100644
--- a/audio/out/ao_opensles.c
+++ b/audio/out/ao_opensles.c
@@ -79,7 +79,7 @@ static void buffer_callback(SLBufferQueueItf buffer_queue, void *context)
pthread_mutex_lock(&p->buffer_lock);
- delay = 2 * p->frames_per_enqueue / (double)ao->samplerate;
+ delay = p->frames_per_enqueue / (double)ao->samplerate;
delay += p->audio_latency;
ao_read_data(ao, &p->buf, p->frames_per_enqueue,
mp_time_us() + 1000000LL * delay);
@@ -111,6 +111,8 @@ static int init(struct ao *ao)
// This AO only supports two channels at the moment
mp_chmap_from_channels(&ao->channels, 2);
+ // Upstream "Wilhelm" supports only 8000 <= rate <= 192000
+ ao->samplerate = MPCLAMP(ao->samplerate, 8000, 192000);
CHK(slCreateEngine(&p->sl, 0, NULL, 0, NULL, NULL));
CHK((*p->sl)->Realize(p->sl, SL_BOOLEAN_FALSE));
@@ -247,15 +249,17 @@ const struct ao_driver audio_out_opensles = {
.init = init,
.uninit = uninit,
.reset = reset,
- .resume = resume,
+ .start = resume,
.priv_size = sizeof(struct priv),
.priv_defaults = &(const struct priv) {
.buffer_size_in_ms = 250,
},
.options = (const struct m_option[]) {
- OPT_INTRANGE("frames-per-enqueue", frames_per_enqueue, 0, 1, 96000),
- OPT_INTRANGE("buffer-size-in-ms", buffer_size_in_ms, 0, 0, 500),
+ {"frames-per-enqueue", OPT_INT(frames_per_enqueue),
+ M_RANGE(1, 96000)},
+ {"buffer-size-in-ms", OPT_INT(buffer_size_in_ms),
+ M_RANGE(0, 500)},
{0}
},
.options_prefix = "opensles",