On 04/01/2013 12:38 PM, Tanu Kaskinen wrote: > On Fri, 2013-03-29 at 16:56 +0100, Peter Meerwald wrote: >> + case PA_SAMPLE_S16NE: >> + { >> + int16_t *d = (int16_t *) dst, *s = (int16_t *) src; >> + >> + for (i = n>> 2; i> 0; i--) { >> + d[0] += (s[0] + s[1])/2; >> + d[1] += (s[2] + s[3])/2; >> + d[2] += (s[4] + s[5])/2; >> + d[3] += (s[6] + s[7])/2; > > You probably meant '=', not '+='? > > Also, s[0] + s[1] can overflow, so the inputs should be divided > individually before summing. Or the inputs could be cast to uint32_t, which I guess would be better than dividing multiple times. -- Tanu