libvisual: fix crashes and invalid writes in totem
authorTim-Philipp Müller <tim@centricular.net>
Sat, 8 Sep 2012 21:56:56 +0000 (22:56 +0100)
committerTim-Philipp Müller <tim@centricular.net>
Sat, 8 Sep 2012 22:03:16 +0000 (23:03 +0100)
This reverts part of "visual: enable commented out code again."
(commit 8222ba16c8f671dc03e24e7b60e3e703046e58c1).

The shader code does indeed look broken (or rather,
it makes assumptions that are not necessarily true here,
namly that pixel stride is 4, for example), which
makes totem very crashy and causes other weird behaviour.

Also see https://bugzilla.gnome.org/show_bug.cgi?id=683527

ext/libvisual/gstaudiovisualizer.c

index ecdd21e..458aa09 100644 (file)
@@ -978,8 +978,10 @@ gst_audio_visualizer_chain (GstPad * pad, GstObject * parent,
         GST_ERROR_OBJECT (scope, "render failed");
         ret = GST_FLOW_ERROR;
       } else {
-        /* run various post processing (shading and geometri transformation */
-        if (scope->shader) {
+        /* run various post processing (shading and geometric transformation) */
+        /* FIXME: SHADER assumes 32bpp */
+        if (scope->shader &&
+            GST_VIDEO_INFO_COMP_PSTRIDE (&scope->vinfo, 0) == 4) {
           scope->shader (scope, &outframe, &scope->tempframe);
         }
       }