Re: [FFmpeg-devel] [PATCH] avcodec/apedec: fix undefined left shifts of negative numbers

2015-09-29 Thread Ganesh Ajjanagadde
On Tue, Sep 29, 2015 at 11:22 AM, Ronald S. Bultje  wrote:
> Hi,
>
> On Tue, Sep 29, 2015 at 11:04 AM, Ganesh Ajjanagadde 
> wrote:
>
>> On Tue, Sep 29, 2015 at 9:24 AM, Hendrik Leppkes 
>> wrote:
>> > On Sun, Sep 20, 2015 at 4:18 AM, Ganesh Ajjanagadde
>> >  wrote:
>> >> This fixes -Wshift-negative-value reported with clang 3.7+, e.g
>> >>
>> http://fate.ffmpeg.org/log.cgi?time=20150919172459&log=compile&slot=x86_64-darwin-clang-polly-notiling-3.7
>> .
>> >> Note that the patch crucially depends on int >= 32 bits,
>> >> an assumption made in many places in the codebase.
>> >>
>> >> Signed-off-by: Ganesh Ajjanagadde 
>> >> ---
>> >>  libavcodec/apedec.c | 2 +-
>> >>  1 file changed, 1 insertion(+), 1 deletion(-)
>> >>
>> >> diff --git a/libavcodec/apedec.c b/libavcodec/apedec.c
>> >> index 5536e0f..7b34d26 100644
>> >> --- a/libavcodec/apedec.c
>> >> +++ b/libavcodec/apedec.c
>> >> @@ -1281,7 +1281,7 @@ static void do_apply_filter(APEContext *ctx, int
>> version, APEFilter *f,
>> >>  /* Update the adaption coefficients */
>> >>  absres = FFABS(res);
>> >>  if (absres)
>> >> -*f->adaptcoeffs = ((res & (-1<<31)) ^ (-1<<30)) >>
>> >> +*f->adaptcoeffs = ((res & (-(1<<31))) ^ (-(1<<30))) >>
>> >>(25 + (absres <= f->avg*3) + (absres
>> <= f->avg*4/3));
>> >>  else
>> >>  *f->adaptcoeffs = 0;
>> >> --
>> >> 2.5.2
>> >>
>> >
>> > After this patch (GCC 5.2, x86)
>> >
>> > libavcodec/apedec.c: In function 'do_apply_filter':
>> > libavcodec/apedec.c:1284:44: warning: integer overflow in expression
>> > [-Woverflow]
>> >  *f->adaptcoeffs = ((res & (-(1<<31))) ^ (-(1<<30))) >>
>>
>> Good catch - made an off by one error in my assumptions. I don't see a
>> nice, clean way of dealing with -(1 << 31).
>> I propose one of the following:
>> 1. use INT32_MIN.
>> 2. use an explicit binary/hexadecimal mask.
>> 3. use e.g (-2)*(1<<30).
>
>
> 0x8000U is fine.

This should be ok - res will be promoted to unsigned. The bit
representation being identical is not guaranteed, but in the 2's
complement world it should be fine.

>
> Ronald
> ___
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] avcodec/apedec: fix undefined left shifts of negative numbers

2015-09-29 Thread Ronald S. Bultje
Hi,

On Tue, Sep 29, 2015 at 11:04 AM, Ganesh Ajjanagadde 
wrote:

