diff --git a/www/firefox-esr/files/patch-media_libcubeb_src_cubeb__sndio.c b/www/firefox-esr/files/patch-media_libcubeb_src_cubeb__sndio.c new file mode 100644 index 000000000000..f748f4d16390 --- /dev/null +++ b/www/firefox-esr/files/patch-media_libcubeb_src_cubeb__sndio.c @@ -0,0 +1,51 @@ +--- media/libcubeb/src/cubeb_sndio.c.orig 2017-01-12 17:53:15 UTC ++++ media/libcubeb/src/cubeb_sndio.c +@@ -67,7 +67,7 @@ sndio_onmove(void *arg, int delta) + { + cubeb_stream *s = (cubeb_stream *)arg; + +- s->rdpos += delta; ++ s->rdpos += delta * s->bpf; + } + + static void * +@@ -135,7 +135,7 @@ sndio_mainloop(void *arg) + state = CUBEB_STATE_ERROR; + break; + } +- s->wrpos = 0; ++ s->wrpos += n; + start += n; + } + } +@@ -277,10 +287,10 @@ sndio_get_preferred_sample_rate(cubeb * + } + + static int +-sndio_get_min_latency(cubeb * ctx, cubeb_stream_params params, uint32_t * latency_ms) ++sndio_get_min_latency(cubeb * ctx, cubeb_stream_params params, uint32_t * latency_frames) + { + // XXX Not yet implemented. +- *latency_ms = 40; ++ *latency_frames = 2048; + + return CUBEB_OK; + } +@@ -326,7 +336,7 @@ sndio_stream_get_position(cubeb_stream * + { + pthread_mutex_lock(&s->mtx); + DPR("sndio_stream_get_position() %lld\n", s->rdpos); +- *p = s->rdpos; ++ *p = s->rdpos / s->bpf; + pthread_mutex_unlock(&s->mtx); + return CUBEB_OK; + } +@@ -346,7 +356,7 @@ sndio_stream_get_latency(cubeb_stream * + { + // http://www.openbsd.org/cgi-bin/man.cgi?query=sio_open + // in the "Measuring the latency and buffers usage" paragraph. +- *latency = stm->wrpos - stm->rdpos; ++ *latency = (stm->wrpos - stm->rdpos) / stm->bpf; + return CUBEB_OK; + } +