]> git.alsa-project.org Git - alsa-plugins.git/commitdiff
a52: add support for SND_PCM_IOPLUG_FLAG_BOUNDARY_WA
authorJaroslav Kysela <perex@perex.cz>
Fri, 18 Jun 2021 07:07:55 +0000 (09:07 +0200)
committerJaroslav Kysela <perex@perex.cz>
Fri, 18 Jun 2021 07:09:59 +0000 (09:09 +0200)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
a52/pcm_a52.c

index 5409b0a0677d3854fe2da6ccc0659b2a5e895dea..28dbd9393b5e0a1203040845e02b2dd635d78bad 100644 (file)
@@ -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);