summaryrefslogtreecommitdiff
path: root/gst/audiovisualizers
diff options
context:
space:
mode:
authorGreg Rutz <greg@gsr-tek.com>2013-03-11 21:55:28 -0600
committerTim-Philipp Müller <tim@centricular.net>2013-03-13 00:40:24 +0000
commitc66fd54e78fbc777e928ad82d6cb5064676ab7ea (patch)
tree66630c676d03ea9ec1d793069cea7dbf0803bd18 /gst/audiovisualizers
parent4eb960d6c348216f4ba946b8ae3e3b64a54c7766 (diff)
downloadgstreamer-plugins-bad-c66fd54e78fbc777e928ad82d6cb5064676ab7ea.tar.gz
audiovisualizer: fix improper video frame clear operation
The current code is memsetting the GstVideoFrame.data address to 0s (which causes a segfault). This member is actually an array of data buffers (one for each plane). This fix iterates over each data plane to clear them all. https://bugzilla.gnome.org/show_bug.cgi?id=695655
Diffstat (limited to 'gst/audiovisualizers')
-rw-r--r--gst/audiovisualizers/gstaudiovisualizer.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gst/audiovisualizers/gstaudiovisualizer.c b/gst/audiovisualizers/gstaudiovisualizer.c
index 1274a47f2..6fdb18ed3 100644
--- a/gst/audiovisualizers/gstaudiovisualizer.c
+++ b/gst/audiovisualizers/gstaudiovisualizer.c
@@ -964,7 +964,11 @@ gst_audio_visualizer_chain (GstPad * pad, GstObject * parent,
gst_video_frame_copy (&outframe, &scope->tempframe);
} else {
/* gst_video_frame_clear() or is output frame already cleared */
- memset (outframe.data, 0, scope->vinfo.size);
+ gint i;
+
+ for (i = 0; i < scope->vinfo.finfo->n_planes; i++) {
+ memset (outframe.data[i], 0, outframe.map[i].size);
+ }
}
gst_buffer_replace_all_memory (inbuf,