[FFmpeg-devel] [PATCH] ALS: Solve Issue 1657

Thilo Borgmann thilo.borgmann
Tue Jan 5 02:23:09 CET 2010


Am 05.01.10 01:43, schrieb Michael Niedermayer:
> On Tue, Jan 05, 2010 at 12:34:53AM +0100, Thilo Borgmann wrote:
>> Am 05.01.10 00:30, schrieb Thilo Borgmann:
>>> Hi,
>>>
>>> issue 1657 seems to be caused by negative indices used in [].
>>> See: http://roundup.ffmpeg.org/roundup/ffmpeg/issue1657
>>>
>>> Using *() resolves this issue.
>>>
>>> Tested with gcc 4.0 on MacOS 10.6. There were other versions/compilers
>>> mentioned in roundup, maybe these could be tested by someone (you)?
>>>
>>> I'm sorry, my svn still seems to be broken and produces unusable patches
>>> (%ld...). Nevertheless I can apply them if the workaround is ok.
>>>
>>
>> Some artifacts left in als_data.h. Ignore the old patch, updated patch
>> attached.
>>
>> -Thilo
> 
>>  alsdec.c |    4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)
>> 987821d84540420efa6f2e67be17094074e638f8  als_issue1657.rev1.patch
>> Index: libavcodec/alsdec.c
>> ===================================================================
>> --- libavcodec/alsdec.c	(Revision 21025)
>> +++ libavcodec/alsdec.c	(Arbeitskopie)
>> @@ -%ld,%ld +%ld,%ld @@
>>              y = 1 << 19;
>>  
>>              for (sb = 0; sb < smp; sb++)
>> -                y += MUL64(lpc_cof[sb],raw_samples[smp - (sb + 1)]);
>> +                y += MUL64(lpc_cof[sb], *(raw_samples + smp - (sb + 1)));
> 
> patch ok

Applied.

> 
> independant of this, it could be that if lpc_cof was reversed
> 
> for (sb = 0; sb < smp; sb++)
>     y += MUL64(lpc_cof[sb], raw_samples[sb]);

In the second case the index has to be negative which is not possible
with this approach.
On the other hand, the first loop assures that the index is always >= 0
by for(; sb < smp;) - so the first one has been changed to the *()-form
for readability only...

-Thilo



More information about the ffmpeg-devel mailing list