aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSushanth Patil <sushanth.patil@ittiam.com>2019-10-29 10:25:01 +0530
committerRay Essick <essick@google.com>2020-04-15 13:06:33 -0700
commit0708a5228bb86fb87d6df62aa91b34bc01e6292e (patch)
treecc7d3e023083e44d8c1f4da34aca3ca72c9fcad6
parent45895b998add7dea8f6f9d24c4c7b5a2b5569a47 (diff)
downloadlibxaac-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.h14
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;
}