summaryrefslogtreecommitdiffstats
path: root/recipes-multimedia
diff options
context:
space:
mode:
authorYuqing Zhu <carol.zhu@nxp.com>2016-10-13 09:59:52 +0800
committerOtavio Salvador <otavio@ossystems.com.br>2016-10-27 10:36:28 -0200
commitffe5d3c435a7f2056a1a594d195d624c20e40e0a (patch)
tree7891605591e46fd390937b1c7136865065403ba7 /recipes-multimedia
parent7d3e10c59af9aef7e672b906fa29203672772c1f (diff)
downloadmeta-freescale-ffe5d3c435a7f2056a1a594d195d624c20e40e0a.tar.gz
gstreamer1.0-plugins-bad: convert YUV to RGB using directviv
Add a property "disable_passthrough" in glcolorconvert for enable/disable passthrough. When need convert YUV to RGB with directviv, set it to be TRUE. Signed-off-by: Yuqing Zhu <carol.zhu@nxp.com> Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
Diffstat (limited to 'recipes-multimedia')
-rw-r--r--recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0005-glcolorconvert-convert-YUV-to-RGB-use-directviv.patch170
-rw-r--r--recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_%.bbappend1
2 files changed, 171 insertions, 0 deletions
diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0005-glcolorconvert-convert-YUV-to-RGB-use-directviv.patch b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0005-glcolorconvert-convert-YUV-to-RGB-use-directviv.patch
new file mode 100644
index 00000000..aac204d1
--- /dev/null
+++ b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0005-glcolorconvert-convert-YUV-to-RGB-use-directviv.patch
@@ -0,0 +1,170 @@
1From 67d11594e693b60797c2bae1bcfa4e8bafcf4c9a Mon Sep 17 00:00:00 2001
2From: Haihua Hu <b55597@freescale.com>
3Date: Thu, 25 Feb 2016 13:53:20 +0800
4Subject: [PATCH 17/18] glcolorconvert: convert YUV to RGB use directviv
5
6Add a property "disable_passthrough" in glcolorconvert for enable/disable passthrough.
7When need convert YUV to RGB with directviv, set it to be TRUE.
8
9Upstream-Status: Inappropriate [i.MX specific]
10
11Signed-off-by: Haihua Hu <b55597@freescale.com>
12
13Conflicts:
14 gst-libs/gst/gl/gstglcolorconvert.c
15
16Signed-off-by: Lyon Wang <lyon.wang@freescale.com>
17---
18 ext/gl/gstglcolorconvertelement.c | 70 +++++++++++++++++++++++++++++++++++++
19 ext/gl/gstglcolorconvertelement.h | 1 +
20 gst-libs/gst/gl/gstglcolorconvert.c | 6 +++-
21 3 files changed, 76 insertions(+), 1 deletion(-)
22
23diff --git a/ext/gl/gstglcolorconvertelement.c b/ext/gl/gstglcolorconvertelement.c
24index bd4fbeb..9108b0a 100644
25--- a/ext/gl/gstglcolorconvertelement.c
26+++ b/ext/gl/gstglcolorconvertelement.c
27@@ -35,6 +35,14 @@ G_DEFINE_TYPE_WITH_CODE (GstGLColorConvertElement, gst_gl_color_convert_element,
28 "glconvertelement", 0, "convert");
29 );
30
31+enum
32+{
33+ GL_COLOR_CONVERT_PROP_0,
34+ GL_COLOR_CONVERT_PROP_DISABLE_PASSTHROUGH
35+};
36+
37+#define DISABLE_PASSTHROUGH_DAFAULT FALSE
38+
39 static gboolean gst_gl_color_convert_element_set_caps (GstBaseTransform * bt,
40 GstCaps * in_caps, GstCaps * out_caps);
41 static GstCaps *gst_gl_color_convert_element_transform_caps (GstBaseTransform *
42@@ -54,6 +62,15 @@ static GstFlowReturn gst_gl_color_convert_element_transform (GstBaseTransform *
43 static GstCaps *gst_gl_color_convert_element_fixate_caps (GstBaseTransform *
44 bt, GstPadDirection direction, GstCaps * caps, GstCaps * othercaps);
45
46+static void gst_gl_color_convert_set_property (GObject *object,
47+ guint prop_id,
48+ const GValue *value,
49+ GParamSpec *pspec);
50+static void gst_gl_color_convert_get_property (GObject *object,
51+ guint prop_id,
52+ GValue *value,
53+ GParamSpec *pspec);
54+
55 static GstStaticPadTemplate gst_gl_color_convert_element_src_pad_template =
56 GST_STATIC_PAD_TEMPLATE ("src",
57 GST_PAD_SRC,
58@@ -89,6 +106,10 @@ gst_gl_color_convert_element_class_init (GstGLColorConvertElementClass * klass)
59 {
60 GstBaseTransformClass *bt_class = GST_BASE_TRANSFORM_CLASS (klass);
61 GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
62+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
63+
64+ object_class->set_property = gst_gl_color_convert_set_property;
65+ object_class->get_property = gst_gl_color_convert_get_property;
66
67 bt_class->transform_caps = gst_gl_color_convert_element_transform_caps;
68 bt_class->set_caps = gst_gl_color_convert_element_set_caps;
69@@ -110,6 +131,13 @@ gst_gl_color_convert_element_class_init (GstGLColorConvertElementClass * klass)
70 gst_static_pad_template_get
71 (&gst_gl_color_convert_element_sink_pad_template));
72
73+ g_object_class_install_property (object_class, GL_COLOR_CONVERT_PROP_DISABLE_PASSTHROUGH,
74+ g_param_spec_boolean ("disable_passthrough",
75+ "Disable passthrough",
76+ "Disable passthrough mode",
77+ DISABLE_PASSTHROUGH_DAFAULT,
78+ G_PARAM_READWRITE));
79+
80 gst_element_class_set_metadata (element_class,
81 "OpenGL color converter", "Filter/Converter/Video",
82 "Converts between color spaces using OpenGL shaders",
83@@ -121,6 +149,41 @@ gst_gl_color_convert_element_init (GstGLColorConvertElement * convert)
84 {
85 gst_base_transform_set_prefer_passthrough (GST_BASE_TRANSFORM (convert),
86 TRUE);
87+ convert->disable_passthrough = FALSE;
88+}
89+
90+static void
91+gst_gl_color_convert_set_property (GObject *object,
92+ guint prop_id,
93+ const GValue *value,
94+ GParamSpec *pspec)
95+{
96+ GstGLColorConvertElement *convert = GST_GL_COLOR_CONVERT_ELEMENT (object);
97+ switch (prop_id) {
98+ case GL_COLOR_CONVERT_PROP_DISABLE_PASSTHROUGH:
99+ convert->disable_passthrough = g_value_get_boolean (value);
100+ break;
101+ default:
102+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
103+ break;
104+ }
105+}
106+
107+static void
108+gst_gl_color_convert_get_property (GObject *object,
109+ guint prop_id,
110+ GValue *value,
111+ GParamSpec *pspec)
112+{
113+ GstGLColorConvertElement *convert = GST_GL_COLOR_CONVERT_ELEMENT (object);
114+ switch (prop_id) {
115+ case GL_COLOR_CONVERT_PROP_DISABLE_PASSTHROUGH:
116+ g_value_set_boolean (value, convert->disable_passthrough);
117+ break;
118+ default:
119+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
120+ break;
121+ }
122 }
123
124 static gboolean
125@@ -135,6 +198,13 @@ gst_gl_color_convert_element_set_caps (GstBaseTransform * bt,
126 if (convert->convert)
127 gst_gl_color_convert_set_caps (convert->convert, in_caps, out_caps);
128
129+ if(gst_base_transform_is_passthrough (bt) && convert->disable_passthrough){
130+ /* if in passthrough mode and disable_passthrough is set to true,
131+ * set passthrough to FALSE*/
132+ GST_DEBUG_OBJECT(convert, "Disable passthrough mode");
133+ gst_base_transform_set_passthrough(bt, FALSE);
134+ }
135+
136 return TRUE;
137 }
138
139diff --git a/ext/gl/gstglcolorconvertelement.h b/ext/gl/gstglcolorconvertelement.h
140index 2a0dd1d..5cdbd3a 100644
141--- a/ext/gl/gstglcolorconvertelement.h
142+++ b/ext/gl/gstglcolorconvertelement.h
143@@ -47,6 +47,7 @@ struct _GstGLColorConvertElement
144 GstGLColorConvert *convert;
145 GstCaps *in_caps;
146 GstCaps *out_caps;
147+ gboolean disable_passthrough;
148 };
149
150 struct _GstGLColorConvertElementClass
151diff --git a/gst-libs/gst/gl/gstglcolorconvert.c b/gst-libs/gst/gl/gstglcolorconvert.c
152index eb3b4a8..4ed947e 100644
153--- a/gst-libs/gst/gl/gstglcolorconvert.c
154+++ b/gst-libs/gst/gl/gstglcolorconvert.c
155@@ -700,7 +700,11 @@ _gst_gl_color_convert_set_caps_unlocked (GstGLColorConvert * convert,
156 convert->priv->to_texture_target = to_target;
157 convert->initted = FALSE;
158
159- convert->passthrough = passthrough;
160+ /* We may disable passthrough via an external property
161+ * By the way, when glconvertelement is in passthrough mode,
162+ * the plugin will not call gst_gl_color_convert_perform().*/
163+
164+ //convert->passthrough = passthrough;
165 #ifndef GST_DISABLE_GST_DEBUG
166 if (G_UNLIKELY (convert->passthrough))
167 GST_DEBUG_OBJECT (convert,
168--
1691.9.1
170
diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_%.bbappend b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_%.bbappend
index be23ff77..08eec1e4 100644
--- a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_%.bbappend
+++ b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_%.bbappend
@@ -14,6 +14,7 @@ SRC_URI_append = " file://0001-glplugin-Change-wayland-default-res-to-1024x768.p
14 file://0002-Add-directviv-to-glimagesink-to-improve-playback-per.patch \ 14 file://0002-Add-directviv-to-glimagesink-to-improve-playback-per.patch \
15 file://0003-MMFMWK-6930-glplugin-Accelerate-gldownload-with-dire.patch \ 15 file://0003-MMFMWK-6930-glplugin-Accelerate-gldownload-with-dire.patch \
16 file://0004-Fix-dependence-issue-between-gst-plugin-.patch \ 16 file://0004-Fix-dependence-issue-between-gst-plugin-.patch \
17 file://0005-glcolorconvert-convert-YUV-to-RGB-use-directviv.patch \
17" 18"
18 19
19 20