diff options
| -rw-r--r-- | sound/rate.h | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/sound/rate.h b/sound/rate.h index e1f72065bd..364c14f763 100644 --- a/sound/rate.h +++ b/sound/rate.h @@ -42,14 +42,23 @@ typedef uint32 st_rate_t; #define ST_SUCCESS (0) static inline void clampedAdd(int16& a, int b) { - register int val = a + b; + register int val; +#ifdef OUTPUT_UNSIGNED_AUDIO + val = (a ^ 0x8000) + b; +#else + val = a + b; +#endif if (val > ST_SAMPLE_MAX) val = ST_SAMPLE_MAX; else if (val < ST_SAMPLE_MIN) val = ST_SAMPLE_MIN; +#ifdef OUTPUT_UNSIGNED_AUDIO + a = ((int16)val) ^ 0x8000; +#else a = val; +#endif } // Q&D hack to get this SOX stuff to work |