> On Tue, Sep 29, 2015 at 9:24 AM, Hendrik Leppkes 
> wrote:
> > On Sun, Sep 20, 2015 at 4:18 AM, Ganesh Ajjanagadde
> >  wrote:
> >> This fixes -Wshift-negative-value reported with clang 3.7+, e.g
> >>
> http://fate.ffmpeg.org/log.cgi?time=20150919172459&log=compile&slot=x86_64-darwin-clang-polly-notiling-3.7
> .
> >> Note that the patch crucially depends on int >= 32 bits,
> >> an assumption made in many places in the codebase.
> >>
> >> Signed-off-by: Ganesh Ajjanagadde 
> >> ---
> >>  libavcodec/apedec.c | 2 +-
> >>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/libavcodec/apedec.c b/libavcodec/apedec.c
> >> index 5536e0f..7b34d26 100644
> >> --- a/libavcodec/apedec.c
> >> +++ b/libavcodec/apedec.c
> >> @@ -1281,7 +1281,7 @@ static void do_apply_filter(APEContext *ctx, int
> version, APEFilter *f,
> >>  /* Update the adaption coefficients */
> >>  absres = FFABS(res);
> >>  if (absres)
> >> -*f->adaptcoeffs = ((res & (-1<<31)) ^ (-1<<30)) >>
> >> +*f->adaptcoeffs = ((res & (-(1<<31))) ^ (-(1<<30))) >>
> >>(25 + (absres <= f->avg*3) + (absres
> <= f->avg*4/3));
> >>  else
> >>  *f->adaptcoeffs = 0;
> >> --
> >> 2.5.2
> >>
> >
> > After this patch (GCC 5.2, x86)
> >
> > libavcodec/apedec.c: In function 'do_apply_filter':
> > libavcodec/apedec.c:1284:44: warning: integer overflow in expression
> > [-Woverflow]
> >  *f->adaptcoeffs = ((res & (-(1<<31))) ^ (-(1<<30))) >>
>
> Good catch - made an off by one error in my assumptions. I don't see a
> nice, clean way of dealing with -(1 << 31).
> I propose one of the following:
> 1. use INT32_MIN.
> 2. use an explicit binary/hexadecimal mask.
> 3. use e.g (-2)*(1<<30).


0x8000U is fine.

Ronald
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] avcodec/apedec: fix undefined left shifts of negative numbers

2015-09-29 Thread Ganesh Ajjanagadde
On Tue, Sep 29, 2015 at 9:24 AM, Hendrik Leppkes  wrote:
> On Sun, Sep 20, 2015 at 4:18 AM, Ganesh Ajjanagadde
>  wrote:
>> This fixes -Wshift-negative-value reported with clang 3.7+, e.g
>> http://fate.ffmpeg.org/log.cgi?time=20150919172459&log=compile&slot=x86_64-darwin-clang-polly-notiling-3.7.
>> Note that the patch crucially depends on int >= 32 bits,
>> an assumption made in many places in the codebase.
>>
>> Signed-off-by: Ganesh Ajjanagadde 
>> ---
>>  libavcodec/apedec.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/libavcodec/apedec.c b/libavcodec/apedec.c
>> index 5536e0f..7b34d26 100644
>> --- a/libavcodec/apedec.c
>> +++ b/libavcodec/apedec.c
>> @@ -1281,7 +1281,7 @@ static void do_apply_filter(APEContext *ctx, int 
>> version, APEFilter *f,
>>  /* Update the adaption coefficients */
>>  absres = FFABS(res);
>>  if (absres)
>> -*f->adaptcoeffs = ((res & (-1<<31)) ^ (-1<<30)) >>
>> +*f->adaptcoeffs = ((res & (-(1<<31))) ^ (-(1<<30))) >>
>>(25 + (absres <= f->avg*3) + (absres <= 
>> f->avg*4/3));
>>  else
>>  *f->adaptcoeffs = 0;
>> --
>> 2.5.2
>>
>
> After this patch (GCC 5.2, x86)
>
> libavcodec/apedec.c: In function 'do_apply_filter':
> libavcodec/apedec.c:1284:44: warning: integer overflow in expression
> [-Woverflow]
>  *f->adaptcoeffs = ((res & (-(1<<31))) ^ (-(1<<30))) >>

Good catch - made an off by one error in my assumptions. I don't see a
nice, clean way of dealing with -(1 << 31).
I propose one of the following:
1. use INT32_MIN.
2. use an explicit binary/hexadecimal mask.
3. use e.g (-2)*(1<<30).

I have no preference, and will post updated patch within the next few
days, unless someone does the trivial fix and pushes before then.

> ___
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] avcodec/apedec: fix undefined left shifts of negative numbers

2015-09-29 Thread Hendrik Leppkes
On Sun, Sep 20, 2015 at 4:18 AM, Ganesh Ajjanagadde
 wrote:
