From 873d962332b912a0bf78f9deb67275ea2182941b Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Fri, 18 Jun 2021 09:07:55 +0200 Subject: [PATCH] a52: add support for SND_PCM_IOPLUG_FLAG_BOUNDARY_WA Signed-off-by: Jaroslav Kysela --- a52/pcm_a52.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/a52/pcm_a52.c b/a52/pcm_a52.c index 5409b0a..28dbd93 100644 --- a/a52/pcm_a52.c +++ b/a52/pcm_a52.c @@ -453,7 +453,12 @@ static snd_pcm_sframes_t a52_pointer(snd_pcm_ioplug_t *io) while (delay < 0) delay += rec->slave_buffer_size; - return (rec->pointer - delay - rec->remain - rec->filled) % io->buffer_size; + avail = rec->pointer - delay - rec->remain - rec->filled; +#ifdef SND_PCM_IOPLUG_FLAG_BOUNDARY_WA + return avail % rec->boundary; +#else + return avail % io->buffer_size; +#endif } /* set up the fixed parameters of slave PCM hw_parmas */ @@ -1158,6 +1163,9 @@ SND_PCM_PLUGIN_DEFINE_FUNC(a52) rec->io.mmap_rw = 0; rec->io.callback = &a52_ops; rec->io.private_data = rec; +#ifdef SND_PCM_IOPLUG_FLAG_BOUNDARY_WA + rec->io.flags = SND_PCM_IOPLUG_FLAG_BOUNDARY_WA; +#endif #ifdef USE_AVCODEC_FRAME rec->av_format = rec->codec->sample_fmts[0]; rec->is_planar = av_sample_fmt_is_planar(rec->av_format); -- 2.47.1