basetextoverlay: FIX crash if padding greater than video size
authorPrashant Gotarne <ps.gotarne@samsung.com>
Thu, 3 Sep 2015 03:28:08 +0000 (08:58 +0530)
committerNicolas Dufresne <nicolas.dufresne@collabora.co.uk>
Thu, 3 Sep 2015 14:15:39 +0000 (10:15 -0400)
Skipping rendering of textimage if overlay is completely
outside video frame.

https://bugzilla.gnome.org/show_bug.cgi?id=754429

ext/pango/gstbasetextoverlay.c

index 54d9d1a..b373ef7 100644 (file)
@@ -1673,6 +1673,19 @@ gst_base_text_overlay_render_pangocairo (GstBaseTextOverlay * overlay,
   height = ceil (height * overlay->render_scale);
   scalef *= overlay->render_scale;
 
+  if (width <= 0 || height <= 0) {
+    g_mutex_unlock (GST_BASE_TEXT_OVERLAY_GET_CLASS (overlay)->pango_lock);
+    GST_DEBUG_OBJECT (overlay,
+        "Overlay is outside video frame. Skipping text rendering");
+    return;
+  }
+
+  if (unscaled_height <= 0 || unscaled_width <= 0) {
+    g_mutex_unlock (GST_BASE_TEXT_OVERLAY_GET_CLASS (overlay)->pango_lock);
+    GST_DEBUG_OBJECT (overlay,
+        "Overlay is outside video frame. Skipping text rendering");
+    return;
+  }
   /* Prepare the transformation matrix. Note that the transformation happens
    * in reverse order. So for horizontal text, we will translate and then
    * scale. This is important to understand which scale shall be used. */