> This fixes -Wshift-negative-value reported with clang 3.7+, e.g
> http://fate.ffmpeg.org/log.cgi?time=20150919172459&log=compile&slot=x86_64-darwin-clang-polly-notiling-3.7.
> Note that the patch crucially depends on int >= 32 bits,
> an assumption made in many places in the codebase.
>
> Signed-off-by: Ganesh Ajjanagadde 
> ---
>  libavcodec/apedec.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/libavcodec/apedec.c b/libavcodec/apedec.c
> index 5536e0f..7b34d26 100644
> --- a/libavcodec/apedec.c
> +++ b/libavcodec/apedec.c
> @@ -1281,7 +1281,7 @@ static void do_apply_filter(APEContext *ctx, int 
> version, APEFilter *f,
>  /* Update the adaption coefficients */
>  absres = FFABS(res);
>  if (absres)
> -*f->adaptcoeffs = ((res & (-1<<31)) ^ (-1<<30)) >>
> +*f->adaptcoeffs = ((res & (-(1<<31))) ^ (-(1<<30))) >>
>(25 + (absres <= f->avg*3) + (absres <= 
> f->avg*4/3));
>  else
>  *f->adaptcoeffs = 0;
> --
> 2.5.2
>

After this patch (GCC 5.2, x86)

libavcodec/apedec.c: In function 'do_apply_filter':
libavcodec/apedec.c:1284:44: warning: integer overflow in expression
[-Woverflow]
 *f->adaptcoeffs = ((res & (-(1<<31))) ^ (-(1<<30))) >>
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] avcodec/apedec: fix undefined left shifts of negative numbers

2015-09-29 Thread Ganesh Ajjanagadde
On Tue, Sep 29, 2015 at 9:08 AM, Michael Niedermayer  wrote:
> On Tue, Sep 29, 2015 at 08:08:54AM -0400, Ganesh Ajjanagadde wrote:
>> On Tue, Sep 29, 2015 at 4:11 AM, Paul B Mahol  wrote:
>> > On 9/25/15, Ganesh Ajjanagadde  wrote:
>> >> On Sat, Sep 19, 2015 at 10:18 PM, Ganesh Ajjanagadde
>> >>  wrote:
>> >>> This fixes -Wshift-negative-value reported with clang 3.7+, e.g
>> >>> http://fate.ffmpeg.org/log.cgi?time=20150919172459&log=compile&slot=x86_64-darwin-clang-polly-notiling-3.7.
>> >>> Note that the patch crucially depends on int >= 32 bits,
>> >>> an assumption made in many places in the codebase.
>> >>>
>> >>> Signed-off-by: Ganesh Ajjanagadde 
>> >>> ---
>> >>>  libavcodec/apedec.c | 2 +-
>> >>>  1 file changed, 1 insertion(+), 1 deletion(-)
>> >>>
>> >>> diff --git a/libavcodec/apedec.c b/libavcodec/apedec.c
>> >>> index 5536e0f..7b34d26 100644
>> >>> --- a/libavcodec/apedec.c
>> >>> +++ b/libavcodec/apedec.c
>> >>> @@ -1281,7 +1281,7 @@ static void do_apply_filter(APEContext *ctx, int
>> >>> version, APEFilter *f,
>> >>>  /* Update the adaption coefficients */
>> >>>  absres = FFABS(res);
>> >>>  if (absres)
>> >>> -*f->adaptcoeffs = ((res & (-1<<31)) ^ (-1<<30)) >>
>> >>> +*f->adaptcoeffs = ((res & (-(1<<31))) ^ (-(1<<30))) >>
>> >>>(25 + (absres <= f->avg*3) + (absres 
>> >>> <=
>> >>> f->avg*4/3));
>> >>>  else
>> >>>  *f->adaptcoeffs = 0;
>> >>> --
>> >>> 2.5.2
>> >>>
>> >>
>> >> ping
>> >> ___
>> >> ffmpeg-devel mailing list
>> >> ffmpeg-devel@ffmpeg.org
>> >> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>> >>
>> >
>> > I guess its fine if fate passes.
>>
>> Can't confirm that on my end, since I don't know if my fate runs a
>> test for this. Can someone tell me an easy way to check if make fate
>> tests a particular code or note for future reference?
>
> easy way: add abort() in the codepath that changes
> and run fate, if it passes it was not tested

thanks for the tip.

>
>>
>> On the other hand, note that -(1 << n) and (-1 << n) are identical at
>> least on GCC and clang, so I think this should be fine.
>
> yes
>
> applied
>
> thx
>
> [...]
> --
> Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
>
> The bravest are surely those who have the clearest vision
> of what is before them, glory and danger alike, and yet
> notwithstanding go out to meet it. -- Thucydides
>
> ___
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] avcodec/apedec: fix undefined left shifts of negative numbers

