[pulseaudio-discuss] [PATCH 07/23] echo-cancel: Fix zeroing of w in AEC_leaky()

Peter Meerwald pmeerw at pmeerw.net
Thu Feb 14 07:10:57 PST 2013


> On Thu, 2013-02-14 at 16:42 +0200, Tanu Kaskinen wrote:
> > On Wed, 2013-02-13 at 17:26 +0100, Peter Meerwald wrote:
> > > From: Peter Meerwald <p.meerwald at bct-electronic.com>
> > > 
> > > bug probably caused by alignment requirement; sizeof(a->w) is a pointer, sizeof(a->w_arr) is an array
> > 
> > The patch is good, I'll apply it. But speaking of w alignment, isn't the
> > alignment code in AEC_init() wrong? Currently it's:
> > 
> > a->w = (REAL *) (((uintptr_t) a->w_arr) + (((uintptr_t) a->w_arr) % 16));
> > 
> > Shouldn't it be
> > 
> > a->w = (REAL *) (((uintptr_t) a->w_arr) - (((uintptr_t) a->w_arr) % 16) + 16 / sizeof(REAL));
> > 
> > ?
> 
> Sorry, dividing by sizeof(REAL) shouldn't be there, since the
> calculation is in byte domain. I got confused by the w_arr declaration.

you are right, the code is super-confusing
I haven't seen uintptr_t before (unsigned int or unsigned long int 
depending on platform, 64 vs. 32 bit)

thank you for having a look!

-- 

Peter Meerwald
+43-664-2444418 (mobile)


More information about the pulseaudio-discuss mailing list