* [meta-fsl-arm][PATCH v2 0/7] 3.14.38-6QP_Beta release
@ 2015-07-27 10:46 Yuqing Zhu
2015-07-27 10:46 ` [meta-fsl-arm][PATCH v2 1/7] gstreamer1.0-plugins-base: Add gstplaybin related patch Yuqing Zhu
` (6 more replies)
0 siblings, 7 replies; 14+ messages in thread
From: Yuqing Zhu @ 2015-07-27 10:46 UTC (permalink / raw)
To: meta-freescale
Fix issue about gstreamer1.0-plugins-base
-gstplaybin: Remove native video flag and deinterlace flag.
-basetextoverlay: Make memory copy when video buffer's memory is ready only.
-gstplaysink: Don't set async of custom text-sink to false.
-ssaparse: Enhance SSA text lines parsing.
-subparse: Set need_segment after sink pad received GST_EVENT_SEGMENT.
-gststreamsynchronizer: Send EOS event insterd of GAP event as GAP event has issue when A/V have
different duration.
Stop sending second track EOS event if send the first track EOS return fail.
-encodebin: Need more buffers in output queue for better performance.
Yuqing Zhu (7):
gstreamer1.0-plugins-base: Add gstplaybin related patch
gstreamer1.0-plugins-base: Add gststreamsynchronizer related patch
gstreamer1.0-plugins-base: Add basetextoverlay related patch
gstreamer1.0-plugins-base: Add gstplaysink related patch
gstreamer1.0-plugins-base: Add ssaparse related patch
gstreamer1.0-plugins-base: Add subparse related patch
gstreamer1.0-plugins-base: Add encodebin related patch
...rlay-make-memory-copy-when-video-buffer-s.patch | 129 ++++++++++++
...-don-t-set-async-of-custom-text-sink-to-f.patch | 31 +++
...3-ssaparse-enhance-SSA-text-lines-parsing.patch | 225 +++++++++++++++++++++
...t-need_segment-after-sink-pad-received-GS.patch | 69 +++++++
.../do-not-change-eos-event-to-gap-event2.patch | 51 +++++
.../do-not-change-eos-event-to-gap-event3.patch | 33 +++
...eed-more-buffers-in-output-queue-for-bett.patch | 34 ++++
...ch => gstplaybin-remove-flag-deinterlace.patch} | 8 +-
.../gstreamer/gstreamer1.0-plugins-base_%.bbappend | 16 +-
9 files changed, 588 insertions(+), 8 deletions(-)
create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-basetextoverlay-make-memory-copy-when-video-buffer-s.patch
create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-gstplaysink-don-t-set-async-of-custom-text-sink-to-f.patch
create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-ssaparse-enhance-SSA-text-lines-parsing.patch
create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-subparse-set-need_segment-after-sink-pad-received-GS.patch
create mode 100755 recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/do-not-change-eos-event-to-gap-event2.patch
create mode 100755 recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/do-not-change-eos-event-to-gap-event3.patch
create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/encodebin-Need-more-buffers-in-output-queue-for-bett.patch
rename recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/{gstplaybin-enable-native-video.patch => gstplaybin-remove-flag-deinterlace.patch} (84%)
--
1.9.1
^ permalink raw reply [flat|nested] 14+ messages in thread
* [meta-fsl-arm][PATCH v2 1/7] gstreamer1.0-plugins-base: Add gstplaybin related patch
2015-07-27 10:46 [meta-fsl-arm][PATCH v2 0/7] 3.14.38-6QP_Beta release Yuqing Zhu
@ 2015-07-27 10:46 ` Yuqing Zhu
2015-07-27 17:00 ` Otavio Salvador
2015-07-27 10:46 ` [meta-fsl-arm][PATCH v2 2/7] gstreamer1.0-plugins-base: Add gststreamsynchronizer " Yuqing Zhu
` (5 subsequent siblings)
6 siblings, 1 reply; 14+ messages in thread
From: Yuqing Zhu @ 2015-07-27 10:46 UTC (permalink / raw)
To: meta-freescale
-Remove default deinterlace flag in playbin for i.MX SoCs
-Remove native video flag in playbin for i.MX SoCs because it will cause subtitle error
Signed-off-by: Yuqing Zhu <b54851@freescale.com>
---
...ative-video.patch => gstplaybin-remove-flag-deinterlace.patch} | 8 ++++----
recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend | 8 ++++----
2 files changed, 8 insertions(+), 8 deletions(-)
rename recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/{gstplaybin-enable-native-video.patch => gstplaybin-remove-flag-deinterlace.patch} (84%)
diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/gstplaybin-enable-native-video.patch b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/gstplaybin-remove-flag-deinterlace.patch
similarity index 84%
rename from recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/gstplaybin-enable-native-video.patch
rename to recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/gstplaybin-remove-flag-deinterlace.patch
index 15322bd..ab6d4b1 100644
--- a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/gstplaybin-enable-native-video.patch
+++ b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/gstplaybin-remove-flag-deinterlace.patch
@@ -1,9 +1,9 @@
From 9cfb86cd100904f0ef2626f348695bd2d3416c6a Mon Sep 17 00:00:00 2001
From: Jian Li <jian.li@freescale.com>
Date: Mon, 23 Jun 2014 14:14:07 +0800
-Subject: [PATCH] gstplaybin enable native video
+Subject: [PATCH] gstplaybin remove default deinterlace flag
-- use native video patch in playbin for i.MX SoCs
+- remove default deinterlace flag in playbin for i.MX SoCs
Upstream Status: Inappropriate [platform specific]
@@ -22,10 +22,10 @@ index fc02ca3..c342438 100644
#define DEFAULT_FLAGS GST_PLAY_FLAG_AUDIO | GST_PLAY_FLAG_VIDEO | GST_PLAY_FLAG_TEXT | \
- GST_PLAY_FLAG_SOFT_VOLUME | GST_PLAY_FLAG_DEINTERLACE | \
- GST_PLAY_FLAG_SOFT_COLORBALANCE
-+ GST_PLAY_FLAG_SOFT_VOLUME | GST_PLAY_FLAG_NATIVE_VIDEO
++ GST_PLAY_FLAG_SOFT_VOLUME
#define DEFAULT_N_VIDEO 0
#define DEFAULT_CURRENT_VIDEO -1
#define DEFAULT_N_AUDIO 0
---
+--
1.7.9.5
diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend
index 5b939d4..aa34165 100644
--- a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend
+++ b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend
@@ -1,9 +1,9 @@
-
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
-SRC_URI_append_mxs = " file://gstplaybin-enable-native-video.patch"
-SRC_URI_append_mx5 = " file://gstplaybin-enable-native-video.patch"
-SRC_URI_append_mx6 = " file://gstplaybin-enable-native-video.patch"
+SRC_URI_append = " file://gstplaybin-remove-flag-deinterlace.patch"
+
+# Enable pango lib
+PACKAGECONFIG_append = " pango "
PACKAGE_ARCH_mxs = "${MACHINE_SOCARCH}"
PACKAGE_ARCH_mx5 = "${MACHINE_SOCARCH}"
--
1.9.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [meta-fsl-arm][PATCH v2 2/7] gstreamer1.0-plugins-base: Add gststreamsynchronizer related patch
2015-07-27 10:46 [meta-fsl-arm][PATCH v2 0/7] 3.14.38-6QP_Beta release Yuqing Zhu
2015-07-27 10:46 ` [meta-fsl-arm][PATCH v2 1/7] gstreamer1.0-plugins-base: Add gstplaybin related patch Yuqing Zhu
@ 2015-07-27 10:46 ` Yuqing Zhu
2015-07-27 17:03 ` Otavio Salvador
2015-07-27 10:46 ` [meta-fsl-arm][PATCH v2 3/7] gstreamer1.0-plugins-base: Add basetextoverlay " Yuqing Zhu
` (4 subsequent siblings)
6 siblings, 1 reply; 14+ messages in thread
From: Yuqing Zhu @ 2015-07-27 10:46 UTC (permalink / raw)
To: meta-freescale
-Send EOS event instead of GAP event as GAP event has issue when A/V have different duration.
-Stop sending second track EOS event if send the first track EOS return fail.
Fixed by ignore the return error.
Signed-off-by: Yuqing Zhu <b54851@freescale.com>
---
.../do-not-change-eos-event-to-gap-event2.patch | 51 ++++++++++++++++++++++
.../do-not-change-eos-event-to-gap-event3.patch | 33 ++++++++++++++
.../gstreamer/gstreamer1.0-plugins-base_%.bbappend | 5 ++-
3 files changed, 88 insertions(+), 1 deletion(-)
create mode 100755 recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/do-not-change-eos-event-to-gap-event2.patch
create mode 100755 recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/do-not-change-eos-event-to-gap-event3.patch
diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/do-not-change-eos-event-to-gap-event2.patch b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/do-not-change-eos-event-to-gap-event2.patch
new file mode 100755
index 0000000..5b5b949
--- /dev/null
+++ b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/do-not-change-eos-event-to-gap-event2.patch
@@ -0,0 +1,51 @@
+commit f9536544f5ad182b4f78d0143d1daa45dd64e624
+Author: Song Bing <b06498@freescale.com>
+Date: Thu Oct 9 17:37:43 2014 +0800
+
+[gststreamsynchronizer] send EOS event insterd of GAP event as GAP
+event has issue when A/V have different duration.
+
+send EOS event insterd of GAP event as GAP event has issue when A/V have different duration.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=736655
+
+Upstream Status: Inappropriate [platform specific]
+
+Signed-off-by: Song Bing <b06498@freescale.com>
+
+diff --git a/gst/playback/gststreamsynchronizer.c b/gst/playback/gststreamsynchronizer.c
+index 3e17c55..ff42d72 100644
+--- a/gst/playback/gststreamsynchronizer.c
++++ b/gst/playback/gststreamsynchronizer.c
+@@ -488,19 +488,24 @@ gst_stream_synchronizer_sink_event (GstPad * pad, GstObject * parent,
+ }
+ g_slist_free (pads);
+ } else {
+- /* if EOS, but no data has passed, then send EOS event */
++ /* if EOS, but no data has passed, then send something to replace EOS
++ * for preroll purposes */
+ if (!seen_data) {
+- GstEvent *gap_event;
++ GstEvent *eos_event;
+
+- gap_event = gst_event_new_eos ();
+- ret = gst_pad_push_event (srcpad, gap_event);
++ /* FIXME: change to EOS event as GAP event has issue when A/V have
++ * different duration */
++ eos_event = gst_event_new_eos ();
++ ret = gst_pad_push_event (srcpad, eos_event);
+ } else {
+- GstEvent *gap_event;
++ GstEvent *eos_event;
+
+ /* FIXME: Also send a GAP event to let audio sinks start their
+ * clock in case they did not have enough data yet */
+- gap_event = gst_event_new_gap (timestamp, GST_CLOCK_TIME_NONE);
+- ret = gst_pad_push_event (srcpad, gap_event);
++ /* FIXME: change to EOS event as GAP event has issue when A/V have
++ * different duration */
++ eos_event = gst_event_new_eos ();
++ ret = gst_pad_push_event (srcpad, eos_event);
+ }
+ }
+ gst_object_unref (srcpad);
diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/do-not-change-eos-event-to-gap-event3.patch b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/do-not-change-eos-event-to-gap-event3.patch
new file mode 100755
index 0000000..4a8b23c
--- /dev/null
+++ b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/do-not-change-eos-event-to-gap-event3.patch
@@ -0,0 +1,33 @@
+commit 3f7052aac5e0118a9a9e09fff2f65091be448972
+Author: Song Bing <b06498@freescale.com>
+Date: Thu Oct 23 13:35:13 2014 +0800
+
+[streamsynchronizer] One stream can finish playback.
+
+As changed GAP event EOS event, so EOS will send more times, which will
+cause send function return error.
+Streamsynchronizer will don’t send second track EOS event if send the
+first track EOS return fail. Fixed by ignore the return error.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=736655
+
+Upstream Status: Inappropriate [platform specific]
+
+Signed-off-by: Song Bing b06498@freescale.com
+
+diff --git a/gst/playback/gststreamsynchronizer.c b/gst/playback/gststreamsynchronizer.c
+index ff42d72..d1732c3 100644
+--- a/gst/playback/gststreamsynchronizer.c
++++ b/gst/playback/gststreamsynchronizer.c
+@@ -482,7 +482,10 @@ gst_stream_synchronizer_sink_event (GstPad * pad, GstObject * parent,
+ while (epad) {
+ pad = epad->data;
+ GST_DEBUG_OBJECT (pad, "Pushing EOS");
+- ret = ret && gst_pad_push_event (pad, gst_event_new_eos ());
++ /* FIXME: remove error check as GAP changed to EOS will send EOS
++ * more times, which will cause return error and then don't send
++ * EOS event to following tracks. */
++ gst_pad_push_event (pad, gst_event_new_eos ());
+ gst_object_unref (pad);
+ epad = g_slist_next (epad);
+ }
diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend
index aa34165..7cc8334 100644
--- a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend
+++ b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend
@@ -1,6 +1,9 @@
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
-SRC_URI_append = " file://gstplaybin-remove-flag-deinterlace.patch"
+SRC_URI_append = " file://gstplaybin-remove-flag-deinterlace.patch \
+ file://do-not-change-eos-event-to-gap-event2.patch \
+ file://do-not-change-eos-event-to-gap-event3.patch \
+"
# Enable pango lib
PACKAGECONFIG_append = " pango "
--
1.9.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [meta-fsl-arm][PATCH v2 3/7] gstreamer1.0-plugins-base: Add basetextoverlay related patch
2015-07-27 10:46 [meta-fsl-arm][PATCH v2 0/7] 3.14.38-6QP_Beta release Yuqing Zhu
2015-07-27 10:46 ` [meta-fsl-arm][PATCH v2 1/7] gstreamer1.0-plugins-base: Add gstplaybin related patch Yuqing Zhu
2015-07-27 10:46 ` [meta-fsl-arm][PATCH v2 2/7] gstreamer1.0-plugins-base: Add gststreamsynchronizer " Yuqing Zhu
@ 2015-07-27 10:46 ` Yuqing Zhu
2015-07-27 17:10 ` Otavio Salvador
2015-07-27 10:46 ` [meta-fsl-arm][PATCH v2 4/7] gstreamer1.0-plugins-base: Add gstplaysink " Yuqing Zhu
` (3 subsequent siblings)
6 siblings, 1 reply; 14+ messages in thread
From: Yuqing Zhu @ 2015-07-27 10:46 UTC (permalink / raw)
To: meta-freescale
Make memory copy when video buffer's memory is ready only
Signed-off-by: Yuqing Zhu <b54851@freescale.com>
---
...rlay-make-memory-copy-when-video-buffer-s.patch | 129 +++++++++++++++++++++
.../gstreamer/gstreamer1.0-plugins-base_%.bbappend | 1 +
2 files changed, 130 insertions(+)
create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-basetextoverlay-make-memory-copy-when-video-buffer-s.patch
diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-basetextoverlay-make-memory-copy-when-video-buffer-s.patch b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-basetextoverlay-make-memory-copy-when-video-buffer-s.patch
new file mode 100644
index 0000000..0206b79
--- /dev/null
+++ b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-basetextoverlay-make-memory-copy-when-video-buffer-s.patch
@@ -0,0 +1,129 @@
+From 3781d40940d46d7e6a502092d24aac7997f6da5b Mon Sep 17 00:00:00 2001
+From: Mingke Wang <mingke.wang@freescale.com>
+Date: Thu, 5 Mar 2015 12:06:23 +0800
+Subject: [PATCH 1/4] basetextoverlay: make memory copy when video buffer's
+ memory is ready only
+
+1. since gst_buffer_make_writable just lookup the refcount to determine if
+ a buffer is writable, and it will use _gst_buffer_copy() which don't
+ perform a deep memory copy even if the flag of a memory is set to
+ GST_MEMORY_FLAG_READONLY. So, we detect the memory flag and use
+ gst_buffer_copy_region with GST_BUFFER_COPY_DEEP parameter to perform
+ deep memory copy. if the allocator of a memory don't support mem_copy
+ interface, the it will return NULL, if this case, we can use
+ gst_buffer_make_writable() to get a shared memory buffer or the orignal
+ buffer if the buffer's refcount is 1.
+2. new feature is no added if caps has no feature during caps negotiation
+
+Upstream Status: Inappropriate [i.MX specific]
+
+Signed-off-by: Mingke Wang <mingke.wang@freescale.com>
+
+diff --git a/ext/pango/gstbasetextoverlay.c b/ext/pango/gstbasetextoverlay.c
+index c919861..3c0a1d7 100755
+--- a/ext/pango/gstbasetextoverlay.c
++++ b/ext/pango/gstbasetextoverlay.c
+@@ -747,6 +747,7 @@ gst_base_text_overlay_negotiate (GstBaseTextOverlay * overlay, GstCaps * caps)
+ if (f == NULL) {
+ f = gst_caps_features_new
+ (GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION, NULL);
++ gst_caps_set_features(overlay_caps, 0, f);
+ } else {
+ gst_caps_features_add (f,
+ GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION);
+@@ -1890,16 +1891,71 @@ gst_base_text_overlay_push_frame (GstBaseTextOverlay * overlay,
+ if (gst_pad_check_reconfigure (overlay->srcpad))
+ gst_base_text_overlay_negotiate (overlay, NULL);
+
+- video_frame = gst_buffer_make_writable (video_frame);
+-
+ if (overlay->attach_compo_to_buffer) {
+ GST_DEBUG_OBJECT (overlay, "Attaching text overlay image to video buffer");
++ video_frame = gst_buffer_make_writable (video_frame);
+ gst_buffer_add_video_overlay_composition_meta (video_frame,
+ overlay->composition);
+ /* FIXME: emulate shaded background box if want_shading=true */
+ goto done;
+ }
+
++ gint m = gst_buffer_n_memory(video_frame);
++ gboolean mem_rdonly = FALSE;
++ GstMemory *mem;
++ GstBuffer *orig = video_frame;
++
++ while (--m>=0) {
++ mem = gst_buffer_get_memory(video_frame, m);
++ if (GST_MEMORY_IS_READONLY(mem)) {
++ mem_rdonly = TRUE;
++ gst_memory_unref (mem);
++ break;
++ }
++ gst_memory_unref (mem);
++ }
++
++ if (mem_rdonly) {
++ // since gst_buffer_make_writable just lookup the refcount to determine if
++ // a buffer is writable, and it will use _gst_buffer_copy() which don't
++ // perform a deep memory copy even if the flag of a memory is set to
++ // GST_MEMORY_FLAG_READONLY. So, we detect the memory flag and use
++ // gst_buffer_copy_region with GST_BUFFER_COPY_DEEP parameter to perform
++ // deep memory copy. if the allocator of a memory don't support mem_copy
++ // interface, the it will return NULL, if this case, we can use
++ // gst_buffer_make_writable() to get a shared memory buffer or the orignal
++ // buffer if the buffer's refcount is 1.
++ GstBuffer *new_buf = gst_buffer_copy_region (video_frame,
++ GST_BUFFER_COPY_ALL | GST_BUFFER_COPY_DEEP, 0, -1);
++
++ GST_DEBUG_OBJECT (overlay, "copy %s video frame buffer %p -> %p",
++ g_type_name (GST_MINI_OBJECT_TYPE (video_frame)), video_frame, new_buf);
++
++ if (!new_buf) {
++ //maybe the allocator don't support mem_copy interface, the we just use
++ //gst_buffer_make_writable() to get a writable buffer.
++ video_frame = gst_buffer_make_writable (video_frame);
++ } else {
++ gst_mini_object_unref (video_frame);
++ GST_BUFFER_FLAG_UNSET (new_buf, GST_BUFFER_FLAG_TAG_MEMORY);
++ video_frame = new_buf;
++ }
++
++ if (!video_frame) {
++ GST_WARNING_OBJECT (overlay, "make writable buffer failed");
++ return GST_FLOW_OK;
++ }
++
++ m = gst_buffer_n_memory(video_frame);
++ while (--m>=0) {
++ mem = gst_buffer_get_memory(video_frame, m);
++ GST_MEMORY_FLAG_UNSET (mem, GST_MEMORY_FLAG_READONLY);
++ gst_memory_unref (mem);
++ }
++ } else {
++ video_frame = gst_buffer_make_writable (video_frame);
++ }
++
+ if (!gst_video_frame_map (&frame, &overlay->info, video_frame,
+ GST_MAP_READWRITE))
+ goto invalid_frame;
+@@ -1918,6 +1974,18 @@ gst_base_text_overlay_push_frame (GstBaseTextOverlay * overlay,
+
+ gst_video_frame_unmap (&frame);
+
++ if (mem_rdonly && orig == video_frame) {
++ //if we used the original buffer and it's mem is set to read only,
++ //recover the memory ready only flag since we unset it before
++ // gst_video_frame_map ()
++ m = gst_buffer_n_memory(video_frame);
++ while (--m>=0) {
++ mem = gst_buffer_get_memory(video_frame, m);
++ GST_MEMORY_FLAGS(mem) |= (GST_MEMORY_FLAG_READONLY);
++ gst_memory_unref (mem);
++ }
++ }
++
+ done:
+
+ return gst_pad_push (overlay->srcpad, video_frame);
+--
+1.7.9.5
+
diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend
index 7cc8334..9c5fdc6 100644
--- a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend
+++ b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend
@@ -3,6 +3,7 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
SRC_URI_append = " file://gstplaybin-remove-flag-deinterlace.patch \
file://do-not-change-eos-event-to-gap-event2.patch \
file://do-not-change-eos-event-to-gap-event3.patch \
+ file://0001-basetextoverlay-make-memory-copy-when-video-buffer-s.patch \
"
# Enable pango lib
--
1.9.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [meta-fsl-arm][PATCH v2 4/7] gstreamer1.0-plugins-base: Add gstplaysink related patch
2015-07-27 10:46 [meta-fsl-arm][PATCH v2 0/7] 3.14.38-6QP_Beta release Yuqing Zhu
` (2 preceding siblings ...)
2015-07-27 10:46 ` [meta-fsl-arm][PATCH v2 3/7] gstreamer1.0-plugins-base: Add basetextoverlay " Yuqing Zhu
@ 2015-07-27 10:46 ` Yuqing Zhu
2015-07-27 10:46 ` [meta-fsl-arm][PATCH v2 5/7] gstreamer1.0-plugins-base: Add ssaparse " Yuqing Zhu
` (2 subsequent siblings)
6 siblings, 0 replies; 14+ messages in thread
From: Yuqing Zhu @ 2015-07-27 10:46 UTC (permalink / raw)
To: meta-freescale
Don't set async of custom text-sink to false.
Set async to false lead to A/V sync problem when seeking.
The preroll need to use GAP event instead of set async to false.
Signed-off-by: Yuqing Zhu <b54851@freescale.com>
---
...-don-t-set-async-of-custom-text-sink-to-f.patch | 31 ++++++++++++++++++++++
.../gstreamer/gstreamer1.0-plugins-base_%.bbappend | 1 +
2 files changed, 32 insertions(+)
create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-gstplaysink-don-t-set-async-of-custom-text-sink-to-f.patch
diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-gstplaysink-don-t-set-async-of-custom-text-sink-to-f.patch b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-gstplaysink-don-t-set-async-of-custom-text-sink-to-f.patch
new file mode 100644
index 0000000..cd25f0a
--- /dev/null
+++ b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-gstplaysink-don-t-set-async-of-custom-text-sink-to-f.patch
@@ -0,0 +1,31 @@
+From 0a78555ea6c8c2f1ee27ee4707e8d7aa00ab7a66 Mon Sep 17 00:00:00 2001
+From: Mingke Wang <mingke.wang@freescale.com>
+Date: Thu, 19 Mar 2015 14:15:25 +0800
+Subject: [PATCH 2/4] gstplaysink: don't set async of custom text-sink to
+ false
+
+set async to false lead to A/V sync problem when seeking.
+the preroll need use GAP event instead of set async to false.
+
+Upstream Status: Inappropriate [i.MX specific]
+
+Signed-off-by: Mingke Wang <mingke.wang@freescale.com>
+
+diff --git a/gst/playback/gstplaysink.c b/gst/playback/gstplaysink.c
+old mode 100644
+new mode 100755
+index f5a2d42..fba0172
+--- a/gst/playback/gstplaysink.c
++++ b/gst/playback/gstplaysink.c
+@@ -2408,7 +2408,7 @@ gen_text_chain (GstPlaySink * playsink)
+ G_TYPE_BOOLEAN);
+ if (elem) {
+ /* make sure the sparse subtitles don't participate in the preroll */
+- g_object_set (elem, "async", FALSE, NULL);
++ //g_object_set (elem, "async", FALSE, NULL);
+ GST_DEBUG_OBJECT (playsink, "adding custom text sink");
+ gst_bin_add (bin, chain->sink);
+ /* NOTE streamsynchronizer needs streams decoupled */
+--
+1.7.9.5
+
diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend
index 9c5fdc6..f7a494f 100644
--- a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend
+++ b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend
@@ -4,6 +4,7 @@ SRC_URI_append = " file://gstplaybin-remove-flag-deinterlace.patch \
file://do-not-change-eos-event-to-gap-event2.patch \
file://do-not-change-eos-event-to-gap-event3.patch \
file://0001-basetextoverlay-make-memory-copy-when-video-buffer-s.patch \
+ file://0002-gstplaysink-don-t-set-async-of-custom-text-sink-to-f.patch \
"
# Enable pango lib
--
1.9.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [meta-fsl-arm][PATCH v2 5/7] gstreamer1.0-plugins-base: Add ssaparse related patch
2015-07-27 10:46 [meta-fsl-arm][PATCH v2 0/7] 3.14.38-6QP_Beta release Yuqing Zhu
` (3 preceding siblings ...)
2015-07-27 10:46 ` [meta-fsl-arm][PATCH v2 4/7] gstreamer1.0-plugins-base: Add gstplaysink " Yuqing Zhu
@ 2015-07-27 10:46 ` Yuqing Zhu
2015-07-27 10:46 ` [meta-fsl-arm][PATCH v2 6/7] gstreamer1.0-plugins-base: Add subparse " Yuqing Zhu
2015-07-27 10:46 ` [meta-fsl-arm][PATCH v2 7/7] gstreamer1.0-plugins-base: Add encodebin " Yuqing Zhu
6 siblings, 0 replies; 14+ messages in thread
From: Yuqing Zhu @ 2015-07-27 10:46 UTC (permalink / raw)
To: meta-freescale
Enhance SSA text lines parsing.
Signed-off-by: Yuqing Zhu <b54851@freescale.com>
---
...3-ssaparse-enhance-SSA-text-lines-parsing.patch | 225 +++++++++++++++++++++
.../gstreamer/gstreamer1.0-plugins-base_%.bbappend | 1 +
2 files changed, 226 insertions(+)
create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-ssaparse-enhance-SSA-text-lines-parsing.patch
diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-ssaparse-enhance-SSA-text-lines-parsing.patch b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-ssaparse-enhance-SSA-text-lines-parsing.patch
new file mode 100644
index 0000000..c3ce289
--- /dev/null
+++ b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-ssaparse-enhance-SSA-text-lines-parsing.patch
@@ -0,0 +1,225 @@
+From be6163cfa3a255493f9d75bad9541cbfe1723fee Mon Sep 17 00:00:00 2001
+From: Mingke Wang <mingke.wang@freescale.com>
+Date: Thu, 19 Mar 2015 14:17:10 +0800
+Subject: [PATCH 3/4] ssaparse: enhance SSA text lines parsing.
+
+some parser will pass in the original ssa text line which starts with "Dialog:"
+and there's are maybe multiple Dialog lines in one input buffer.
+
+Upstream Status: Inappropriate [i.MX specific]
+
+Signed-off-by: Mingke Wang <mingke.wang@freescale.com>
+
+diff --git a/gst/subparse/gstssaparse.c b/gst/subparse/gstssaparse.c
+old mode 100644
+new mode 100755
+index 06ecef9..0ab5dce
+--- a/gst/subparse/gstssaparse.c
++++ b/gst/subparse/gstssaparse.c
+@@ -260,6 +260,7 @@ gst_ssa_parse_remove_override_codes (GstSsaParse * parse, gchar * txt)
+ * gst_ssa_parse_push_line:
+ * @parse: caller element
+ * @txt: text to push
++ * @size: text size need to be parse
+ * @start: timestamp for the buffer
+ * @duration: duration for the buffer
+ *
+@@ -269,27 +270,133 @@ gst_ssa_parse_remove_override_codes (GstSsaParse * parse, gchar * txt)
+ * Returns: result of the push of the created buffer
+ */
+ static GstFlowReturn
+-gst_ssa_parse_push_line (GstSsaParse * parse, gchar * txt,
++gst_ssa_parse_push_line (GstSsaParse * parse, gchar * txt, gint size,
+ GstClockTime start, GstClockTime duration)
+ {
+ GstFlowReturn ret;
+ GstBuffer *buf;
+- gchar *t, *escaped;
++ gchar *t, *text, *p, *escaped, *p_start, *p_end;
+ gint num, i, len;
++ GstClockTime start_time = G_MAXUINT64, end_time = 0;
+
+- num = atoi (txt);
+- GST_LOG_OBJECT (parse, "Parsing line #%d at %" GST_TIME_FORMAT,
+- num, GST_TIME_ARGS (start));
+-
+- /* skip all non-text fields before the actual text */
++ p = text = g_malloc(size + 1);
++ *p = '\0';
+ t = txt;
+- for (i = 0; i < 8; ++i) {
+- t = strchr (t, ',');
++
++ /* there are may have multiple dialogue lines at a time */
++ while (*t) {
++ /* ignore leading white space characters */
++ while (isspace(*t))
++ t++;
++
++ /* ignore Format: and Style: lines */
++ if (strncmp(t, "Format:", 7) == 0 || strncmp(t, "Style:", 6) == 0) {
++ while (*t != '\0' && *t != '\n') {
++ t++;
++ }
++ }
++
++ if (*t == '\0')
++ break;
++
++ /* continue with next line */
++ if (*t == '\n') {
++ t++;
++ continue;
++ }
++
++ if(strncmp(t, "Dialogue:", 9) != 0) {
++ /* not started with "Dialogue:", it must be a line trimmed by demuxer */
++ num = atoi (t);
++ GST_LOG_OBJECT (parse, "Parsing line #%d at %" GST_TIME_FORMAT,
++ num, GST_TIME_ARGS (start));
++
++ /* skip all non-text fields before the actual text */
++ for (i = 0; i < 8; ++i) {
++ t = strchr (t, ',');
++ if (t == NULL)
++ break;
++ ++t;
++ }
++ } else {
++ /* started with "Dialogue:", update timestamp and duration */
++ /* time format are like Dialog:Mark,0:00:01.02,0:00:03.04,xx,xxx,... */
++ guint hour, min, sec, msec, len;
++ GstClockTime tmp;
++ gchar t_str[12] = {0};
++
++ /* find the first ',' */
++ p_start = strchr (t, ',');
++ if (p_start)
++ p_end = strchr (++p_start, ',');
++
++ if (p_start && p_end) {
++ /* copy text between first ',' and second ',' */
++ strncpy(t_str, p_start, p_end - p_start);
++ if (sscanf (t_str, "%u:%u:%u.%u", &hour, &min, &sec, &msec) == 4) {
++ tmp = ((hour*3600) + (min*60) + sec) * GST_SECOND + msec*GST_MSECOND;
++ GST_DEBUG_OBJECT (parse, "Get start time:%02d:%02d:%02d:%03d\n",
++ hour, min, sec, msec);
++ if (start_time > tmp)
++ start_time = tmp;
++ } else {
++ GST_WARNING_OBJECT (parse,
++ "failed to parse ssa start timestamp string :%s", t_str);
++ }
++
++ p_start = p_end;
++ p_end = strchr (++p_start, ',');
++ if (p_end) {
++ /* copy text between second ',' and third ',' */
++ strncpy(t_str, p_start, p_end - p_start);
++ if (sscanf (t_str, "%u:%u:%u.%u", &hour, &min, &sec, &msec) == 4) {
++ tmp = ((hour*3600) + (min*60) + sec)*GST_SECOND + msec*GST_MSECOND;
++ GST_DEBUG_OBJECT(parse, "Get end time:%02d:%02d:%02d:%03d\n",
++ hour, min, sec, msec);
++ if (end_time < tmp)
++ end_time = tmp;
++ } else {
++ GST_WARNING_OBJECT (parse,
++ "failed to parse ssa end timestamp string :%s", t_str);
++ }
++ }
++ }
++
++ /* now skip all non-text fields before the actual text */
++ for (i = 0; i <= 8; ++i) {
++ t = strchr (t, ',');
++ if (t == NULL)
++ break;
++ ++t;
++ }
++ }
++
++ /* line end before expected number of ',', not a Dialogue line */
+ if (t == NULL)
+- return GST_FLOW_ERROR;
+- ++t;
++ break;
++
++ /* if not the first line, and the last character of previous line is '\0',
++ * then replace it with '\N' */
++ if (p != text && *p == '\0') {
++ *p++ = '\\';
++ *p++ = 'N';
++ }
++
++ /* copy all actual text of this line */
++ while ((*t != '\0') && (*t != '\n'))
++ *p++ = *t++;
++
++ /* add a terminator at the end */
++ *p = '\0';
++ }
++
++ /* not valid text found in this buffer return OK to let caller unref buffer */
++ if (strlen(text) <= 0) {
++ GST_WARNING_OBJECT (parse, "Not valid text found in this buffer\n");
++ return GST_FLOW_ERROR;
+ }
+
++ t = text;
+ GST_LOG_OBJECT (parse, "Text : %s", t);
+
+ if (gst_ssa_parse_remove_override_codes (parse, t)) {
+@@ -307,13 +414,22 @@ gst_ssa_parse_push_line (GstSsaParse * parse, gchar * txt,
+ gst_buffer_fill (buf, 0, escaped, len + 1);
+ gst_buffer_set_size (buf, len);
+ g_free (escaped);
++ g_free(t);
++
++ if (start_time != G_MAXUINT64)
++ GST_BUFFER_TIMESTAMP (buf) = start_time;
++ else
++ GST_BUFFER_TIMESTAMP (buf) = start;
+
+- GST_BUFFER_TIMESTAMP (buf) = start;
+- GST_BUFFER_DURATION (buf) = duration;
++ if (end_time > start_time)
++ GST_BUFFER_DURATION (buf) = end_time - start_time;
++ else
++ GST_BUFFER_DURATION (buf) = duration;
+
+ GST_LOG_OBJECT (parse, "Pushing buffer with timestamp %" GST_TIME_FORMAT
+- " and duration %" GST_TIME_FORMAT, GST_TIME_ARGS (start),
+- GST_TIME_ARGS (duration));
++ " and duration %" GST_TIME_FORMAT,
++ GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)),
++ GST_TIME_ARGS (GST_BUFFER_DURATION (buf)));
+
+ ret = gst_pad_push (parse->srcpad, buf);
+
+@@ -333,6 +449,7 @@ gst_ssa_parse_chain (GstPad * sinkpad, GstObject * parent, GstBuffer * buf)
+ GstClockTime ts;
+ gchar *txt;
+ GstMapInfo map;
++ gint size;
+
+ if (G_UNLIKELY (!parse->framed))
+ goto not_framed;
+@@ -350,13 +467,14 @@ gst_ssa_parse_chain (GstPad * sinkpad, GstObject * parent, GstBuffer * buf)
+ /* make double-sure it's 0-terminated and all */
+ gst_buffer_map (buf, &map, GST_MAP_READ);
+ txt = g_strndup ((gchar *) map.data, map.size);
++ size = map.size;
+ gst_buffer_unmap (buf, &map);
+
+ if (txt == NULL)
+ goto empty_text;
+
+ ts = GST_BUFFER_TIMESTAMP (buf);
+- ret = gst_ssa_parse_push_line (parse, txt, ts, GST_BUFFER_DURATION (buf));
++ ret = gst_ssa_parse_push_line (parse, txt, size, ts, GST_BUFFER_DURATION (buf));
+
+ if (ret != GST_FLOW_OK && GST_CLOCK_TIME_IS_VALID (ts)) {
+ GstSegment segment;
+--
+1.7.9.5
+
diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend
index f7a494f..551ae93 100644
--- a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend
+++ b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend
@@ -5,6 +5,7 @@ SRC_URI_append = " file://gstplaybin-remove-flag-deinterlace.patch \
file://do-not-change-eos-event-to-gap-event3.patch \
file://0001-basetextoverlay-make-memory-copy-when-video-buffer-s.patch \
file://0002-gstplaysink-don-t-set-async-of-custom-text-sink-to-f.patch \
+ file://0003-ssaparse-enhance-SSA-text-lines-parsing.patch \
"
# Enable pango lib
--
1.9.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [meta-fsl-arm][PATCH v2 6/7] gstreamer1.0-plugins-base: Add subparse related patch
2015-07-27 10:46 [meta-fsl-arm][PATCH v2 0/7] 3.14.38-6QP_Beta release Yuqing Zhu
` (4 preceding siblings ...)
2015-07-27 10:46 ` [meta-fsl-arm][PATCH v2 5/7] gstreamer1.0-plugins-base: Add ssaparse " Yuqing Zhu
@ 2015-07-27 10:46 ` Yuqing Zhu
2015-07-27 10:46 ` [meta-fsl-arm][PATCH v2 7/7] gstreamer1.0-plugins-base: Add encodebin " Yuqing Zhu
6 siblings, 0 replies; 14+ messages in thread
From: Yuqing Zhu @ 2015-07-27 10:46 UTC (permalink / raw)
To: meta-freescale
Set need_segment after sink pad received GST_EVENT_SEGMENT.
Subparse works in push mode, chain funciton will be called once up stream element
finished the seeking and flushing.
If set need_segment flag in src pad event handler, the segment event will be pushed earlier,
result in the subtitle text will be send out to down stream from the beginning.
Signed-off-by: Yuqing Zhu <b54851@freescale.com>
---
...t-need_segment-after-sink-pad-received-GS.patch | 69 ++++++++++++++++++++++
.../gstreamer/gstreamer1.0-plugins-base_%.bbappend | 1 +
2 files changed, 70 insertions(+)
create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-subparse-set-need_segment-after-sink-pad-received-GS.patch
diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-subparse-set-need_segment-after-sink-pad-received-GS.patch b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-subparse-set-need_segment-after-sink-pad-received-GS.patch
new file mode 100644
index 0000000..39d8ad3
--- /dev/null
+++ b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-subparse-set-need_segment-after-sink-pad-received-GS.patch
@@ -0,0 +1,69 @@
+From ed09c8fd2c9c2b5384b72cc70af3728be6694e64 Mon Sep 17 00:00:00 2001
+From: Mingke Wang <mingke.wang@freescale.com>
+Date: Thu, 19 Mar 2015 14:20:26 +0800
+Subject: [PATCH 4/4] subparse: set need_segment after sink pad received
+ GST_EVENT_SEGMENT
+
+subparse works in push mode, chain funciton will be called once
+up stream element finished the seeking and flushing.
+if set need_segment flag in src pad event handler, the segment
+event will be pushed earlier, result in the subtitle text will
+be send out to down stream from the beginning.
+
+Upstream Status: Inappropriate [i.MX specific]
+
+Signed-off-by: Mingke Wang <mingke.wang@freescale.com>
+
+diff --git a/gst/subparse/gstsubparse.c b/gst/subparse/gstsubparse.c
+old mode 100644
+new mode 100755
+index b565e93..7741ccc
+--- a/gst/subparse/gstsubparse.c
++++ b/gst/subparse/gstsubparse.c
+@@ -266,22 +266,20 @@ gst_sub_parse_src_event (GstPad * pad, GstObject * parent, GstEvent * event)
+ goto beach;
+ }
+
++ /* Apply the seek to our segment */
++ gst_segment_do_seek (&self->segment, rate, format, flags,
++ start_type, start, stop_type, stop, &update);
++
++ GST_DEBUG_OBJECT (self, "segment after seek: %" GST_SEGMENT_FORMAT,
++ &self->segment);
++
+ /* Convert that seek to a seeking in bytes at position 0,
+ FIXME: could use an index */
+ ret = gst_pad_push_event (self->sinkpad,
+ gst_event_new_seek (rate, GST_FORMAT_BYTES, flags,
+ GST_SEEK_TYPE_SET, 0, GST_SEEK_TYPE_NONE, 0));
+
+- if (ret) {
+- /* Apply the seek to our segment */
+- gst_segment_do_seek (&self->segment, rate, format, flags,
+- start_type, start, stop_type, stop, &update);
+-
+- GST_DEBUG_OBJECT (self, "segment after seek: %" GST_SEGMENT_FORMAT,
+- &self->segment);
+-
+- self->need_segment = TRUE;
+- } else {
++ if (!ret) {
+ GST_WARNING_OBJECT (self, "seek to 0 bytes failed");
+ }
+
+@@ -1632,8 +1630,10 @@ gst_sub_parse_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
+ gst_event_parse_segment (event, &s);
+ if (s->format == GST_FORMAT_TIME)
+ gst_event_copy_segment (event, &self->segment);
+- GST_DEBUG_OBJECT (self, "newsegment (%s)",
+- gst_format_get_name (self->segment.format));
++ GST_DEBUG_OBJECT (self, "newsegment (%s) %" GST_SEGMENT_FORMAT,
++ gst_format_get_name (self->segment.format), &self->segment);
++
++ self->need_segment = TRUE;
+
+ /* if not time format, we'll either start with a 0 timestamp anyway or
+ * it's following a seek in which case we'll have saved the requested
+--
+1.7.9.5
+
diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend
index 551ae93..04c3a54 100644
--- a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend
+++ b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend
@@ -6,6 +6,7 @@ SRC_URI_append = " file://gstplaybin-remove-flag-deinterlace.patch \
file://0001-basetextoverlay-make-memory-copy-when-video-buffer-s.patch \
file://0002-gstplaysink-don-t-set-async-of-custom-text-sink-to-f.patch \
file://0003-ssaparse-enhance-SSA-text-lines-parsing.patch \
+ file://0004-subparse-set-need_segment-after-sink-pad-received-GS.patch \
"
# Enable pango lib
--
1.9.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [meta-fsl-arm][PATCH v2 7/7] gstreamer1.0-plugins-base: Add encodebin related patch
2015-07-27 10:46 [meta-fsl-arm][PATCH v2 0/7] 3.14.38-6QP_Beta release Yuqing Zhu
` (5 preceding siblings ...)
2015-07-27 10:46 ` [meta-fsl-arm][PATCH v2 6/7] gstreamer1.0-plugins-base: Add subparse " Yuqing Zhu
@ 2015-07-27 10:46 ` Yuqing Zhu
2015-07-27 17:11 ` Otavio Salvador
6 siblings, 1 reply; 14+ messages in thread
From: Yuqing Zhu @ 2015-07-27 10:46 UTC (permalink / raw)
To: meta-freescale
Need more buffers in output queue for better performance.
Signed-off-by: Yuqing Zhu <b54851@freescale.com>
---
...eed-more-buffers-in-output-queue-for-bett.patch | 34 ++++++++++++++++++++++
.../gstreamer/gstreamer1.0-plugins-base_%.bbappend | 1 +
2 files changed, 35 insertions(+)
create mode 100644 recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/encodebin-Need-more-buffers-in-output-queue-for-bett.patch
diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/encodebin-Need-more-buffers-in-output-queue-for-bett.patch b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/encodebin-Need-more-buffers-in-output-queue-for-bett.patch
new file mode 100644
index 0000000..570a513
--- /dev/null
+++ b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/encodebin-Need-more-buffers-in-output-queue-for-bett.patch
@@ -0,0 +1,34 @@
+From 540e02c92c75e08b90326863dc787fa5cadf9da6 Mon Sep 17 00:00:00 2001
+From: Song Bing <b06498@freescale.com>
+Date: Fri, 13 Mar 2015 18:04:31 +0800
+Subject: [PATCH] encodebin: Need more buffers in output queue for better
+ performance
+
+Need more buffers in output queue for better performance
+
+https://bugzilla.gnome.org/show_bug.cgi?id=744191
+
+Upstream Status: Inappropriate [i.MX specific]
+
+Signed-off-by: Song Bing <b06498@freescale.com>
+---
+ gst/encoding/gstencodebin.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/gst/encoding/gstencodebin.c b/gst/encoding/gstencodebin.c
+index 6728e58..32daae4 100644
+--- a/gst/encoding/gstencodebin.c
++++ b/gst/encoding/gstencodebin.c
+@@ -1138,8 +1138,7 @@ _create_stream_group (GstEncodeBin * ebin, GstEncodingProfile * sprof,
+ * We only use a 1buffer long queue here, the actual queueing will be done
+ * in the input queue */
+ last = sgroup->outqueue = gst_element_factory_make ("queue", NULL);
+- g_object_set (sgroup->outqueue, "max-size-buffers", (guint32) 1,
+- "max-size-bytes", (guint32) 0, "max-size-time", (guint64) 0,
++ g_object_set (sgroup->outqueue, "max-size-time", (guint64) 0,
+ "silent", TRUE, NULL);
+
+ gst_bin_add (GST_BIN (ebin), sgroup->outqueue);
+--
+1.7.9.5
+
diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend
index 04c3a54..d1659e3 100644
--- a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend
+++ b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend
@@ -7,6 +7,7 @@ SRC_URI_append = " file://gstplaybin-remove-flag-deinterlace.patch \
file://0002-gstplaysink-don-t-set-async-of-custom-text-sink-to-f.patch \
file://0003-ssaparse-enhance-SSA-text-lines-parsing.patch \
file://0004-subparse-set-need_segment-after-sink-pad-received-GS.patch \
+ file://encodebin-Need-more-buffers-in-output-queue-for-bett.patch \
"
# Enable pango lib
--
1.9.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [meta-fsl-arm][PATCH v2 1/7] gstreamer1.0-plugins-base: Add gstplaybin related patch
2015-07-27 10:46 ` [meta-fsl-arm][PATCH v2 1/7] gstreamer1.0-plugins-base: Add gstplaybin related patch Yuqing Zhu
@ 2015-07-27 17:00 ` Otavio Salvador
2015-07-28 10:18 ` Zhu Carol
0 siblings, 1 reply; 14+ messages in thread
From: Otavio Salvador @ 2015-07-27 17:00 UTC (permalink / raw)
To: Yuqing Zhu; +Cc: meta-freescale
Hello,
On Mon, Jul 27, 2015 at 7:46 AM, Yuqing Zhu <b54851@freescale.com> wrote:
> -Remove default deinterlace flag in playbin for i.MX SoCs
>
> -Remove native video flag in playbin for i.MX SoCs because it will cause subtitle error
>
> Signed-off-by: Yuqing Zhu <b54851@freescale.com>
> ---
> ...ative-video.patch => gstplaybin-remove-flag-deinterlace.patch} | 8 ++++----
> recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend | 8 ++++----
> 2 files changed, 8 insertions(+), 8 deletions(-)
> rename recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/{gstplaybin-enable-native-video.patch => gstplaybin-remove-flag-deinterlace.patch} (84%)
>
> diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/gstplaybin-enable-native-video.patch b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/gstplaybin-remove-flag-deinterlace.patch
> similarity index 84%
> rename from recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/gstplaybin-enable-native-video.patch
> rename to recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/gstplaybin-remove-flag-deinterlace.patch
> index 15322bd..ab6d4b1 100644
> --- a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/gstplaybin-enable-native-video.patch
> +++ b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/gstplaybin-remove-flag-deinterlace.patch
> @@ -1,9 +1,9 @@
> From 9cfb86cd100904f0ef2626f348695bd2d3416c6a Mon Sep 17 00:00:00 2001
> From: Jian Li <jian.li@freescale.com>
> Date: Mon, 23 Jun 2014 14:14:07 +0800
> -Subject: [PATCH] gstplaybin enable native video
> +Subject: [PATCH] gstplaybin remove default deinterlace flag
>
> -- use native video patch in playbin for i.MX SoCs
> +- remove default deinterlace flag in playbin for i.MX SoCs
>
> Upstream Status: Inappropriate [platform specific]
>
> @@ -22,10 +22,10 @@ index fc02ca3..c342438 100644
> #define DEFAULT_FLAGS GST_PLAY_FLAG_AUDIO | GST_PLAY_FLAG_VIDEO | GST_PLAY_FLAG_TEXT | \
> - GST_PLAY_FLAG_SOFT_VOLUME | GST_PLAY_FLAG_DEINTERLACE | \
> - GST_PLAY_FLAG_SOFT_COLORBALANCE
> -+ GST_PLAY_FLAG_SOFT_VOLUME | GST_PLAY_FLAG_NATIVE_VIDEO
> ++ GST_PLAY_FLAG_SOFT_VOLUME
> #define DEFAULT_N_VIDEO 0
> #define DEFAULT_CURRENT_VIDEO -1
> #define DEFAULT_N_AUDIO 0
> ---
> +--
> 1.7.9.5
>
> diff --git a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend
> index 5b939d4..aa34165 100644
> --- a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend
> +++ b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend
> @@ -1,9 +1,9 @@
> -
> FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
>
> -SRC_URI_append_mxs = " file://gstplaybin-enable-native-video.patch"
> -SRC_URI_append_mx5 = " file://gstplaybin-enable-native-video.patch"
> -SRC_URI_append_mx6 = " file://gstplaybin-enable-native-video.patch"
> +SRC_URI_append = " file://gstplaybin-remove-flag-deinterlace.patch"
This need to be made imx specific. This is being appended in all SoCs
which imply a machine contamination so please fix this.
> +# Enable pango lib
> +PACKAGECONFIG_append = " pango "
This is a DISTRO option and not acceptable here. Does i.MX depends on
Pango support? I doubt it.
> PACKAGE_ARCH_mxs = "${MACHINE_SOCARCH}"
> PACKAGE_ARCH_mx5 = "${MACHINE_SOCARCH}"
> --
> 1.9.1
>
> --
> _______________________________________________
> meta-freescale mailing list
> meta-freescale@yoctoproject.org
> https://lists.yoctoproject.org/listinfo/meta-freescale
--
Otavio Salvador O.S. Systems
http://www.ossystems.com.br http://code.ossystems.com.br
Mobile: +55 (53) 9981-7854 Mobile: +1 (347) 903-9750
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [meta-fsl-arm][PATCH v2 2/7] gstreamer1.0-plugins-base: Add gststreamsynchronizer related patch
2015-07-27 10:46 ` [meta-fsl-arm][PATCH v2 2/7] gstreamer1.0-plugins-base: Add gststreamsynchronizer " Yuqing Zhu
@ 2015-07-27 17:03 ` Otavio Salvador
0 siblings, 0 replies; 14+ messages in thread
From: Otavio Salvador @ 2015-07-27 17:03 UTC (permalink / raw)
To: Yuqing Zhu, Carlos Rafael Giani; +Cc: meta-freescale
On Mon, Jul 27, 2015 at 7:46 AM, Yuqing Zhu <b54851@freescale.com> wrote:
> -Send EOS event instead of GAP event as GAP event has issue when A/V have different duration.
>
> -Stop sending second track EOS event if send the first track EOS return fail.
> Fixed by ignore the return error.
>
> Signed-off-by: Yuqing Zhu <b54851@freescale.com>
Those patches are not made i.MX specific. Plus patch header is not
following the guidelines.
Carlos, can you provide some feedback on this and the other gst patches?
--
Otavio Salvador O.S. Systems
http://www.ossystems.com.br http://code.ossystems.com.br
Mobile: +55 (53) 9981-7854 Mobile: +1 (347) 903-9750
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [meta-fsl-arm][PATCH v2 3/7] gstreamer1.0-plugins-base: Add basetextoverlay related patch
2015-07-27 10:46 ` [meta-fsl-arm][PATCH v2 3/7] gstreamer1.0-plugins-base: Add basetextoverlay " Yuqing Zhu
@ 2015-07-27 17:10 ` Otavio Salvador
0 siblings, 0 replies; 14+ messages in thread
From: Otavio Salvador @ 2015-07-27 17:10 UTC (permalink / raw)
To: Yuqing Zhu; +Cc: meta-freescale
On Mon, Jul 27, 2015 at 7:46 AM, Yuqing Zhu <b54851@freescale.com> wrote:
> Make memory copy when video buffer's memory is ready only
>
> Signed-off-by: Yuqing Zhu <b54851@freescale.com>
Same drill here. Same issues in the patches.
--
Otavio Salvador O.S. Systems
http://www.ossystems.com.br http://code.ossystems.com.br
Mobile: +55 (53) 9981-7854 Mobile: +1 (347) 903-9750
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [meta-fsl-arm][PATCH v2 7/7] gstreamer1.0-plugins-base: Add encodebin related patch
2015-07-27 10:46 ` [meta-fsl-arm][PATCH v2 7/7] gstreamer1.0-plugins-base: Add encodebin " Yuqing Zhu
@ 2015-07-27 17:11 ` Otavio Salvador
0 siblings, 0 replies; 14+ messages in thread
From: Otavio Salvador @ 2015-07-27 17:11 UTC (permalink / raw)
To: Yuqing Zhu; +Cc: meta-freescale
On Mon, Jul 27, 2015 at 7:46 AM, Yuqing Zhu <b54851@freescale.com> wrote:
> Need more buffers in output queue for better performance.
>
> Signed-off-by: Yuqing Zhu <b54851@freescale.com>
Same drill.
--
Otavio Salvador O.S. Systems
http://www.ossystems.com.br http://code.ossystems.com.br
Mobile: +55 (53) 9981-7854 Mobile: +1 (347) 903-9750
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [meta-fsl-arm][PATCH v2 1/7] gstreamer1.0-plugins-base: Add gstplaybin related patch
2015-07-27 17:00 ` Otavio Salvador
@ 2015-07-28 10:18 ` Zhu Carol
2015-07-28 10:54 ` Otavio Salvador
0 siblings, 1 reply; 14+ messages in thread
From: Zhu Carol @ 2015-07-28 10:18 UTC (permalink / raw)
To: Otavio Salvador; +Cc: meta-freescale
Hello Otavio,
gstreamer1.0-plugins-base doesn't include gst pango lib by default. We need to enable pango lib compiling in ./poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base.inc, which is used to generate the texture. And it is i.MX 6/7 SOC specific
-----Original Message-----
From: Otavio Salvador [mailto:otavio.salvador@ossystems.com.br]
Sent: Tuesday, July 28, 2015 1:01 AM
To: Zhu Yuqing-B54851
Cc: meta-freescale@yoctoproject.org
Subject: Re: [meta-freescale] [meta-fsl-arm][PATCH v2 1/7] gstreamer1.0-plugins-base: Add gstplaybin related patch
Hello,
On Mon, Jul 27, 2015 at 7:46 AM, Yuqing Zhu <b54851@freescale.com> wrote:
> -Remove default deinterlace flag in playbin for i.MX SoCs
>
> -Remove native video flag in playbin for i.MX SoCs because it will
> cause subtitle error
>
> Signed-off-by: Yuqing Zhu <b54851@freescale.com>
> ---
> ...ative-video.patch => gstplaybin-remove-flag-deinterlace.patch} | 8
> ++++----
> recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend | 8
> ++++----
> 2 files changed, 8 insertions(+), 8 deletions(-) rename
> recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/{gstplaybin-ena
> ble-native-video.patch => gstplaybin-remove-flag-deinterlace.patch}
> (84%)
>
> diff --git
> a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/gstplaybin-en
> able-native-video.patch
> b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/gstplaybin-re
> move-flag-deinterlace.patch
> similarity index 84%
> rename from
> recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/gstplaybin-enab
> le-native-video.patch rename to
> recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/gstplaybin-remo
> ve-flag-deinterlace.patch
> index 15322bd..ab6d4b1 100644
> ---
> a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/gstplaybin-en
> able-native-video.patch
> +++ b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/gstplaybi
> +++ n-remove-flag-deinterlace.patch
> @@ -1,9 +1,9 @@
> From 9cfb86cd100904f0ef2626f348695bd2d3416c6a Mon Sep 17 00:00:00
> 2001
> From: Jian Li <jian.li@freescale.com>
> Date: Mon, 23 Jun 2014 14:14:07 +0800
> -Subject: [PATCH] gstplaybin enable native video
> +Subject: [PATCH] gstplaybin remove default deinterlace flag
>
> -- use native video patch in playbin for i.MX SoCs
> +- remove default deinterlace flag in playbin for i.MX SoCs
>
> Upstream Status: Inappropriate [platform specific]
>
> @@ -22,10 +22,10 @@ index fc02ca3..c342438 100644
> #define DEFAULT_FLAGS GST_PLAY_FLAG_AUDIO | GST_PLAY_FLAG_VIDEO | GST_PLAY_FLAG_TEXT | \
> - GST_PLAY_FLAG_SOFT_VOLUME | GST_PLAY_FLAG_DEINTERLACE | \
> - GST_PLAY_FLAG_SOFT_COLORBALANCE
> -+ GST_PLAY_FLAG_SOFT_VOLUME |
> -+ GST_PLAY_FLAG_NATIVE_VIDEO
> ++ GST_PLAY_FLAG_SOFT_VOLUME
> #define DEFAULT_N_VIDEO 0
> #define DEFAULT_CURRENT_VIDEO -1
> #define DEFAULT_N_AUDIO 0
> ---
> +--
> 1.7.9.5
>
> diff --git
> a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend
> b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend
> index 5b939d4..aa34165 100644
> ---
> a/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappend
> +++ b/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_%.bbappen
> +++ d
> @@ -1,9 +1,9 @@
> -
> FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
>
> -SRC_URI_append_mxs = " file://gstplaybin-enable-native-video.patch"
> -SRC_URI_append_mx5 = " file://gstplaybin-enable-native-video.patch"
> -SRC_URI_append_mx6 = " file://gstplaybin-enable-native-video.patch"
> +SRC_URI_append = " file://gstplaybin-remove-flag-deinterlace.patch"
This need to be made imx specific. This is being appended in all SoCs which imply a machine contamination so please fix this.
> +# Enable pango lib
> +PACKAGECONFIG_append = " pango "
This is a DISTRO option and not acceptable here. Does i.MX depends on Pango support? I doubt it.
> PACKAGE_ARCH_mxs = "${MACHINE_SOCARCH}"
> PACKAGE_ARCH_mx5 = "${MACHINE_SOCARCH}"
> --
> 1.9.1
>
> --
> _______________________________________________
> meta-freescale mailing list
> meta-freescale@yoctoproject.org
> https://lists.yoctoproject.org/listinfo/meta-freescale
--
Otavio Salvador O.S. Systems
http://www.ossystems.com.br http://code.ossystems.com.br
Mobile: +55 (53) 9981-7854 Mobile: +1 (347) 903-9750
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [meta-fsl-arm][PATCH v2 1/7] gstreamer1.0-plugins-base: Add gstplaybin related patch
2015-07-28 10:18 ` Zhu Carol
@ 2015-07-28 10:54 ` Otavio Salvador
0 siblings, 0 replies; 14+ messages in thread
From: Otavio Salvador @ 2015-07-28 10:54 UTC (permalink / raw)
To: Zhu Carol, Carlos Rafael Giani; +Cc: meta-freescale
On Tue, Jul 28, 2015 at 7:18 AM, Zhu Carol <B54851@freescale.com> wrote:
> gstreamer1.0-plugins-base doesn't include gst pango lib by default. We need to enable pango lib compiling in ./poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base.inc, which is used to generate the texture. And it is i.MX 6/7 SOC specific
Any SoC, for use the texture will need pango, no?
Carlos, can you advise here?
--
Otavio Salvador O.S. Systems
http://www.ossystems.com.br http://code.ossystems.com.br
Mobile: +55 (53) 9981-7854 Mobile: +1 (347) 903-9750
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2015-07-28 10:54 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-07-27 10:46 [meta-fsl-arm][PATCH v2 0/7] 3.14.38-6QP_Beta release Yuqing Zhu
2015-07-27 10:46 ` [meta-fsl-arm][PATCH v2 1/7] gstreamer1.0-plugins-base: Add gstplaybin related patch Yuqing Zhu
2015-07-27 17:00 ` Otavio Salvador
2015-07-28 10:18 ` Zhu Carol
2015-07-28 10:54 ` Otavio Salvador
2015-07-27 10:46 ` [meta-fsl-arm][PATCH v2 2/7] gstreamer1.0-plugins-base: Add gststreamsynchronizer " Yuqing Zhu
2015-07-27 17:03 ` Otavio Salvador
2015-07-27 10:46 ` [meta-fsl-arm][PATCH v2 3/7] gstreamer1.0-plugins-base: Add basetextoverlay " Yuqing Zhu
2015-07-27 17:10 ` Otavio Salvador
2015-07-27 10:46 ` [meta-fsl-arm][PATCH v2 4/7] gstreamer1.0-plugins-base: Add gstplaysink " Yuqing Zhu
2015-07-27 10:46 ` [meta-fsl-arm][PATCH v2 5/7] gstreamer1.0-plugins-base: Add ssaparse " Yuqing Zhu
2015-07-27 10:46 ` [meta-fsl-arm][PATCH v2 6/7] gstreamer1.0-plugins-base: Add subparse " Yuqing Zhu
2015-07-27 10:46 ` [meta-fsl-arm][PATCH v2 7/7] gstreamer1.0-plugins-base: Add encodebin " Yuqing Zhu
2015-07-27 17:11 ` Otavio Salvador
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.