On Thu, 2012-04-26 at 08:20 +0200, David Henningsson wrote:
> >   size_t pa_resampler_result(pa_resampler *r, size_t in_length) {
> >       pa_assert(r);
> >
> > -    /* Let's round up here */
> > -
> > -    return (((((in_length + r->i_fz-1) / r->i_fz) * r->o_ss.rate) + 
> > r->i_ss.rate-1) / r->i_ss.rate) * r->o_fz;
> > +    /* Let's round up here to ensure that the caller will always allocate 
> > big
> > +     * enough output buffer. */
> > +    return (((((in_length + r->i_fz-1) / r->i_fz + r->leftover_buf.length 
> > / r->o_fz) * r->o_ss.rate) + r->i_ss.rate-1) / r->i_ss.rate) * r->o_fz;
> 
> A temporary variable or two here would increase readability and ease 
> debugging.
> 
> >   }
> >
> >   size_t pa_resampler_max_block_size(pa_resampler *r) {
> > @@ -413,7 +428,7 @@ size_t pa_resampler_max_block_size(pa_resampler *r) {
> >
> >       fs = pa_frame_size(&ss);
> >
> > -    return (((block_size_max/fs - 
> > EXTRA_FRAMES)*r->i_ss.rate)/ss.rate)*r->i_fz;
> > +    return (((block_size_max / fs - EXTRA_FRAMES - r->leftover_buf.length 
> > / r->o_fz) * r->i_ss.rate) / ss.rate) * r->i_fz;
> 
> A temporary variable or two here would increase readability and ease 
> debugging.

Good suggestions. There was also wrong frame size used in these
calculations: the leftover length needs to be divided by working frame
size instead of output frame size.

-- 
Tanu

_______________________________________________
pulseaudio-discuss mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss

Reply via email to