for (count = 0; count < f->samples; count++) {
if (adjustment > 0) {
- fdata[count] *= abs(adjustment);
+ ast_slinear_saturated_multiply(&fdata[count], abs(adjustment));
} else if (adjustment < 0) {
- fdata[count] /= abs(adjustment);
+ ast_slinear_saturated_divide(&fdata[count], abs(adjustment));
}
}
\param s String to be decoded
*/
void ast_uri_decode(char *s);
+
+static inline void ast_slinear_saturated_add(short *input, short value)
+{
+ int res;
+
+ res = *input + value;
+ if (res > 32767)
+ *input = 32767;
+ else if (res < -32767)
+ *input = -32767;
+ else
+ *input = (short) res;
+}
+static inline void ast_slinear_saturated_multiply(short *input, short value)
+{
+ int res;
+
+ res = *input * value;
+ if (res > 32767)
+ *input = 32767;
+ else if (res < -32767)
+ *input = -32767;
+ else
+ *input = (short) res;
+}
+
+static inline void ast_slinear_saturated_divide(short *input, short value)
+{
+ *input /= value;
+}
extern int test_for_thread_safety(void);