Ah, I assumed that the volume would be stored in a 32 bit integer, and be represented as a signed Q31 fixed point. Sorry for the noise.
- Wolfgang -----Original Message----- From: malc [mailto:av1...@comtv.ru] Sent: Wednesday, January 12, 2011 12:15 AM To: Michael Walle Cc: Schildbach, Wolfgang; Jan Kiszka; qemu-devel@nongnu.org Subject: Re: [PATCH] audio: split sample conversion and volumemixing On Tue, 11 Jan 2011, Michael Walle wrote: > > Hi Wolfgang, > > > The fixed point path for scaling in mixeng_volume() seems to be > > under by a factor of two, IMHO. The right shift should be by 31, not > > 32. (Because the volume, which I assume is a signed 32 bit integer, > > can be 0.5 at most). > I must admit i just copied the shift from the original define. But the > volume and the samples are signed 64bit values. > > @malc: any comments on this? I don't understand the problem, the result of multiplication is converted from 32.32 fixed point to integer by shifting right by 32.. It escapes me how 31 fits here. > > > Does the code work with FLOAT_MIXENG undefined? > At least for my input voice, it works with integer arithmetic. > > -- mailto:av1...@comtv.ru