diff options
author | Sushanth Patil <sushanth.patil@ittiam.com> | 2019-10-29 10:25:01 +0530 |
---|---|---|
committer | Ray Essick <essick@google.com> | 2020-04-15 13:06:33 -0700 |
commit | 0708a5228bb86fb87d6df62aa91b34bc01e6292e (patch) | |
tree | cc7d3e023083e44d8c1f4da34aca3ca72c9fcad6 | |
parent | 45895b998add7dea8f6f9d24c4c7b5a2b5569a47 (diff) | |
download | libxaac-0708a5228bb86fb87d6df62aa91b34bc01e6292e.tar.gz |
Optimisation changes in saturation functions
Changed saturation logic in ixheaacd_add32_sat()
and ixheaacd_sub32_sat() functions.
Bug: 154143053
Test: xaacdec
Change-Id: I2281954a18487c05894b8f5e9b76d1290c943b82
-rw-r--r-- | decoder/ixheaacd_basic_ops32.h | 14 |
1 files 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; } |