summaryrefslogtreecommitdiffstats
path: root/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base
diff options
context:
space:
mode:
authorCarlos Rafael Giani <dv@pseudoterminal.org>2015-11-05 09:32:07 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-11-16 11:39:35 +0000
commit4a55d12f640410fae25fec76ddf037c208abdaf9 (patch)
treef921431447ce14184357354f248832526c272e84 /meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base
parent8360f23bca2c3e95493ac706ec343479dd3b08dc (diff)
downloadpoky-4a55d12f640410fae25fec76ddf037c208abdaf9.tar.gz
gstreamer1.0-plugins-base: upgrade to version 1.6.1
A number of patches had to be deleted in order for the recipe to work. Patches which cannot be applied cleanly to 1.6.1 and are nontrivial to fix: * 0001-basetextoverlay-make-memory-copy-when-video-buffer-s.patch * handle-audio-video-decoder-error.patch * taglist-not-send-to-down-stream-if-all-the-frame-cor.patch Patches which were rejected by upstream: * 0002-gstplaysink-don-t-set-async-of-custom-text-sink-to-f.patch Patches which either were backports or accepted and integrated: * 0001-video-frame-Don-t-ref-buffers-twice-when-mapping.patch * 0002-video-frame-Add-GST_VIDEO_FRAME_MAP_FLAG_NO_REF.patch * 0003-videofilter-Use-new-GST_VIDEO_FRAME_MAP_FLAG_NO_REF.patch * do-not-change-eos-event-to-gap-event2.patch * do-not-change-eos-event-to-gap-event3.patch * do-not-change-eos-event-to-gap-event-if.patch * fix-id3demux-utf16-to-utf8-issue.patch * videobuffer_updata_alignment_update.patch * videoencoder-Keep-sticky-events-around-when-doing-a-soft-.patch (From OE-Core rev: f22fd450babf8c515f86334958f8ca2e0af6f19c) 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-plugins-base')
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-basetextoverlay-make-memory-copy-when-video-buffer-s.patch129
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-video-frame-Don-t-ref-buffers-twice-when-mapping.patch26
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-gstplaysink-don-t-set-async-of-custom-text-sink-to-f.patch31
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-video-frame-Add-GST_VIDEO_FRAME_MAP_FLAG_NO_REF.patch87
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-videofilter-Use-new-GST_VIDEO_FRAME_MAP_FLAG_NO_REF.patch69
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/do-not-change-eos-event-to-gap-event-if.patch37
-rwxr-xr-xmeta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/do-not-change-eos-event-to-gap-event2.patch49
-rwxr-xr-xmeta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/do-not-change-eos-event-to-gap-event3.patch31
-rwxr-xr-xmeta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/fix-id3demux-utf16-to-utf8-issue.patch54
-rwxr-xr-xmeta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/handle-audio-video-decoder-error.patch64
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/taglist-not-send-to-down-stream-if-all-the-frame-cor.patch57
-rwxr-xr-xmeta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/videobuffer_updata_alignment_update.patch53
-rw-r--r--meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/videoencoder-Keep-sticky-events-around-when-doing-a-soft-.patch46
13 files changed, 0 insertions, 733 deletions
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-basetextoverlay-make-memory-copy-when-video-buffer-s.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-basetextoverlay-make-memory-copy-when-video-buffer-s.patch
deleted file mode 100644
index 03dca956a8..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-basetextoverlay-make-memory-copy-when-video-buffer-s.patch
+++ /dev/null
@@ -1,129 +0,0 @@
1From 3781d40940d46d7e6a502092d24aac7997f6da5b Mon Sep 17 00:00:00 2001
2From: Mingke Wang <mingke.wang@freescale.com>
3Date: Thu, 5 Mar 2015 12:06:23 +0800
4Subject: [PATCH 1/4] basetextoverlay: make memory copy when video buffer's
5 memory is ready only
6
71. since gst_buffer_make_writable just lookup the refcount to determine if
8 a buffer is writable, and it will use _gst_buffer_copy() which don't
9 perform a deep memory copy even if the flag of a memory is set to
10 GST_MEMORY_FLAG_READONLY. So, we detect the memory flag and use
11 gst_buffer_copy_region with GST_BUFFER_COPY_DEEP parameter to perform
12 deep memory copy. if the allocator of a memory don't support mem_copy
13 interface, the it will return NULL, if this case, we can use
14 gst_buffer_make_writable() to get a shared memory buffer or the orignal
15 buffer if the buffer's refcount is 1.
162. new feature is no added if caps has no feature during caps negotiation
17
18Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=747495]
19
20Signed-off-by: Mingke Wang <mingke.wang@freescale.com>
21
22diff --git a/ext/pango/gstbasetextoverlay.c b/ext/pango/gstbasetextoverlay.c
23index c919861..3c0a1d7 100755
24--- a/ext/pango/gstbasetextoverlay.c
25+++ b/ext/pango/gstbasetextoverlay.c
26@@ -747,6 +747,7 @@ gst_base_text_overlay_negotiate (GstBaseTextOverlay * overlay, GstCaps * caps)
27 if (f == NULL) {
28 f = gst_caps_features_new
29 (GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION, NULL);
30+ gst_caps_set_features(overlay_caps, 0, f);
31 } else {
32 gst_caps_features_add (f,
33 GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION);
34@@ -1890,16 +1891,71 @@ gst_base_text_overlay_push_frame (GstBaseTextOverlay * overlay,
35 if (gst_pad_check_reconfigure (overlay->srcpad))
36 gst_base_text_overlay_negotiate (overlay, NULL);
37
38- video_frame = gst_buffer_make_writable (video_frame);
39-
40 if (overlay->attach_compo_to_buffer) {
41 GST_DEBUG_OBJECT (overlay, "Attaching text overlay image to video buffer");
42+ video_frame = gst_buffer_make_writable (video_frame);
43 gst_buffer_add_video_overlay_composition_meta (video_frame,
44 overlay->composition);
45 /* FIXME: emulate shaded background box if want_shading=true */
46 goto done;
47 }
48
49+ gint m = gst_buffer_n_memory(video_frame);
50+ gboolean mem_rdonly = FALSE;
51+ GstMemory *mem;
52+ GstBuffer *orig = video_frame;
53+
54+ while (--m>=0) {
55+ mem = gst_buffer_get_memory(video_frame, m);
56+ if (GST_MEMORY_IS_READONLY(mem)) {
57+ mem_rdonly = TRUE;
58+ gst_memory_unref (mem);
59+ break;
60+ }
61+ gst_memory_unref (mem);
62+ }
63+
64+ if (mem_rdonly) {
65+ // since gst_buffer_make_writable just lookup the refcount to determine if
66+ // a buffer is writable, and it will use _gst_buffer_copy() which don't
67+ // perform a deep memory copy even if the flag of a memory is set to
68+ // GST_MEMORY_FLAG_READONLY. So, we detect the memory flag and use
69+ // gst_buffer_copy_region with GST_BUFFER_COPY_DEEP parameter to perform
70+ // deep memory copy. if the allocator of a memory don't support mem_copy
71+ // interface, the it will return NULL, if this case, we can use
72+ // gst_buffer_make_writable() to get a shared memory buffer or the orignal
73+ // buffer if the buffer's refcount is 1.
74+ GstBuffer *new_buf = gst_buffer_copy_region (video_frame,
75+ GST_BUFFER_COPY_ALL | GST_BUFFER_COPY_DEEP, 0, -1);
76+
77+ GST_DEBUG_OBJECT (overlay, "copy %s video frame buffer %p -> %p",
78+ g_type_name (GST_MINI_OBJECT_TYPE (video_frame)), video_frame, new_buf);
79+
80+ if (!new_buf) {
81+ //maybe the allocator don't support mem_copy interface, the we just use
82+ //gst_buffer_make_writable() to get a writable buffer.
83+ video_frame = gst_buffer_make_writable (video_frame);
84+ } else {
85+ gst_mini_object_unref (video_frame);
86+ GST_BUFFER_FLAG_UNSET (new_buf, GST_BUFFER_FLAG_TAG_MEMORY);
87+ video_frame = new_buf;
88+ }
89+
90+ if (!video_frame) {
91+ GST_WARNING_OBJECT (overlay, "make writable buffer failed");
92+ return GST_FLOW_OK;
93+ }
94+
95+ m = gst_buffer_n_memory(video_frame);
96+ while (--m>=0) {
97+ mem = gst_buffer_get_memory(video_frame, m);
98+ GST_MEMORY_FLAG_UNSET (mem, GST_MEMORY_FLAG_READONLY);
99+ gst_memory_unref (mem);
100+ }
101+ } else {
102+ video_frame = gst_buffer_make_writable (video_frame);
103+ }
104+
105 if (!gst_video_frame_map (&frame, &overlay->info, video_frame,
106 GST_MAP_READWRITE))
107 goto invalid_frame;
108@@ -1918,6 +1974,18 @@ gst_base_text_overlay_push_frame (GstBaseTextOverlay * overlay,
109
110 gst_video_frame_unmap (&frame);
111
112+ if (mem_rdonly && orig == video_frame) {
113+ //if we used the original buffer and it's mem is set to read only,
114+ //recover the memory ready only flag since we unset it before
115+ // gst_video_frame_map ()
116+ m = gst_buffer_n_memory(video_frame);
117+ while (--m>=0) {
118+ mem = gst_buffer_get_memory(video_frame, m);
119+ GST_MEMORY_FLAGS(mem) |= (GST_MEMORY_FLAG_READONLY);
120+ gst_memory_unref (mem);
121+ }
122+ }
123+
124 done:
125
126 return gst_pad_push (overlay->srcpad, video_frame);
127--
1281.7.9.5
129
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-video-frame-Don-t-ref-buffers-twice-when-mapping.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-video-frame-Don-t-ref-buffers-twice-when-mapping.patch
deleted file mode 100644
index 3db4724fe6..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-video-frame-Don-t-ref-buffers-twice-when-mapping.patch
+++ /dev/null
@@ -1,26 +0,0 @@
1From 269f642c45d85cfd630ed490478e6bd6b71a767f Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Tue, 16 Sep 2014 01:07:18 +0300
4Subject: [PATCH] video-frame: Don't ref buffers twice when mapping
5
6Upstream-Status: Backport [1.5.1]
7---
8 gst-libs/gst/video/video-frame.c | 2 +-
9 1 file changed, 1 insertion(+), 1 deletion(-)
10
11diff --git a/gst-libs/gst/video/video-frame.c b/gst-libs/gst/video/video-frame.c
12index 01f23c0..8a9ae96 100644
13--- a/gst-libs/gst/video/video-frame.c
14+++ b/gst-libs/gst/video/video-frame.c
15@@ -105,7 +105,7 @@ gst_video_frame_map_id (GstVideoFrame * frame, GstVideoInfo * info,
16 frame->data[i] = frame->map[0].data + info->offset[i];
17 }
18 }
19- frame->buffer = gst_buffer_ref (buffer);
20+ frame->buffer = buffer;
21 if ((flags & GST_VIDEO_FRAME_MAP_FLAG_NO_REF) == 0)
22 gst_buffer_ref (frame->buffer);
23
24--
251.7.9.5
26
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-gstplaysink-don-t-set-async-of-custom-text-sink-to-f.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-gstplaysink-don-t-set-async-of-custom-text-sink-to-f.patch
deleted file mode 100644
index 39c146aade..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-gstplaysink-don-t-set-async-of-custom-text-sink-to-f.patch
+++ /dev/null
@@ -1,31 +0,0 @@
1From 0a78555ea6c8c2f1ee27ee4707e8d7aa00ab7a66 Mon Sep 17 00:00:00 2001
2From: Mingke Wang <mingke.wang@freescale.com>
3Date: Thu, 19 Mar 2015 14:15:25 +0800
4Subject: [PATCH 2/4] gstplaysink: don't set async of custom text-sink to
5 false
6
7set async to false lead to A/V sync problem when seeking.
8the preroll need use GAP event instead of set async to false.
9
10Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=747499]
11
12Signed-off-by: Mingke Wang <mingke.wang@freescale.com>
13
14diff --git a/gst/playback/gstplaysink.c b/gst/playback/gstplaysink.c
15old mode 100644
16new mode 100755
17index f5a2d42..fba0172
18--- a/gst/playback/gstplaysink.c
19+++ b/gst/playback/gstplaysink.c
20@@ -2408,7 +2408,7 @@ gen_text_chain (GstPlaySink * playsink)
21 G_TYPE_BOOLEAN);
22 if (elem) {
23 /* make sure the sparse subtitles don't participate in the preroll */
24- g_object_set (elem, "async", FALSE, NULL);
25+ //g_object_set (elem, "async", FALSE, NULL);
26 GST_DEBUG_OBJECT (playsink, "adding custom text sink");
27 gst_bin_add (bin, chain->sink);
28 /* NOTE streamsynchronizer needs streams decoupled */
29--
301.7.9.5
31
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-video-frame-Add-GST_VIDEO_FRAME_MAP_FLAG_NO_REF.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-video-frame-Add-GST_VIDEO_FRAME_MAP_FLAG_NO_REF.patch
deleted file mode 100644
index c465b5ceed..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-video-frame-Add-GST_VIDEO_FRAME_MAP_FLAG_NO_REF.patch
+++ /dev/null
@@ -1,87 +0,0 @@
1From 40a293d44d1aeccf5eb8e86f23a0b13666111c5c Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Fri, 12 Sep 2014 14:39:16 +0300
4Subject: [PATCH 2/3] video-frame: Add GST_VIDEO_FRAME_MAP_FLAG_NO_REF
5
6This makes sure that the buffer is not reffed another time when
7storing it in the GstVideoFrame, keeping it writable if it was
8writable.
9
10Upstream-Status: Backport [1.5.1]
11https://bugzilla.gnome.org/show_bug.cgi?id=736118
12---
13 gst-libs/gst/video/video-frame.c | 9 ++++++++-
14 gst-libs/gst/video/video-frame.h | 18 ++++++++++++++++++
15 2 files changed, 26 insertions(+), 1 deletion(-)
16
17diff --git a/gst-libs/gst/video/video-frame.c b/gst-libs/gst/video/video-frame.c
18index 537cf70..01f23c0 100644
19--- a/gst-libs/gst/video/video-frame.c
20+++ b/gst-libs/gst/video/video-frame.c
21@@ -106,6 +106,9 @@ gst_video_frame_map_id (GstVideoFrame * frame, GstVideoInfo * info,
22 }
23 }
24 frame->buffer = gst_buffer_ref (buffer);
25+ if ((flags & GST_VIDEO_FRAME_MAP_FLAG_NO_REF) == 0)
26+ gst_buffer_ref (frame->buffer);
27+
28 frame->meta = meta;
29
30 /* buffer flags enhance the frame flags */
31@@ -189,11 +192,13 @@ gst_video_frame_unmap (GstVideoFrame * frame)
32 GstBuffer *buffer;
33 GstVideoMeta *meta;
34 gint i;
35+ GstMapFlags flags;
36
37 g_return_if_fail (frame != NULL);
38
39 buffer = frame->buffer;
40 meta = frame->meta;
41+ flags = frame->map[0].flags;
42
43 if (meta) {
44 for (i = 0; i < frame->info.finfo->n_planes; i++) {
45@@ -202,7 +207,9 @@ gst_video_frame_unmap (GstVideoFrame * frame)
46 } else {
47 gst_buffer_unmap (buffer, &frame->map[0]);
48 }
49- gst_buffer_unref (buffer);
50+
51+ if ((flags & GST_VIDEO_FRAME_MAP_FLAG_NO_REF) == 0)
52+ gst_buffer_unref (frame->buffer);
53 }
54
55 /**
56diff --git a/gst-libs/gst/video/video-frame.h b/gst-libs/gst/video/video-frame.h
57index 627fab0..f8e6304 100644
58--- a/gst-libs/gst/video/video-frame.h
59+++ b/gst-libs/gst/video/video-frame.h
60@@ -149,6 +149,24 @@ typedef enum {
61 GST_VIDEO_BUFFER_FLAG_LAST = (GST_BUFFER_FLAG_LAST << 8)
62 } GstVideoBufferFlags;
63
64+/**
65+ * GstVideoBufferFlags:
66+ * @GST_VIDEO_FRAME_MAP_FLAG_NO_REF: Don't take another reference of the buffer and store it in
67+ * the GstVideoFrame. This makes sure that the buffer stays
68+ * writable while the frame is mapped, but requires that the
69+ * buffer reference stays valid until the frame is unmapped again.
70+ * @GST_VIDEO_FRAME_MAP_FLAG_LAST: Offset to define more flags
71+ *
72+ * Additional mapping flags for gst_video_frame_map().
73+ *
74+ * Since: 1.6
75+ */
76+typedef enum {
77+ GST_VIDEO_FRAME_MAP_FLAG_NO_REF = (GST_MAP_FLAG_LAST << 0),
78+ GST_VIDEO_FRAME_MAP_FLAG_LAST = (GST_MAP_FLAG_LAST << 8)
79+ /* 8 more flags possible afterwards */
80+} GstVideoFrameMapFlags;
81+
82 G_END_DECLS
83
84 #endif /* __GST_VIDEO_FRAME_H__ */
85--
861.7.9.5
87
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-videofilter-Use-new-GST_VIDEO_FRAME_MAP_FLAG_NO_REF.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-videofilter-Use-new-GST_VIDEO_FRAME_MAP_FLAG_NO_REF.patch
deleted file mode 100644
index 132bf06f75..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-videofilter-Use-new-GST_VIDEO_FRAME_MAP_FLAG_NO_REF.patch
+++ /dev/null
@@ -1,69 +0,0 @@
1From 3a7cdcdfc9c5b0d20394fe51b3b8cda23931ca6d Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
3Date: Fri, 12 Sep 2014 14:41:01 +0300
4Subject: [PATCH 3/3] videofilter: Use new GST_VIDEO_FRAME_MAP_FLAG_NO_REF
5
6Upstream-Status: Backport [1.5.1]
7https://bugzilla.gnome.org/show_bug.cgi?id=736118
8---
9 gst-libs/gst/video/gstvideofilter.c | 23 ++++-------------------
10 1 file changed, 4 insertions(+), 19 deletions(-)
11
12diff --git a/gst-libs/gst/video/gstvideofilter.c b/gst-libs/gst/video/gstvideofilter.c
13index e1fa2c1..874b2e8 100644
14--- a/gst-libs/gst/video/gstvideofilter.c
15+++ b/gst-libs/gst/video/gstvideofilter.c
16@@ -260,23 +260,15 @@ gst_video_filter_transform (GstBaseTransform * trans, GstBuffer * inbuf,
17 if (fclass->transform_frame) {
18 GstVideoFrame in_frame, out_frame;
19
20- if (!gst_video_frame_map (&in_frame, &filter->in_info, inbuf, GST_MAP_READ))
21+ if (!gst_video_frame_map (&in_frame, &filter->in_info, inbuf,
22+ GST_MAP_READ | GST_VIDEO_FRAME_MAP_FLAG_NO_REF))
23 goto invalid_buffer;
24
25 if (!gst_video_frame_map (&out_frame, &filter->out_info, outbuf,
26- GST_MAP_WRITE))
27+ GST_MAP_WRITE | GST_VIDEO_FRAME_MAP_FLAG_NO_REF))
28 goto invalid_buffer;
29
30- /* GstVideoFrame has another reference, so the buffer looks unwriteable,
31- * meaning that we can't attach any metas or anything to it. Other
32- * map() functions like gst_buffer_map() don't get another reference
33- * of the buffer and expect the buffer reference to be kept until
34- * the buffer is unmapped again. */
35- gst_buffer_unref (inbuf);
36- gst_buffer_unref (outbuf);
37 res = fclass->transform_frame (filter, &in_frame, &out_frame);
38- gst_buffer_ref (inbuf);
39- gst_buffer_ref (outbuf);
40
41 gst_video_frame_unmap (&out_frame);
42 gst_video_frame_unmap (&in_frame);
43@@ -317,7 +309,7 @@ gst_video_filter_transform_ip (GstBaseTransform * trans, GstBuffer * buf)
44 GstVideoFrame frame;
45 GstMapFlags flags;
46
47- flags = GST_MAP_READ;
48+ flags = GST_MAP_READ | GST_VIDEO_FRAME_MAP_FLAG_NO_REF;
49
50 if (!gst_base_transform_is_passthrough (trans))
51 flags |= GST_MAP_WRITE;
52@@ -325,14 +317,7 @@ gst_video_filter_transform_ip (GstBaseTransform * trans, GstBuffer * buf)
53 if (!gst_video_frame_map (&frame, &filter->in_info, buf, flags))
54 goto invalid_buffer;
55
56- /* GstVideoFrame has another reference, so the buffer looks unwriteable,
57- * meaning that we can't attach any metas or anything to it. Other
58- * map() functions like gst_buffer_map() don't get another reference
59- * of the buffer and expect the buffer reference to be kept until
60- * the buffer is unmapped again. */
61- gst_buffer_unref (buf);
62 res = fclass->transform_frame_ip (filter, &frame);
63- gst_buffer_ref (buf);
64
65 gst_video_frame_unmap (&frame);
66 } else {
67--
681.7.9.5
69
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/do-not-change-eos-event-to-gap-event-if.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/do-not-change-eos-event-to-gap-event-if.patch
deleted file mode 100644
index aa55de10e4..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/do-not-change-eos-event-to-gap-event-if.patch
+++ /dev/null
@@ -1,37 +0,0 @@
1From b608d027fff6efc2d1988ebf169cbe3b2b44a61b Mon Sep 17 00:00:00 2001
2From: zhouming <b42586@freescale.com>
3Date: Thu, 8 May 2014 12:01:17 +0800
4Subject: [PATCH] ENGR00312034: do not change eos event to gap event if no
5 data has passed to streamsynchronizer.
6
7https://bugzilla.gnome.org/show_bug.cgi?id=727074
8
9Upstream-Status: Pending
10
11Signed-off-by: zhouming <b42586@freescale.com>
12---
13 gst/playback/gststreamsynchronizer.c | 5 ++---
14 1 file changed, 2 insertions(+), 3 deletions(-)
15
16diff --git a/gst/playback/gststreamsynchronizer.c b/gst/playback/gststreamsynchronizer.c
17index 3997d1b..3e17c55 100644
18--- a/gst/playback/gststreamsynchronizer.c
19+++ b/gst/playback/gststreamsynchronizer.c
20@@ -488,12 +488,11 @@ gst_stream_synchronizer_sink_event (GstPad * pad, GstObject * parent,
21 }
22 g_slist_free (pads);
23 } else {
24- /* if EOS, but no data has passed, then send something to replace EOS
25- * for preroll purposes */
26+ /* if EOS, but no data has passed, then send EOS event */
27 if (!seen_data) {
28 GstEvent *gap_event;
29
30- gap_event = gst_event_new_gap (timestamp, GST_CLOCK_TIME_NONE);
31+ gap_event = gst_event_new_eos ();
32 ret = gst_pad_push_event (srcpad, gap_event);
33 } else {
34 GstEvent *gap_event;
35--
361.7.9.5
37
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/do-not-change-eos-event-to-gap-event2.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/do-not-change-eos-event-to-gap-event2.patch
deleted file mode 100755
index f24bc7cd6f..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/do-not-change-eos-event-to-gap-event2.patch
+++ /dev/null
@@ -1,49 +0,0 @@
1commit f9536544f5ad182b4f78d0143d1daa45dd64e624
2Author: Song Bing <b06498@freescale.com>
3Date: Thu Oct 9 17:37:43 2014 +0800
4
5[gststreamsynchronizer] send EOS event insterd of GAP event as GAP
6event has issue when A/V have different duration.
7
8send EOS event insterd of GAP event as GAP event has issue when A/V have different duration.
9
10Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=736655]
11
12Signed-off-by: Song Bing <b06498@freescale.com>
13
14diff --git a/gst/playback/gststreamsynchronizer.c b/gst/playback/gststreamsynchronizer.c
15index 3e17c55..ff42d72 100644
16--- a/gst/playback/gststreamsynchronizer.c
17+++ b/gst/playback/gststreamsynchronizer.c
18@@ -488,19 +488,24 @@ gst_stream_synchronizer_sink_event (GstPad * pad, GstObject * parent,
19 }
20 g_slist_free (pads);
21 } else {
22- /* if EOS, but no data has passed, then send EOS event */
23+ /* if EOS, but no data has passed, then send something to replace EOS
24+ * for preroll purposes */
25 if (!seen_data) {
26- GstEvent *gap_event;
27+ GstEvent *eos_event;
28
29- gap_event = gst_event_new_eos ();
30- ret = gst_pad_push_event (srcpad, gap_event);
31+ /* FIXME: change to EOS event as GAP event has issue when A/V have
32+ * different duration */
33+ eos_event = gst_event_new_eos ();
34+ ret = gst_pad_push_event (srcpad, eos_event);
35 } else {
36- GstEvent *gap_event;
37+ GstEvent *eos_event;
38
39 /* FIXME: Also send a GAP event to let audio sinks start their
40 * clock in case they did not have enough data yet */
41- gap_event = gst_event_new_gap (timestamp, GST_CLOCK_TIME_NONE);
42- ret = gst_pad_push_event (srcpad, gap_event);
43+ /* FIXME: change to EOS event as GAP event has issue when A/V have
44+ * different duration */
45+ eos_event = gst_event_new_eos ();
46+ ret = gst_pad_push_event (srcpad, eos_event);
47 }
48 }
49 gst_object_unref (srcpad);
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/do-not-change-eos-event-to-gap-event3.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/do-not-change-eos-event-to-gap-event3.patch
deleted file mode 100755
index 731be686de..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/do-not-change-eos-event-to-gap-event3.patch
+++ /dev/null
@@ -1,31 +0,0 @@
1commit 3f7052aac5e0118a9a9e09fff2f65091be448972
2Author: Song Bing <b06498@freescale.com>
3Date: Thu Oct 23 13:35:13 2014 +0800
4
5[streamsynchronizer] One stream can finish playback.
6
7As changed GAP event EOS event, so EOS will send more times, which will
8cause send function return error.
9Streamsynchronizer will don’t send second track EOS event if send the
10first track EOS return fail. Fixed by ignore the return error.
11
12Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=736655]
13
14Signed-off-by: Song Bing b06498@freescale.com
15
16diff --git a/gst/playback/gststreamsynchronizer.c b/gst/playback/gststreamsynchronizer.c
17index ff42d72..d1732c3 100644
18--- a/gst/playback/gststreamsynchronizer.c
19+++ b/gst/playback/gststreamsynchronizer.c
20@@ -482,7 +482,10 @@ gst_stream_synchronizer_sink_event (GstPad * pad, GstObject * parent,
21 while (epad) {
22 pad = epad->data;
23 GST_DEBUG_OBJECT (pad, "Pushing EOS");
24- ret = ret && gst_pad_push_event (pad, gst_event_new_eos ());
25+ /* FIXME: remove error check as GAP changed to EOS will send EOS
26+ * more times, which will cause return error and then don't send
27+ * EOS event to following tracks. */
28+ gst_pad_push_event (pad, gst_event_new_eos ());
29 gst_object_unref (pad);
30 epad = g_slist_next (epad);
31 }
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/fix-id3demux-utf16-to-utf8-issue.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/fix-id3demux-utf16-to-utf8-issue.patch
deleted file mode 100755
index ef3f75fba5..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/fix-id3demux-utf16-to-utf8-issue.patch
+++ /dev/null
@@ -1,54 +0,0 @@
1Author: Lyon Wang <b12696@freescale.com>
2Date: Thu Oct 9 17:37:43 2014 +0800
3
4[id3v2frames] Bug fix for id3demux issue
5
6Fix the issue that id3 tags utf16 charaters cannot be extreacted in id3demux
7when I tried to get the id3v2 tag such as TIT2, TALB etc. it will return extrac
8failed.
9
10Checked in id3v2frame.c, When parse the UTF-16 streams, it used g_convert() to
11convert the buffer from UTF-16 to UTF-8, however it will return err that this
12conversion is not supported which cause the extraction failed with these UTF-16
13characters.
14
15In the patch, use g_utf16_to_utf8() instead of g_convert, which can convert the
16character format successfully.
17
18https://bugzilla.gnome.org/show_bug.cgi?id=741144
19
20Upstream-Status: Backport [1.5.1]
21
22Signed-off-by: Lyon Wang <b12696@freescale.com>
23
24diff --git a/gst-libs/gst/tag/id3v2frames.c b/gst-libs/gst/tag/id3v2frames.c
25old mode 100644
26new mode 100755
27index 3785c2a..7b9d8ac
28--- a/gst-libs/gst/tag/id3v2frames.c
29+++ b/gst-libs/gst/tag/id3v2frames.c
30@@ -1057,14 +1057,17 @@ parse_insert_string_field (guint8 encoding, gchar * data, gint data_size,
31 data_size -= 2;
32 }
33
34- field = g_convert (data, data_size, "UTF-8", in_encode, NULL, NULL, NULL);
35-
36- if (field == NULL || g_utf8_validate (field, -1, NULL) == FALSE) {
37- /* As a fallback, try interpreting UTF-16 in the other endianness */
38- if (in_encode == utf16beenc)
39- field = g_convert (data, data_size, "UTF-8", utf16leenc,
40- NULL, NULL, NULL);
41+ if (in_encode == utf16beenc) {
42+ gunichar2 *data_utf16;
43+ guint i;
44+ data_utf16 = (gunichar2 *) data;
45+ for (i=0; i<(data_size>>1); i++) {
46+ data_utf16[i] = GUINT16_TO_LE (data_utf16[i]);
47+ }
48 }
49+ //field = g_convert (data, data_size, "UTF-8", in_encode, NULL, NULL, NULL);
50+ field = g_utf16_to_utf8((gunichar2 *)data, (glong)(data_size>>1), NULL, NULL, NULL);
51+
52 }
53
54 break;
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/handle-audio-video-decoder-error.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/handle-audio-video-decoder-error.patch
deleted file mode 100755
index 833ce72bb2..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/handle-audio-video-decoder-error.patch
+++ /dev/null
@@ -1,64 +0,0 @@
1From bcb2b8b6f49e7c66124a4f5e07dea829d5ebfe59 Mon Sep 17 00:00:00 2001
2From: Lyon Wang <lyon.wang@freescale.com>
3Date: Mon, 15 Dec 2014 16:52:07 +0800
4Subject: [PATCH] handle audio/video decoder error
5
6When there is input data and no output data to the end of the stream, it will
7send GST_ELEMENT_ERROR, So the clips playing will quit.
8However, if only one of the tracks is corrupt, there is no need to quit other
9tracks playing.
10
11The patch comments the GST_ELEMENT_ERROR() and just add GST_ERROR_OBJECT()
12information instead.
13
14Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=741542]
15
16Signed-off-by: Lyon Wang <lyon.wang@freescale.com>
17---
18 gst-libs/gst/audio/gstaudiodecoder.c | 5 +++--
19 gst-libs/gst/video/gstvideodecoder.c | 5 +++--
20 2 files changed, 6 insertions(+), 4 deletions(-)
21 mode change 100644 => 100755 gst-libs/gst/audio/gstaudiodecoder.c
22 mode change 100644 => 100755 gst-libs/gst/video/gstvideodecoder.c
23
24diff --git a/gst-libs/gst/audio/gstaudiodecoder.c b/gst-libs/gst/audio/gstaudiodecoder.c
25old mode 100644
26new mode 100755
27index c2e7a28..891df0a
28--- a/gst-libs/gst/audio/gstaudiodecoder.c
29+++ b/gst-libs/gst/audio/gstaudiodecoder.c
30@@ -2123,9 +2123,10 @@ gst_audio_decoder_sink_eventfunc (GstAudioDecoder * dec, GstEvent * event)
31 GST_AUDIO_DECODER_STREAM_UNLOCK (dec);
32
33 if (dec->priv->ctx.had_input_data && !dec->priv->ctx.had_output_data) {
34- GST_ELEMENT_ERROR (dec, STREAM, DECODE,
35+ /* GST_ELEMENT_ERROR (dec, STREAM, DECODE,
36 ("No valid frames decoded before end of stream"),
37- ("no valid frames found"));
38+ ("no valid frames found")); */
39+ GST_ERROR_OBJECT(dec, "No valid frames decoded before end of stream");
40 }
41
42 /* send taglist if no valid frame is decoded util EOS */
43diff --git a/gst-libs/gst/video/gstvideodecoder.c b/gst-libs/gst/video/gstvideodecoder.c
44old mode 100644
45new mode 100755
46index ac581e1..4278bcd
47--- a/gst-libs/gst/video/gstvideodecoder.c
48+++ b/gst-libs/gst/video/gstvideodecoder.c
49@@ -1068,9 +1068,10 @@ gst_video_decoder_sink_event_default (GstVideoDecoder * decoder,
50
51 /* Error out even if EOS was ok when we had input, but no output */
52 if (ret && priv->had_input_data && !priv->had_output_data) {
53- GST_ELEMENT_ERROR (decoder, STREAM, DECODE,
54+ /* GST_ELEMENT_ERROR (decoder, STREAM, DECODE,
55 ("No valid frames decoded before end of stream"),
56- ("no valid frames found"));
57+ ("no valid frames found")); */
58+ GST_ERROR_OBJECT(decoder, "No valid frames decoded before end of stream");
59 }
60
61 /* Forward EOS immediately. This is required because no
62--
631.7.9.5
64
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/taglist-not-send-to-down-stream-if-all-the-frame-cor.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/taglist-not-send-to-down-stream-if-all-the-frame-cor.patch
deleted file mode 100644
index 62a52b038a..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/taglist-not-send-to-down-stream-if-all-the-frame-cor.patch
+++ /dev/null
@@ -1,57 +0,0 @@
1From 68fa1b1425ad2c5f7c5013d0943153a8a6d0934e Mon Sep 17 00:00:00 2001
2From: Jian Li <lj.qfy.sh@gmail.com>
3Date: Wed, 24 Sep 2014 17:21:02 +0800
4Subject: [PATCH] taglist not send to down stream if all the frame corrupted
5
6https://bugzilla.gnome.org/show_bug.cgi?id=737246
7
8Upstream-Status: Pending
9
10Signed-off-by: Jian Li <lj.qfy.sh@gmail.com>
11---
12 gst-libs/gst/audio/gstaudiodecoder.c | 9 +++++++++
13 gst-libs/gst/video/gstvideodecoder.c | 8 ++++++++
14 2 files changed, 17 insertions(+)
15
16diff --git a/gst-libs/gst/audio/gstaudiodecoder.c b/gst-libs/gst/audio/gstaudiodecoder.c
17index 3504678..3d69efe 100644
18--- a/gst-libs/gst/audio/gstaudiodecoder.c
19+++ b/gst-libs/gst/audio/gstaudiodecoder.c
20@@ -2083,6 +2083,15 @@ gst_audio_decoder_sink_eventfunc (GstAudioDecoder * dec, GstEvent * event)
21 gst_audio_decoder_drain (dec);
22 GST_AUDIO_DECODER_STREAM_UNLOCK (dec);
23
24+ /* send taglist if no valid frame is decoded util EOS */
25+ if (dec->priv->taglist && dec->priv->taglist_changed) {
26+ GST_DEBUG_OBJECT (dec, "codec tag %" GST_PTR_FORMAT, dec->priv->taglist);
27+ if (!gst_tag_list_is_empty (dec->priv->taglist))
28+ gst_audio_decoder_push_event (dec,
29+ gst_event_new_tag (gst_tag_list_ref (dec->priv->taglist)));
30+ dec->priv->taglist_changed = FALSE;
31+ }
32+
33 /* Forward EOS because no buffer or serialized event will come after
34 * EOS and nothing could trigger another _finish_frame() call. */
35 ret = gst_audio_decoder_push_event (dec, event);
36diff --git a/gst-libs/gst/video/gstvideodecoder.c b/gst-libs/gst/video/gstvideodecoder.c
37index dd8abe3..d9bfe4d 100644
38--- a/gst-libs/gst/video/gstvideodecoder.c
39+++ b/gst-libs/gst/video/gstvideodecoder.c
40@@ -1024,6 +1024,14 @@ gst_video_decoder_sink_event_default (GstVideoDecoder * decoder,
41 * parent class' ::sink_event() until a later time.
42 */
43 forward_immediate = TRUE;
44+
45+ /* send taglist if no valid frame is decoded util EOS */
46+ if (decoder->priv->tags && decoder->priv->tags_changed) {
47+ gst_video_decoder_push_event (decoder,
48+ gst_event_new_tag (gst_tag_list_ref (decoder->priv->tags)));
49+ decoder->priv->tags_changed = FALSE;
50+ }
51+
52 break;
53 }
54 case GST_EVENT_GAP:
55--
561.7.9.5
57
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/videobuffer_updata_alignment_update.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/videobuffer_updata_alignment_update.patch
deleted file mode 100755
index 8cfda955a7..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/videobuffer_updata_alignment_update.patch
+++ /dev/null
@@ -1,53 +0,0 @@
1commit 88d253ea23b06289df40401160b606323f16c910
2Author: Song Bing <b06498@freescale.com>
3Date: Mon Dec 15 09:34:35 2014 +0800
4
5videopool: update video alignment after video alignment
6
7Video buffer pool will update video alignment to respect stride alignment
8requirement. But haven't update it to video alignment in configure.
9Which will cause user get wrong video alignment.
10
11https://bugzilla.gnome.org/show_bug.cgi?id=741501
12
13Upstream-Status: Backport [1.5.1]
14
15Signed-off-by: Song Bing <b06498@freescale.com>
16diff --git a/gst-libs/gst/video/gstvideopool.c b/gst-libs/gst/video/gstvideopool.c
17index 4475f45..acef594 100644
18--- a/gst-libs/gst/video/gstvideopool.c
19+++ b/gst-libs/gst/video/gstvideopool.c
20@@ -167,6 +167,7 @@ video_buffer_pool_set_config (GstBufferPool * pool, GstStructure * config)
21 /* get an apply the alignment to the info */
22 gst_buffer_pool_config_get_video_alignment (config, &priv->video_align);
23 gst_video_info_align (&info, &priv->video_align);
24+ gst_buffer_pool_config_set_video_alignment (config, &priv->video_align);
25 }
26 priv->info = info;
27
28diff --git a/sys/ximage/ximagepool.c b/sys/ximage/ximagepool.c
29index 6cc2cfa..6a1cbc9 100644
30--- a/sys/ximage/ximagepool.c
31+++ b/sys/ximage/ximagepool.c
32@@ -597,6 +597,8 @@ ximage_buffer_pool_set_config (GstBufferPool * pool, GstStructure * config)
33 /* do padding and alignment */
34 gst_video_info_align (&info, &priv->align);
35
36+ gst_buffer_pool_config_set_video_alignment (config, &priv->align);
37+
38 /* we need the video metadata too now */
39 priv->add_metavideo = TRUE;
40 } else {
41diff --git a/sys/xvimage/xvimagepool.c b/sys/xvimage/xvimagepool.c
42index 244a51a..34b1ab2 100644
43--- a/sys/xvimage/xvimagepool.c
44+++ b/sys/xvimage/xvimagepool.c
45@@ -124,6 +124,8 @@ xvimage_buffer_pool_set_config (GstBufferPool * pool, GstStructure * config)
46 /* do padding and alignment */
47 gst_video_info_align (&info, &priv->align);
48
49+ gst_buffer_pool_config_set_video_alignment (config, &priv->align);
50+
51 /* we need the video metadata too now */
52 priv->add_metavideo = TRUE;
53 } else {
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/videoencoder-Keep-sticky-events-around-when-doing-a-soft-.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/videoencoder-Keep-sticky-events-around-when-doing-a-soft-.patch
deleted file mode 100644
index b476969111..0000000000
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/videoencoder-Keep-sticky-events-around-when-doing-a-soft-.patch
+++ /dev/null
@@ -1,46 +0,0 @@
1From c3f7d36b992a3cbcee3386dea85720f3cb04e1ff Mon Sep 17 00:00:00 2001
2From: Song Bing <b06498@freescale.com>
3Date: Fri, 27 Mar 2015 13:39:43 +0800
4Subject: [PATCH] videoencoder: Keep sticky events around when doing a soft
5 reset
6
7The current code will first discard all frames, and then tries to copy
8all sticky events from the (now discarded) frames. Let's change the order.
9
10https://bugzilla.gnome.org/show_bug.cgi?id=746865
11
12Upstream-Status: Accepted
13
14---
15 gst-libs/gst/video/gstvideoencoder.c | 8 ++++----
16 1 file changed, 4 insertions(+), 4 deletions(-)
17
18diff --git a/gst-libs/gst/video/gstvideoencoder.c b/gst-libs/gst/video/gstvideoencoder.c
19index 614ba2d..4c5b111 100644
20--- a/gst-libs/gst/video/gstvideoencoder.c
21+++ b/gst-libs/gst/video/gstvideoencoder.c
22@@ -340,10 +340,6 @@ gst_video_encoder_reset (GstVideoEncoder * encoder, gboolean hard)
23
24 priv->drained = TRUE;
25
26- g_list_foreach (priv->frames, (GFunc) gst_video_codec_frame_unref, NULL);
27- g_list_free (priv->frames);
28- priv->frames = NULL;
29-
30 priv->bytes = 0;
31 priv->time = 0;
32
33@@ -392,6 +388,10 @@ gst_video_encoder_reset (GstVideoEncoder * encoder, gboolean hard)
34 encoder->priv->current_frame_events);
35 }
36
37+ g_list_foreach (priv->frames, (GFunc) gst_video_codec_frame_unref, NULL);
38+ g_list_free (priv->frames);
39+ priv->frames = NULL;
40+
41 GST_VIDEO_ENCODER_STREAM_UNLOCK (encoder);
42
43 return ret;
44--
451.7.9.5
46