2015-09-29 Thread Michael Niedermayer
On Tue, Sep 29, 2015 at 08:08:54AM -0400, Ganesh Ajjanagadde wrote:
> On Tue, Sep 29, 2015 at 4:11 AM, Paul B Mahol  wrote:
> > On 9/25/15, Ganesh Ajjanagadde  wrote:
> >> On Sat, Sep 19, 2015 at 10:18 PM, Ganesh Ajjanagadde
> >>  wrote:
> >>> This fixes -Wshift-negative-value reported with clang 3.7+, e.g
> >>> http://fate.ffmpeg.org/log.cgi?time=20150919172459&log=compile&slot=x86_64-darwin-clang-polly-notiling-3.7.
> >>> Note that the patch crucially depends on int >= 32 bits,
> >>> an assumption made in many places in the codebase.
> >>>
> >>> Signed-off-by: Ganesh Ajjanagadde 
> >>> ---
> >>>  libavcodec/apedec.c | 2 +-
> >>>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>>
> >>> diff --git a/libavcodec/apedec.c b/libavcodec/apedec.c
> >>> index 5536e0f..7b34d26 100644
> >>> --- a/libavcodec/apedec.c
> >>> +++ b/libavcodec/apedec.c
> >>> @@ -1281,7 +1281,7 @@ static void do_apply_filter(APEContext *ctx, int
> >>> version, APEFilter *f,
> >>>  /* Update the adaption coefficients */
> >>>  absres = FFABS(res);
> >>>  if (absres)
> >>> -*f->adaptcoeffs = ((res & (-1<<31)) ^ (-1<<30)) >>
> >>> +*f->adaptcoeffs = ((res & (-(1<<31))) ^ (-(1<<30))) >>
> >>>(25 + (absres <= f->avg*3) + (absres <=
> >>> f->avg*4/3));
> >>>  else
> >>>  *f->adaptcoeffs = 0;
> >>> --
> >>> 2.5.2
> >>>
> >>
> >> ping
> >> ___
> >> ffmpeg-devel mailing list
> >> ffmpeg-devel@ffmpeg.org
> >> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> >>
> >
> > I guess its fine if fate passes.
> 
> Can't confirm that on my end, since I don't know if my fate runs a
> test for this. Can someone tell me an easy way to check if make fate
> tests a particular code or note for future reference?

easy way: add abort() in the codepath that changes
and run fate, if it passes it was not tested

> 
> On the other hand, note that -(1 << n) and (-1 << n) are identical at
> least on GCC and clang, so I think this should be fine.

yes

applied

thx

[...]
-- 
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

The bravest are surely those who have the clearest vision
of what is before them, glory and danger alike, and yet
notwithstanding go out to meet it. -- Thucydides


signature.asc
Description: Digital signature
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] avcodec/apedec: fix undefined left shifts of negative numbers

2015-09-29 Thread Ganesh Ajjanagadde
On Tue, Sep 29, 2015 at 4:11 AM, Paul B Mahol  wrote:
> On 9/25/15, Ganesh Ajjanagadde  wrote:
>> On Sat, Sep 19, 2015 at 10:18 PM, Ganesh Ajjanagadde
>>  wrote:
>>> This fixes -Wshift-negative-value reported with clang 3.7+, e.g
>>> http://fate.ffmpeg.org/log.cgi?time=20150919172459&log=compile&slot=x86_64-darwin-clang-polly-notiling-3.7.
>>> Note that the patch crucially depends on int >= 32 bits,
>>> an assumption made in many places in the codebase.
>>>
>>> Signed-off-by: Ganesh Ajjanagadde 
>>> ---
>>>  libavcodec/apedec.c | 2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/libavcodec/apedec.c b/libavcodec/apedec.c
>>> index 5536e0f..7b34d26 100644
>>> --- a/libavcodec/apedec.c
>>> +++ b/libavcodec/apedec.c
>>> @@ -1281,7 +1281,7 @@ static void do_apply_filter(APEContext *ctx, int
>>> version, APEFilter *f,
>>>  /* Update the adaption coefficients */
>>>  absres = FFABS(res);
>>>  if (absres)
>>> -*f->adaptcoeffs = ((res & (-1<<31)) ^ (-1<<30)) >>
>>> +*f->adaptcoeffs = ((res & (-(1<<31))) ^ (-(1<<30))) >>
>>>(25 + (absres <= f->avg*3) + (absres <=
>>> f->avg*4/3));
>>>  else
>>>  *f->adaptcoeffs = 0;
>>> --
>>> 2.5.2
>>>
>>
>> ping
>> ___
>> ffmpeg-devel mailing list
>> ffmpeg-devel@ffmpeg.org
>> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>
>
> I guess its fine if fate passes.

Can't confirm that on my end, since I don't know if my fate runs a
test for this. Can someone tell me an easy way to check if make fate
tests a particular code or note for future reference?

On the other hand, note that -(1 << n) and (-1 << n) are identical at
least on GCC and clang, so I think this should be fine.

> ___
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] avcodec/apedec: fix undefined left shifts of negative numbers

