Jaroslav Kysela wrote:
> I've fixed the normalization (hopefully) for int64 and float values. Could
> you, guys, verify new code?

In the following test

        else if (sum.as_xxx < (int64_t)-0x80000000)

0x80000000 is an unsigned integer, and, according to C rules, negating an
unsigned integer results in an unsigned integer, in this case 0x80000000.
Converting this to 64 bits yields 0x0000000080000000. *Ouch*

Replacing both tests with

        else if (sum.as_xxx < (int64_t)(int32_t)0x80000000)

should finally work.


And
> > > (...) the following code snippet
> > >
> > >         add_int64_att:
> > >                 sum.as_sint64 += (u_int64_t) sample * ttp->as_int;
> > >
still treats the sample as unsigned.


Clemens



-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
PC Mods, Computing goodies, cases & more
http://thinkgeek.com/sf
_______________________________________________
Alsa-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-devel

Reply via email to