All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.