2015-09-29 Thread Paul B Mahol
On 9/25/15, Ganesh Ajjanagadde  wrote:
> On Sat, Sep 19, 2015 at 10:18 PM, Ganesh Ajjanagadde
>  wrote:
>> This fixes -Wshift-negative-value reported with clang 3.7+, e.g
>> http://fate.ffmpeg.org/log.cgi?time=20150919172459&log=compile&slot=x86_64-darwin-clang-polly-notiling-3.7.
>> Note that the patch crucially depends on int >= 32 bits,
>> an assumption made in many places in the codebase.
>>
>> Signed-off-by: Ganesh Ajjanagadde 
>> ---
>>  libavcodec/apedec.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/libavcodec/apedec.c b/libavcodec/apedec.c
>> index 5536e0f..7b34d26 100644
>> --- a/libavcodec/apedec.c
>> +++ b/libavcodec/apedec.c
>> @@ -1281,7 +1281,7 @@ static void do_apply_filter(APEContext *ctx, int
>> version, APEFilter *f,
>>  /* Update the adaption coefficients */
>>  absres = FFABS(res);
>>  if (absres)
>> -*f->adaptcoeffs = ((res & (-1<<31)) ^ (-1<<30)) >>
>> +*f->adaptcoeffs = ((res & (-(1<<31))) ^ (-(1<<30))) >>
>>(25 + (absres <= f->avg*3) + (absres <=
>> f->avg*4/3));
>>  else
>>  *f->adaptcoeffs = 0;
>> --
>> 2.5.2
>>
>
> ping
> ___
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>

I guess its fine if fate passes.
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] avcodec/apedec: fix undefined left shifts of negative numbers

2015-09-25 Thread Ganesh Ajjanagadde
On Sat, Sep 19, 2015 at 10:18 PM, Ganesh Ajjanagadde
 wrote:
> This fixes -Wshift-negative-value reported with clang 3.7+, e.g
> http://fate.ffmpeg.org/log.cgi?time=20150919172459&log=compile&slot=x86_64-darwin-clang-polly-notiling-3.7.
> Note that the patch crucially depends on int >= 32 bits,
> an assumption made in many places in the codebase.
>
> Signed-off-by: Ganesh Ajjanagadde 
> ---
>  libavcodec/apedec.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/libavcodec/apedec.c b/libavcodec/apedec.c
> index 5536e0f..7b34d26 100644
> --- a/libavcodec/apedec.c
> +++ b/libavcodec/apedec.c
> @@ -1281,7 +1281,7 @@ static void do_apply_filter(APEContext *ctx, int 
> version, APEFilter *f,
>  /* Update the adaption coefficients */
>  absres = FFABS(res);
>  if (absres)
> -*f->adaptcoeffs = ((res & (-1<<31)) ^ (-1<<30)) >>
> +*f->adaptcoeffs = ((res & (-(1<<31))) ^ (-(1<<30))) >>
>(25 + (absres <= f->avg*3) + (absres <= 
> f->avg*4/3));
>  else
>  *f->adaptcoeffs = 0;
> --
> 2.5.2
>

ping
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH] avcodec/apedec: fix undefined left shifts of negative numbers

2015-09-19 Thread Ganesh Ajjanagadde
This fixes -Wshift-negative-value reported with clang 3.7+, e.g
http://fate.ffmpeg.org/log.cgi?time=20150919172459&log=compile&slot=x86_64-darwin-clang-polly-notiling-3.7.
Note that the patch crucially depends on int >= 32 bits,
an assumption made in many places in the codebase.

Signed-off-by: Ganesh Ajjanagadde 
---
 libavcodec/apedec.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavcodec/apedec.c b/libavcodec/apedec.c
index 5536e0f..7b34d26 100644
--- a/libavcodec/apedec.c
+++ b/libavcodec/apedec.c
@@ -1281,7 +1281,7 @@ static void do_apply_filter(APEContext *ctx, int version, 
APEFilter *f,
 /* Update the adaption coefficients */
 absres = FFABS(res);
 if (absres)
-*f->adaptcoeffs = ((res & (-1<<31)) ^ (-1<<30)) >>
+*f->adaptcoeffs = ((res & (-(1<<31))) ^ (-(1<<30))) >>
   (25 + (absres <= f->avg*3) + (absres <= 
f->avg*4/3));
 else
 *f->adaptcoeffs = 0;
-- 
2.5.2

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel