This resolves undefined behavior, and also silences -Wabsolute-value in clang 3.5+.
Signed-off-by: Ganesh Ajjanagadde <gajjanaga...@gmail.com> --- libavcodec/flashsv2enc.c | 6 +++--- libavfilter/vf_hqx.c | 6 +++--- libavfilter/vf_xbr.c | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/libavcodec/flashsv2enc.c b/libavcodec/flashsv2enc.c index c2c00f4..dfdd074 100644 --- a/libavcodec/flashsv2enc.c +++ b/libavcodec/flashsv2enc.c @@ -415,9 +415,9 @@ static inline unsigned int chroma_diff(unsigned int c1, unsigned int c2) unsigned int t1 = (c1 & 0x000000ff) + ((c1 & 0x0000ff00) >> 8) + ((c1 & 0x00ff0000) >> 16); unsigned int t2 = (c2 & 0x000000ff) + ((c2 & 0x0000ff00) >> 8) + ((c2 & 0x00ff0000) >> 16); - return abs(t1 - t2) + abs((c1 & 0x000000ff) - (c2 & 0x000000ff)) + - abs(((c1 & 0x0000ff00) >> 8) - ((c2 & 0x0000ff00) >> 8)) + - abs(((c1 & 0x00ff0000) >> 16) - ((c2 & 0x00ff0000) >> 16)); + return FFUABSDIFF(t1, t2) + FFUABSDIFF(c1 & 0x000000ff, c2 & 0x000000ff) + + FFUABSDIFF((c1 & 0x0000ff00) >> 8 , (c2 & 0x0000ff00) >> 8) + + FFUABSDIFF((c1 & 0x00ff0000) >> 16, (c2 & 0x00ff0000) >> 16); } static inline int pixel_color7_fast(Palette * palette, unsigned c15) diff --git a/libavfilter/vf_hqx.c b/libavfilter/vf_hqx.c index fa15d9c..0178793 100644 --- a/libavfilter/vf_hqx.c +++ b/libavfilter/vf_hqx.c @@ -65,9 +65,9 @@ static av_always_inline int yuv_diff(uint32_t yuv1, uint32_t yuv2) #define YMASK 0xff0000 #define UMASK 0x00ff00 #define VMASK 0x0000ff - return abs((yuv1 & YMASK) - (yuv2 & YMASK)) > (48 << 16) || - abs((yuv1 & UMASK) - (yuv2 & UMASK)) > ( 7 << 8) || - abs((yuv1 & VMASK) - (yuv2 & VMASK)) > ( 6 << 0); + return FFUABSDIFF(yuv1 & YMASK, yuv2 & YMASK) > (48 << 16) || + FFUABSDIFF(yuv1 & UMASK, yuv2 & UMASK) > ( 7 << 8) || + FFUABSDIFF(yuv1 & VMASK, yuv2 & VMASK) > ( 6 << 0); } /* (c1*w1 + c2*w2) >> s */ diff --git a/libavfilter/vf_xbr.c b/libavfilter/vf_xbr.c index 38c3b70..f18ea0f 100644 --- a/libavfilter/vf_xbr.c +++ b/libavfilter/vf_xbr.c @@ -69,9 +69,9 @@ static uint32_t pixel_diff(uint32_t x, uint32_t y, const uint32_t *r2y) uint32_t yuv1 = r2y[x & 0xffffff]; uint32_t yuv2 = r2y[y & 0xffffff]; - return (abs((yuv1 & YMASK) - (yuv2 & YMASK)) >> 16) + - (abs((yuv1 & UMASK) - (yuv2 & UMASK)) >> 8) + - abs((yuv1 & VMASK) - (yuv2 & VMASK)); + return (FFUABSDIFF(yuv1 & YMASK, yuv2 & YMASK) >> 16) + + (FFUABSDIFF(yuv1 & UMASK, yuv2 & UMASK) >> 8) + + FFUABSDIFF(yuv1 & VMASK, yuv2 & VMASK); } #define ALPHA_BLEND_128_W(a, b) ((((a) & LB_MASK) >> 1) + (((b) & LB_MASK) >> 1)) -- 2.5.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel