summaryrefslogtreecommitdiffstats
path: root/meta/recipes-multimedia/gstreamer/gstreamer1.0
diff options
context:
space:
mode:
authorCarlos Rafael Giani <dv@pseudoterminal.org>2015-11-05 09:32:06 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-11-16 11:39:34 +0000
commit8360f23bca2c3e95493ac706ec343479dd3b08dc (patch)
tree4ddc5fb284f6f682ce49f975ecc4633ea5af2dfd /meta/recipes-multimedia/gstreamer/gstreamer1.0
parent8800033523f0ffdd7067d7d62e94fc1c5b4e8d72 (diff)
downloadpoky-8360f23bca2c3e95493ac706ec343479dd3b08dc.tar.gz
gstreamer1.0: upgrade to version 1.6.1
Removed patches which either were backports or accepted and integrated (From OE-Core rev: 6fa5cddbe9ceaa21a0f3ef7fe134257b47039505) Signed-off-by: Carlos Rafael Giani <dv@pseudoterminal.org> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-multimedia/gstreamer/gstreamer1.0')
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-gstinfo-Shorten-__FILE__-on-all-platforms.patch55
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0/0002-basesink-Fix-QoS-lateness-checking-if-subclass-imple.patch70
-rwxr-xr-xmeta/recipes-multimedia/gstreamer/gstreamer1.0/0003-basesink-Shouldn-t-drop-buffer-when-sync-false.patch30
-rwxr-xr-xmeta/recipes-multimedia/gstreamer/gstreamer1.0/inputselector-sticky-events-haven-t-send-out-when-ac-1-4-1.patch167
4 files changed, 0 insertions, 322 deletions
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-gstinfo-Shorten-__FILE__-on-all-platforms.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-gstinfo-Shorten-__FILE__-on-all-platforms.patch
deleted file mode 100644
index 8213c4b8b5..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-gstinfo-Shorten-__FILE__-on-all-platforms.patch
+++ /dev/null
@@ -1,55 +0,0 @@
1From 81fecd367b016e5ac4fb0c04b84da5c474f30da6 Mon Sep 17 00:00:00 2001
2From: Peter Urbanec <git.user@urbanec.net>
3Date: Fri, 27 Feb 2015 01:16:58 +1100
4Subject: [PATCH 1/1] gstinfo: Shorten __FILE__ on all platforms.
5
6This is useful not only for MSVC, but also with gcc/Linux when doing
7cross-compilation builds and out-of-tree builds.
8
9Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=745213]
10
11Signed-off-by: Peter Urbanec <git.user@urbanec.net>
12---
13 gst/gstinfo.c | 11 ++++-------
14 1 file changed, 4 insertions(+), 7 deletions(-)
15
16diff --git a/gst/gstinfo.c b/gst/gstinfo.c
17index b2a3005..8b61d09 100644
18--- a/gst/gstinfo.c
19+++ b/gst/gstinfo.c
20@@ -444,7 +444,6 @@ gst_debug_log (GstDebugCategory * category, GstDebugLevel level,
21 va_end (var_args);
22 }
23
24-#ifdef G_OS_WIN32
25 /* based on g_basename(), which we can't use because it was deprecated */
26 static inline const gchar *
27 gst_path_basename (const gchar * file_name)
28@@ -467,7 +466,6 @@ gst_path_basename (const gchar * file_name)
29
30 return file_name;
31 }
32-#endif
33
34 /**
35 * gst_debug_log_valist:
36@@ -497,12 +495,11 @@ gst_debug_log_valist (GstDebugCategory * category, GstDebugLevel level,
37 g_return_if_fail (function != NULL);
38 g_return_if_fail (format != NULL);
39
40- /* The predefined macro __FILE__ is always the exact path given to the
41- * compiler with MSVC, which may or may not be the basename. We work
42- * around it at runtime to improve the readability. */
43-#ifdef G_OS_WIN32
44+ /* The predefined macro __FILE__ can be an absolute path in some build
45+ * environments, such as MSVC or out-of-tree cross-compiles. This may
46+ * be significantly longer than the filename. We work around it at
47+ * runtime to improve the readability. */
48 file = gst_path_basename (file);
49-#endif
50
51 message.message = NULL;
52 message.format = format;
53--
542.3.0
55
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0/0002-basesink-Fix-QoS-lateness-checking-if-subclass-imple.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0002-basesink-Fix-QoS-lateness-checking-if-subclass-imple.patch
deleted file mode 100644
index 1505cbefcb..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0/0002-basesink-Fix-QoS-lateness-checking-if-subclass-imple.patch
+++ /dev/null
@@ -1,70 +0,0 @@
1From 6914566ed6a89c96973a578aa5ecd01ee68cdcfd Mon Sep 17 00:00:00 2001
2From: Jian <Jian.Li@freescale.com>
3Date: Thu, 14 May 2015 15:49:43 +0800
4Subject: [PATCH] basesink: Fix QoS/lateness checking if subclass implements
5 prepare/prepare_list vfuncs
6MIME-Version: 1.0
7Content-Type: text/plain; charset=UTF-8
8Content-Transfer-Encoding: 8bit
9
10In basesink functions gst_base_sink_chain_unlocked(), below code is used to
11checking if buffer is late before doing prepare call to save some effort:
12 if (syncable && do_sync)
13 late =
14 gst_base_sink_is_too_late (basesink, obj, rstart, rstop,
15 GST_CLOCK_EARLY, 0, FALSE);
16
17 if (G_UNLIKELY (late))
18 goto dropped;
19
20But this code has problem, it should calculate jitter based on current media
21clock, rather than just passing 0. I found it will drop all the frames when
22rewind in slow speed, such as -2X.
23
24https://bugzilla.gnome.org/show_bug.cgi?id=749258
25
26Upstream-Status: Backport [1.5.1]
27---
28 libs/gst/base/gstbasesink.c | 26 ++++++++++++++++++++++----
29 1 file changed, 22 insertions(+), 4 deletions(-)
30
31diff --git a/libs/gst/base/gstbasesink.c b/libs/gst/base/gstbasesink.c
32index a505695..5fb2d6a 100644
33--- a/libs/gst/base/gstbasesink.c
34+++ b/libs/gst/base/gstbasesink.c
35@@ -3369,10 +3369,28 @@ gst_base_sink_chain_unlocked (GstBaseSink * basesink, GstPad * pad,
36 if (G_UNLIKELY (stepped))
37 goto dropped;
38
39- if (syncable && do_sync)
40- late =
41- gst_base_sink_is_too_late (basesink, obj, rstart, rstop,
42- GST_CLOCK_EARLY, 0, FALSE);
43+ if (syncable && do_sync) {
44+ GstClock *clock;
45+
46+ GST_OBJECT_LOCK (basesink);
47+ clock = GST_ELEMENT_CLOCK (basesink);
48+ if (clock && GST_STATE (basesink) == GST_STATE_PLAYING) {
49+ GstClockTime base_time;
50+ GstClockTime stime;
51+ GstClockTime now;
52+
53+ base_time = GST_ELEMENT_CAST (basesink)->base_time;
54+ stime = base_time + gst_base_sink_adjust_time (basesink, rstart);
55+ now = gst_clock_get_time (clock);
56+ GST_OBJECT_UNLOCK (basesink);
57+
58+ late =
59+ gst_base_sink_is_too_late (basesink, obj, rstart, rstop,
60+ GST_CLOCK_EARLY, GST_CLOCK_DIFF (stime, now), FALSE);
61+ } else {
62+ GST_OBJECT_UNLOCK (basesink);
63+ }
64+ }
65
66 if (G_UNLIKELY (late))
67 goto dropped;
68--
691.7.9.5
70
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0/0003-basesink-Shouldn-t-drop-buffer-when-sync-false.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0003-basesink-Shouldn-t-drop-buffer-when-sync-false.patch
deleted file mode 100755
index d682ee60c4..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0/0003-basesink-Shouldn-t-drop-buffer-when-sync-false.patch
+++ /dev/null
@@ -1,30 +0,0 @@
1From 73df2b5c0aea58015788f5a94a3ec65296a688d3 Mon Sep 17 00:00:00 2001
2From: Song Bing <b06498@freescale.com>
3Date: Thu, 2 Jul 2015 14:32:21 +0800
4Subject: [PATCH] basesink: Shouldn't drop buffer when sync=false
5
6Shouldn't drop buffer when sync=false
7
8Upstream-Status: Accepted
9
10https://bugzilla.gnome.org/show_bug.cgi?id=751819
11---
12 libs/gst/base/gstbasesink.c | 2 +-
13 1 file changed, 1 insertion(+), 1 deletion(-)
14
15diff --git a/libs/gst/base/gstbasesink.c b/libs/gst/base/gstbasesink.c
16index d44e8fc..cd759ac 100644
17--- a/libs/gst/base/gstbasesink.c
18+++ b/libs/gst/base/gstbasesink.c
19@@ -3423,7 +3423,7 @@ gst_base_sink_chain_unlocked (GstBaseSink * basesink, GstPad * pad,
20 if (G_UNLIKELY (stepped))
21 goto dropped;
22
23- if (syncable && do_sync) {
24+ if (syncable && do_sync && gst_base_sink_get_sync (basesink)) {
25 GstClock *clock;
26
27 GST_OBJECT_LOCK (basesink);
28--
291.7.9.5
30
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0/inputselector-sticky-events-haven-t-send-out-when-ac-1-4-1.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0/inputselector-sticky-events-haven-t-send-out-when-ac-1-4-1.patch
deleted file mode 100755
index f50ce6ff2e..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0/inputselector-sticky-events-haven-t-send-out-when-ac-1-4-1.patch
+++ /dev/null
@@ -1,167 +0,0 @@
1From 83bed90c306ed3185d48febf6441177d638f7341 Mon Sep 17 00:00:00 2001
2From: Song Bing <b06498@freescale.com>
3Date: Wed, 24 Dec 2014 10:13:51 +0800
4Subject: [PATCH] inputselector: sticky events haven't send out when active
5 track reach EOS
6
7EOS event hasn't been send to down-element. The resolution is block EOS event
8of inactive pad, send the event after the pad actived.
9
10https://bugzilla.gnome.org/show_bug.cgi?id=740949
11
12Upstream-Status: Backport [1.5.1]
13
14Signed-off-by: Song Bing <b06498@freescale.com>
15---
16 plugins/elements/gstinputselector.c | 58 ++++++++++++++++++++++++++---------
17 plugins/elements/gstinputselector.h | 1 +
18 2 files changed, 45 insertions(+), 14 deletions(-)
19
20diff --git a/plugins/elements/gstinputselector.c b/plugins/elements/gstinputselector.c
21index fb50802..4461f7c 100644
22--- a/plugins/elements/gstinputselector.c
23+++ b/plugins/elements/gstinputselector.c
24@@ -440,6 +440,17 @@ gst_selector_pad_iterate_linked_pads (GstPad * pad, GstObject * parent)
25 }
26
27 static gboolean
28+gst_input_selector_eos_wait (GstInputSelector * self, GstSelectorPad * pad)
29+{
30+ while (!self->eos && !self->flushing && !pad->flushing) {
31+ /* we can be unlocked here when we are shutting down (flushing) or when we
32+ * get unblocked */
33+ GST_INPUT_SELECTOR_WAIT (self);
34+ }
35+ return self->flushing;
36+}
37+
38+static gboolean
39 gst_selector_pad_event (GstPad * pad, GstObject * parent, GstEvent * event)
40 {
41 gboolean res = TRUE;
42@@ -486,6 +497,7 @@ gst_selector_pad_event (GstPad * pad, GstObject * parent, GstEvent * event)
43 case GST_EVENT_FLUSH_START:
44 /* Unblock the pad if it's waiting */
45 selpad->flushing = TRUE;
46+ sel->eos = FALSE;
47 GST_INPUT_SELECTOR_BROADCAST (sel);
48 break;
49 case GST_EVENT_FLUSH_STOP:
50@@ -523,21 +535,12 @@ gst_selector_pad_event (GstPad * pad, GstObject * parent, GstEvent * event)
51 case GST_EVENT_EOS:
52 selpad->eos = TRUE;
53
54- if (forward) {
55- selpad->eos_sent = TRUE;
56- } else {
57- GstSelectorPad *active_selpad;
58-
59- /* If the active sinkpad is in EOS state but EOS
60- * was not sent downstream this means that the pad
61- * got EOS before it was set as active pad and that
62- * the previously active pad got EOS after it was
63- * active
64- */
65- active_selpad = GST_SELECTOR_PAD (active_sinkpad);
66- forward = (active_selpad->eos && !active_selpad->eos_sent);
67- active_selpad->eos_sent = TRUE;
68+ if (!forward) {
69+ /* blocked until active the sind pad or flush */
70+ gst_input_selector_eos_wait (sel, selpad);
71+ forward = TRUE;
72 }
73+ selpad->eos_sent = TRUE;
74 GST_DEBUG_OBJECT (pad, "received EOS");
75 break;
76 case GST_EVENT_GAP:{
77@@ -676,6 +679,12 @@ gst_input_selector_wait_running_time (GstInputSelector * sel,
78 gst_input_selector_activate_sinkpad (sel, GST_PAD_CAST (selpad));
79 active_selpad = GST_SELECTOR_PAD_CAST (active_sinkpad);
80
81+ if (sel->eos) {
82+ GST_DEBUG_OBJECT (sel, "Not waiting because inputselector reach EOS.");
83+ GST_INPUT_SELECTOR_UNLOCK (sel);
84+ return FALSE;
85+ }
86+
87 if (seg->format != GST_FORMAT_TIME) {
88 GST_DEBUG_OBJECT (selpad,
89 "Not waiting because we don't have a TIME segment");
90@@ -971,6 +980,12 @@ gst_selector_pad_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
91 GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)));
92
93 GST_INPUT_SELECTOR_LOCK (sel);
94+ if (sel->eos) {
95+ GST_DEBUG_OBJECT (pad, "inputselector eos.");
96+ GST_INPUT_SELECTOR_UNLOCK (sel);
97+ goto eos;
98+ }
99+
100 /* wait or check for flushing */
101 if (gst_input_selector_wait (sel, selpad)) {
102 GST_INPUT_SELECTOR_UNLOCK (sel);
103@@ -1151,6 +1166,13 @@ flushing:
104 res = GST_FLOW_FLUSHING;
105 goto done;
106 }
107+eos:
108+ {
109+ GST_DEBUG_OBJECT (pad, "We are eos, discard buffer %p", buf);
110+ gst_buffer_unref (buf);
111+ res = GST_FLOW_EOS;
112+ goto done;
113+ }
114 }
115
116 static void gst_input_selector_dispose (GObject * object);
117@@ -1309,6 +1331,7 @@ gst_input_selector_init (GstInputSelector * sel)
118 g_mutex_init (&sel->lock);
119 g_cond_init (&sel->cond);
120 sel->blocked = FALSE;
121+ sel->eos = FALSE;
122
123 /* lets give a change for downstream to do something on
124 * active-pad change before we start pushing new buffers */
125@@ -1377,6 +1400,11 @@ gst_input_selector_set_active_pad (GstInputSelector * self, GstPad * pad)
126 GST_DEBUG_OBJECT (self, "New active pad is %" GST_PTR_FORMAT,
127 self->active_sinkpad);
128
129+ if (old != new && new->eos && !new->eos_sent) {
130+ self->eos = TRUE;
131+ GST_INPUT_SELECTOR_BROADCAST (self);
132+ }
133+
134 return TRUE;
135 }
136
137@@ -1771,6 +1799,7 @@ gst_input_selector_change_state (GstElement * element,
138 switch (transition) {
139 case GST_STATE_CHANGE_READY_TO_PAUSED:
140 GST_INPUT_SELECTOR_LOCK (self);
141+ self->eos = FALSE;
142 self->blocked = FALSE;
143 self->flushing = FALSE;
144 GST_INPUT_SELECTOR_UNLOCK (self);
145@@ -1779,6 +1808,7 @@ gst_input_selector_change_state (GstElement * element,
146 /* first unlock before we call the parent state change function, which
147 * tries to acquire the stream lock when going to ready. */
148 GST_INPUT_SELECTOR_LOCK (self);
149+ self->eos = TRUE;
150 self->blocked = FALSE;
151 self->flushing = TRUE;
152 GST_INPUT_SELECTOR_BROADCAST (self);
153diff --git a/plugins/elements/gstinputselector.h b/plugins/elements/gstinputselector.h
154index 96c680f..9bf924f 100644
155--- a/plugins/elements/gstinputselector.h
156+++ b/plugins/elements/gstinputselector.h
157@@ -77,6 +77,7 @@ struct _GstInputSelector {
158 GMutex lock;
159 GCond cond;
160 gboolean blocked;
161+ gboolean eos;
162 gboolean flushing;
163 };
164
165--
1661.7.9.5
167