blob: 90bfba990cbc057bd54090a89f0d083564bf80d8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
From 43549773608b4f58dc664b7115a1ef0dcb32f251 Mon Sep 17 00:00:00 2001
From: Haihua Hu <jared.hu@nxp.com>
Date: Tue, 14 Jun 2016 13:48:09 +0800
Subject: [PATCH 1/2] [glplugin]gleffects: fix little rectangel appears at the
center when use squeeze and tunnel effects
These two shader will calculate the verctor length and use it as denominator.
But length could be zero which will cause undefine behaviour. Add protection for
this condition
Upstream-Status: Backport [1.8.3]
https://bugzilla.gnome.org/show_bug.cgi?id=767635
Signed-off-by: Haihua Hu <jared.hu@nxp.com>
---
ext/gl/effects/gstgleffectssources.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/ext/gl/effects/gstgleffectssources.c b/ext/gl/effects/gstgleffectssources.c
index 6bdc155..3e87b8b 100644
--- a/ext/gl/effects/gstgleffectssources.c
+++ b/ext/gl/effects/gstgleffectssources.c
@@ -100,7 +100,8 @@ const gchar *squeeze_fragment_source_gles2 =
"void main () {"
" vec2 texturecoord = v_texcoord.xy;"
" vec2 normcoord = texturecoord - 0.5;"
- " float r = length (normcoord);"
+ /* Add a very small value to length otherwise it could be 0 */
+ " float r = length (normcoord)+0.01;"
" r = pow(r, 0.40)*1.3;"
" normcoord = normcoord / r;"
" texturecoord = (normcoord + 0.5);"
@@ -136,7 +137,8 @@ const gchar *tunnel_fragment_source_gles2 =
* rect textures */
" normcoord = (texturecoord - 0.5);"
" float r = length(normcoord);"
- " normcoord *= clamp (r, 0.0, 0.275) / r;"
+ " if (r > 0.0)"
+ " normcoord *= clamp (r, 0.0, 0.275) / r;"
" texturecoord = normcoord + 0.5;"
" gl_FragColor = texture2D (tex, texturecoord);"
"}";
--
1.9.1
|