Currently, when the Asterisk calculates rtp statistics, it uses
sample_count as a unsigned integer parameter. This would be fine
for most of cases, but in case of large enough number of sample_count,
this might be causing the divide by zero error.
ASTERISK-28321
Change-Id: If7e0629abaceddd2166eb012456c53033ea26249
normdev = normdev * sample_count + sample;
sample_count++;
+ /*
+ It's possible the sample_count hits the maximum value and back to 0.
+ Set to 1 to prevent the divide by zero crash if the sample_count is 0.
+ */
+ if (sample_count == 0) {
+ sample_count = 1;
+ }
+
return normdev / sample_count;
}
stddev = sample_count * stddev;
sample_count++;
+ /*
+ It's possible the sample_count hits the maximum value and back to 0.
+ Set to 1 to prevent the divide by zero crash if the sample_count is 0.
+ */
+ if (sample_count == 0) {
+ sample_count = 1;
+ }
+
return stddev +
( sample_count * SQUARE( (sample - normdev) / sample_count ) ) +
( SQUARE(sample - normdev_curent) / sample_count );