Hi On Mon, Feb 6, 2023 at 10:52 PM Volker Rümelin <vr_q...@t-online.de> wrote: > > Read the maximum possible number of audio frames instead of the > minimum necessary number of frames when the audio stream is > downsampled and the output buffer is limited. This makes the > function symmetrical to upsampling when the input buffer is > limited. The maximum possible number of frames is written here. > > With this change it's easier to calculate the exact number of > audio frames the resample function will read or write. These two > functions will be introduced later. > > Acked-by: Mark Cave-Ayland <mark.cave-ayl...@ilande.co.uk> > Signed-off-by: Volker Rümelin <vr_q...@t-online.de>
a bit hard to review, but looks ok Acked-by: Marc-André Lureau <marcandre.lur...@redhat.com> > --- > audio/rate_template.h | 21 +++++++++++++-------- > 1 file changed, 13 insertions(+), 8 deletions(-) > > diff --git a/audio/rate_template.h b/audio/rate_template.h > index b432719ebb..6648f0d2e5 100644 > --- a/audio/rate_template.h > +++ b/audio/rate_template.h > @@ -40,8 +40,6 @@ void NAME (void *opaque, struct st_sample *ibuf, struct > st_sample *obuf, > int64_t t; > #endif > > - ilast = rate->ilast; > - > istart = ibuf; > iend = ibuf + *isamp; > > @@ -59,15 +57,17 @@ void NAME (void *opaque, struct st_sample *ibuf, struct > st_sample *obuf, > return; > } > > - while (obuf < oend) { > + /* without input samples, there's nothing to do */ > + if (ibuf >= iend) { > + *osamp = 0; > + return; > + } > > - /* Safety catch to make sure we have input samples. */ > - if (ibuf >= iend) { > - break; > - } > + ilast = rate->ilast; > > - /* read as many input samples so that ipos > opos */ > + while (true) { > > + /* read as many input samples so that ipos > opos */ > while (rate->ipos <= (rate->opos >> 32)) { > ilast = *ibuf++; > rate->ipos++; > @@ -78,6 +78,11 @@ void NAME (void *opaque, struct st_sample *ibuf, struct > st_sample *obuf, > } > } > > + /* make sure that the next output sample can be written */ > + if (obuf >= oend) { > + break; > + } > + > icur = *ibuf; > > /* wrap ipos and opos around long before they overflow */ > -- > 2.35.3 > -- Marc-André Lureau