[FFmpeg-cvslog] r21069 - trunk/libavcodec/alsdec.c

Thilo Borgmann thilo.borgmann
Sat Jan 9 12:40:53 CET 2010


Am 09.01.10 12:12, schrieb M?ns Rullg?rd:
> Thilo Borgmann <thilo.borgmann at googlemail.com> writes:
> 
>> Am 08.01.10 12:58, schrieb Thilo Borgmann:
>>> Am 08.01.10 10:35, schrieb Michael Kostylev:
>>>>
>>>> On Thu Jan  7 23:23:28 2010
>>>> thilo.borgmann wrote:
>>>>
>>>>> Optimize short-term prediction by reducing index arithmetic.
>>>>
>>>> Now the lossless-als test returns a different crc on gcc-4.1.x configurations.
>>>> http://fate.multimedia.cx/index.php?build_record=156471
>>>> http://fate.multimedia.cx/index.php?build_record=156456
>>>> http://fate.multimedia.cx/index.php?build_record=156464
>>>> etc.
>>>
>>> Thanks for letting me know!
>>>
>>> Seems like I have to install gcc-4.1.x to see myself.
>>
>> I could reproduce this using gcc-4.1.3 in a virtual box. Seems like
>> another unsigned/signed issue exclusively for 4.1.x versions.
> 
> Did you figure out exactly what was happening?  I'm curious...

I think so:

>        for (sb = -opt_order; sb < 0; sb++)
>            y += MUL64(lpc_cof[sb], raw_samples[sb]);

does not work in gcc 4.1.x if opt_order is an unsigned int.
Debug output showed that the loop is not executed even once then (so I
think sb got a big positive number assigned). A quick test worked with:

>        for (sb = -(int)(opt_order); ...)

so the local opt_order variable has been changed to int now.
Thus, using "-a" is not a good idea if a is unsigned. At least for gcc
4.1.x.

-Thilo



More information about the ffmpeg-cvslog mailing list