summaryrefslogtreecommitdiff
path: root/gst/videoframe_audiolevel
diff options
context:
space:
mode:
authorVivia Nikolaidou <vivia@ahiru.eu>2015-12-14 13:43:10 +0200
committerSebastian Dröge <sebastian@centricular.com>2015-12-14 12:54:59 +0100
commitdc9cf44697c0a89d4a8b10118bcdadc912c01325 (patch)
treeba8871e9cce3c630cc1d8bc4cfb852cbc926a386 /gst/videoframe_audiolevel
parent0b5387b96ce6fa9663368f4266de86bd43d23566 (diff)
downloadgstreamer-plugins-bad-dc9cf44697c0a89d4a8b10118bcdadc912c01325.tar.gz
videoframe-audiolevel: Fix possible division by zero
In update_rms_from_buffer(), division by "frames" wasn't checking whether "frames" is zero. CID 1341519. https://bugzilla.gnome.org/show_bug.cgi?id=759443
Diffstat (limited to 'gst/videoframe_audiolevel')
-rw-r--r--gst/videoframe_audiolevel/gstvideoframe-audiolevel.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/gst/videoframe_audiolevel/gstvideoframe-audiolevel.c b/gst/videoframe_audiolevel/gstvideoframe-audiolevel.c
index 1260529af..ade9966a9 100644
--- a/gst/videoframe_audiolevel/gstvideoframe-audiolevel.c
+++ b/gst/videoframe_audiolevel/gstvideoframe-audiolevel.c
@@ -495,9 +495,11 @@ update_rms_from_buffer (GstVideoFrameAudioLevel * self, GstBuffer * inbuf)
g_value_init (&v, G_TYPE_DOUBLE);
g_value_init (&va, G_TYPE_VALUE_ARRAY);
for (i = 0; i < channels; i++) {
- gdouble rms = sqrt (self->CS[i] / frames);
- if (frames == 0 && self->CS[i] == 0) {
+ gdouble rms;
+ if (frames == 0 || self->CS[i] == 0) {
rms = 0; /* empty buffer */
+ } else {
+ rms = sqrt (self->CS[i] / frames);
}
self->CS[i] = 0.0;
g_value_set_double (&v, rms);