diff options
Diffstat (limited to 'audio/out/ao_opensles.c')
-rw-r--r-- | audio/out/ao_opensles.c | 12 |
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", |