[Speex-dev] Major internal changes, TI DSP build change

Jean-Marc Valin Jean-Marc.Valin at USherbrooke.ca
Fri Apr 21 20:55:40 PDT 2006

> The C5x and C6x output diverges in build 10143, which has log message "lpc 
> floor converted to fixed-point."  Also, the measured SNR changed from 11.05 
> in builds 9854-10141 to 9.22 and 9.24 in 10143.

Actually, build 10143 introduced another bug, that was the reason for
the release. 

> There is just four lines in modes.c which declare the constant, and one line 
> changed in nb_celp.c and sb_celp.c which use the constant.  Looking at 
> nb_mode, QCONT16(.0002,15) evaluates to 0x3FF9 on the C55 and 0x4006 on the 
> C6x.  When I patch the value 0x4006 into the C55 build, the output matches 
> the C6x.  The problem is that 2^15 evaluates to -32768 on the C55 and 32768 
> on the C6x.

Right on!

> Applying our friend EXTEND32 causes the constant to evaluate correctly.  In 
> fixed_generic.h,
> #define QCONST16(x,bits) 
> ((spx_word16_t)((x)*((EXTEND32(1))<<(bits))+((EXTEND32(1))<<((bits)-1))))

Actually, this is a case for a simple cast to (spx_word32_t) because
QCONST can be used in a static initialization and EXTEND32 *can* be
defined as a function (e.g. for fixed-point debug). 

> Later I will check if this change makes these two builds match in the latest 
> SVN code.

I fixed it in svn. Could you check that?

> The MIPs are not a problem for me, and the C55 does very well on 32x16 
> multiplies, so I have not played with PRECISION16 since last year.

Does the C55 have a 32x16 multiplier or do you mean it handles my
emulation of it well?

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Ceci est une partie de message
	=?ISO-8859-1?Q?num=E9riquement?= =?ISO-8859-1?Q?_sign=E9e?=
Url : http://lists.xiph.org/pipermail/speex-dev/attachments/20060422/067dce30/attachment.pgp

More information about the Speex-dev mailing list