mirror of
https://github.com/ittiam-systems/libxaac.git
synced 2026-07-11 06:39:13 +07:00
Optimisation changes in saturation functions
Changed saturation logic in ixheaacd_add32_sat() and ixheaacd_sub32_sat() functions. Bug: 154143053 Test: xaacdec Change-Id: I2281954a18487c05894b8f5e9b76d1290c943b82
This commit is contained in:
parent
45895b998a
commit
0708a5228b
1 changed files with 4 additions and 10 deletions
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue