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

Reply via email to