[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