[FFmpeg-devel] [PATCH] ALS: Solve Issue 1657
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:
>>> 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
>> 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
> 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...
More information about the ffmpeg-devel