From 0708a5228bb86fb87d6df62aa91b34bc01e6292e Mon Sep 17 00:00:00 2001 From: Sushanth Patil Date: Tue, 29 Oct 2019 10:25:01 +0530 Subject: [PATCH] Optimisation changes in saturation functions Changed saturation logic in ixheaacd_add32_sat() and ixheaacd_sub32_sat() functions. Bug: 154143053 Test: xaacdec Change-Id: I2281954a18487c05894b8f5e9b76d1290c943b82 --- decoder/ixheaacd_basic_ops32.h | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/decoder/ixheaacd_basic_ops32.h b/decoder/ixheaacd_basic_ops32.h index f9a5299..365bfbe 100644 --- a/decoder/ixheaacd_basic_ops32.h +++ b/decoder/ixheaacd_basic_ops32.h @@ -180,11 +180,8 @@ static PLATFORM_INLINE WORD32 ixheaacd_add32_sat(WORD32 a, WORD32 b) { sum = (WORD64)a + (WORD64)b; - if ((((WORD32)a ^ (WORD32)b) & (WORD32)MIN_32) == 0) { - if (((WORD32)sum ^ (WORD32)a) & (WORD32)MIN_32) { - sum = (a < 0) ? MIN_32 : MAX_32; - } - } + if (sum >= MAX_32) return MAX_32; + if (sum <= MIN_32) return MIN_32; return (WORD32)sum; } @@ -212,11 +209,8 @@ static PLATFORM_INLINE WORD32 ixheaacd_sub32_sat(WORD32 a, WORD32 b) { diff = (WORD64)a - (WORD64)b; - if ((((WORD32)a ^ (WORD32)b) & (WORD32)MIN_32) != 0) { - if (((WORD32)diff ^ (WORD32)a) & (WORD32)MIN_32) { - diff = (a < 0L) ? MIN_32 : MAX_32; - } - } + if (diff >= MAX_32) return MAX_32; + if (diff <= MIN_32) return MIN_32; return (WORD32)diff; }