patches/videoparsers: h264: Disable passthorugh mode enabling
authorSreerenj Balachandran <sreerenj.balachandran@intel.com>
Fri, 27 Nov 2015 12:24:55 +0000 (14:24 +0200)
committerSreerenj Balachandran <sreerenj.balachandran@intel.com>
Fri, 27 Nov 2015 12:24:55 +0000 (14:24 +0200)
This is a quick fix for regression introduced by the upstream
commit e8908f5aeef952566f6bccde743c7735d3f8c6ef in h264 videoparser.

The patch is disabling the passthrough mode, otherwise it will
break multi-layer mvc stream parsing.

https://bugzilla.gnome.org/show_bug.cgi?id=758656

patches/videoparsers/0005-h265parse-include-gstvaapiparse.h.patch [deleted file]
patches/videoparsers/0005-videoparsers-h264-Disable-passthorugh-mode-enabling.patch [new file with mode: 0644]
patches/videoparsers/0006-h265parse-fix-build-with-GStreamer-1.5.patch [deleted file]
patches/videoparsers/0006-h265parse-include-gstvaapiparse.h.patch [new file with mode: 0644]
patches/videoparsers/0007-h265parse-fix-build-with-GStreamer-1.5.patch [new file with mode: 0644]
patches/videoparsers/series.frag

diff --git a/patches/videoparsers/0005-h265parse-include-gstvaapiparse.h.patch b/patches/videoparsers/0005-h265parse-include-gstvaapiparse.h.patch
deleted file mode 100644 (file)
index 75bc8d5..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-From 06ab8f433c02590b63e8afdf394a2a1caf570fad Mon Sep 17 00:00:00 2001
-From: Sreerenj Balachandran <sreerenj.balachandran@intel.com>
-Date: Thu, 16 Apr 2015 18:04:53 +0300
-Subject: [PATCH 5/6] h265parse: include gstvaapiparse.h
-
----
- gst/vaapi/gsth265parse.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/gst/vaapi/gsth265parse.c b/gst/vaapi/gsth265parse.c
-index d649681..5f65ab6 100644
---- a/gst/vaapi/gsth265parse.c
-+++ b/gst/vaapi/gsth265parse.c
-@@ -22,6 +22,7 @@
- #  include "config.h"
- #endif
-
-+#include "gstvaapiparse.h"
- #include <gst/base/base.h>
- #include <gst/pbutils/pbutils.h>
- #include <gst/video/video.h>
-@@ -100,7 +101,7 @@ gst_h265_parse_class_init (GstH265ParseClass * klass)
-   GstBaseParseClass *parse_class = GST_BASE_PARSE_CLASS (klass);
-   GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
-
--  GST_DEBUG_CATEGORY_INIT (h265_parse_debug, "h265parse", 0, "h265 parser");
-+  GST_DEBUG_CATEGORY_INIT (h265_parse_debug, "vaapiparse_h265", 0, "h265 parser");
-
-   gobject_class->finalize = gst_h265_parse_finalize;
-   gobject_class->set_property = gst_h265_parse_set_property;
---
-2.5.1
diff --git a/patches/videoparsers/0005-videoparsers-h264-Disable-passthorugh-mode-enabling.patch b/patches/videoparsers/0005-videoparsers-h264-Disable-passthorugh-mode-enabling.patch
new file mode 100644 (file)
index 0000000..4366e70
--- /dev/null
@@ -0,0 +1,43 @@
+From 90251ef253564e7e53c754205cb506e863a93a6c Mon Sep 17 00:00:00 2001
+From: Sreerenj Balachandran <sreerenj.balachandran@intel.com>
+Date: Thu, 26 Nov 2015 19:13:43 +0200
+Subject: [PATCH] videoparsers: h264: Disable passthorugh mode enabling
+
+Enabling passthorugh mode for optimization is cauing multiple
+issues while parsing MVC streams. Specifically if streams have
+two separate layers (base-view and non-base-view).
+
+Proper fixes needed in many places:
+(handle prefix nal unit, handle non-base-view slice nal extension,
+fix the picture_start detection for multi-layer-mvc streams etc)
+
+https://bugzilla.gnome.org/show_bug.cgi?id=758656
+---
+ gst/vaapi/gsth264parse.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/gst/vaapi/gsth264parse.c b/gst/vaapi/gsth264parse.c
+index 915c2d7..445a791 100644
+--- a/gst/vaapi/gsth264parse.c
++++ b/gst/vaapi/gsth264parse.c
+@@ -2356,6 +2356,9 @@ gst_h264_parse_pre_push_frame (GstBaseParse * parse, GstBaseParseFrame * frame)
+     }
+   }
+
++  /* Fixme: setting passthrough mode for MVC streams causing multiple
++   * issues. Disabing passthourgh mode for now */
++#if 0
+   /* If SPS/PPS and a keyframe have been parsed, and we're not converting,
+    * we might switch to passthrough mode now on the basis that we've seen
+    * the SEI packets and know optional caps params (such as multiview).
+@@ -2367,6 +2370,7 @@ gst_h264_parse_pre_push_frame (GstBaseParse * parse, GstBaseParseFrame * frame)
+       gst_base_parse_set_passthrough (parse, TRUE);
+     }
+   }
++#endif
+
+   gst_h264_parse_reset_frame (h264parse);
+
+--
+2.5.0
+
diff --git a/patches/videoparsers/0006-h265parse-fix-build-with-GStreamer-1.5.patch b/patches/videoparsers/0006-h265parse-fix-build-with-GStreamer-1.5.patch
deleted file mode 100644 (file)
index 0bf8617..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-From aaf9569d096392d73f45bcf9973d58b90a7ecd27 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?V=C3=ADctor=20Manuel=20J=C3=A1quez=20Leal?=
- <victorx.jaquez@intel.com>
-Date: Mon, 14 Sep 2015 19:11:59 +0200
-Subject: [PATCH 6/6] h265parse: fix build with GStreamer < 1.5
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
----
- gst/vaapi/gsth265parse.c | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
-diff --git a/gst/vaapi/gsth265parse.c b/gst/vaapi/gsth265parse.c
-index 5f65ab6..35b0812 100644
---- a/gst/vaapi/gsth265parse.c
-+++ b/gst/vaapi/gsth265parse.c
-@@ -141,8 +141,12 @@ gst_h265_parse_init (GstH265Parse * h265parse)
- {
-   h265parse->frame_out = gst_adapter_new ();
-   gst_base_parse_set_pts_interpolation (GST_BASE_PARSE (h265parse), FALSE);
-+#if GST_CHECK_VERSION(1,3,0)
-   GST_PAD_SET_ACCEPT_INTERSECT (GST_BASE_PARSE_SINK_PAD (h265parse));
-+#endif
-+#if GST_CHECK_VERSION(1,5,0)
-   GST_PAD_SET_ACCEPT_TEMPLATE (GST_BASE_PARSE_SINK_PAD (h265parse));
-+#endif
- }
-
-
-@@ -1774,8 +1778,14 @@ gst_h265_parse_pre_push_frame (GstBaseParse * parse, GstBaseParseFrame * frame)
-         GST_TAG_VIDEO_CODEC, caps);
-     gst_caps_unref (caps);
-
-+#if GST_CHECK_VERSION(1,5,0)
-     gst_base_parse_merge_tags (parse, taglist, GST_TAG_MERGE_REPLACE);
-     gst_tag_list_unref (taglist);
-+#else
-+    gst_pad_push_event (GST_BASE_PARSE_SRC_PAD (h265parse),
-+        gst_event_new_tag (taglist));
-+#endif
-+
-
-     /* also signals the end of first-frame processing */
-     h265parse->sent_codec_tag = TRUE;
---
-2.5.1
diff --git a/patches/videoparsers/0006-h265parse-include-gstvaapiparse.h.patch b/patches/videoparsers/0006-h265parse-include-gstvaapiparse.h.patch
new file mode 100644 (file)
index 0000000..75bc8d5
--- /dev/null
@@ -0,0 +1,32 @@
+From 06ab8f433c02590b63e8afdf394a2a1caf570fad Mon Sep 17 00:00:00 2001
+From: Sreerenj Balachandran <sreerenj.balachandran@intel.com>
+Date: Thu, 16 Apr 2015 18:04:53 +0300
+Subject: [PATCH 5/6] h265parse: include gstvaapiparse.h
+
+---
+ gst/vaapi/gsth265parse.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/gst/vaapi/gsth265parse.c b/gst/vaapi/gsth265parse.c
+index d649681..5f65ab6 100644
+--- a/gst/vaapi/gsth265parse.c
++++ b/gst/vaapi/gsth265parse.c
+@@ -22,6 +22,7 @@
+ #  include "config.h"
+ #endif
+
++#include "gstvaapiparse.h"
+ #include <gst/base/base.h>
+ #include <gst/pbutils/pbutils.h>
+ #include <gst/video/video.h>
+@@ -100,7 +101,7 @@ gst_h265_parse_class_init (GstH265ParseClass * klass)
+   GstBaseParseClass *parse_class = GST_BASE_PARSE_CLASS (klass);
+   GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
+
+-  GST_DEBUG_CATEGORY_INIT (h265_parse_debug, "h265parse", 0, "h265 parser");
++  GST_DEBUG_CATEGORY_INIT (h265_parse_debug, "vaapiparse_h265", 0, "h265 parser");
+
+   gobject_class->finalize = gst_h265_parse_finalize;
+   gobject_class->set_property = gst_h265_parse_set_property;
+--
+2.5.1
diff --git a/patches/videoparsers/0007-h265parse-fix-build-with-GStreamer-1.5.patch b/patches/videoparsers/0007-h265parse-fix-build-with-GStreamer-1.5.patch
new file mode 100644 (file)
index 0000000..0bf8617
--- /dev/null
@@ -0,0 +1,48 @@
+From aaf9569d096392d73f45bcf9973d58b90a7ecd27 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?V=C3=ADctor=20Manuel=20J=C3=A1quez=20Leal?=
+ <victorx.jaquez@intel.com>
+Date: Mon, 14 Sep 2015 19:11:59 +0200
+Subject: [PATCH 6/6] h265parse: fix build with GStreamer < 1.5
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Signed-off-by: Víctor Manuel Jáquez Leal <victorx.jaquez@intel.com>
+---
+ gst/vaapi/gsth265parse.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/gst/vaapi/gsth265parse.c b/gst/vaapi/gsth265parse.c
+index 5f65ab6..35b0812 100644
+--- a/gst/vaapi/gsth265parse.c
++++ b/gst/vaapi/gsth265parse.c
+@@ -141,8 +141,12 @@ gst_h265_parse_init (GstH265Parse * h265parse)
+ {
+   h265parse->frame_out = gst_adapter_new ();
+   gst_base_parse_set_pts_interpolation (GST_BASE_PARSE (h265parse), FALSE);
++#if GST_CHECK_VERSION(1,3,0)
+   GST_PAD_SET_ACCEPT_INTERSECT (GST_BASE_PARSE_SINK_PAD (h265parse));
++#endif
++#if GST_CHECK_VERSION(1,5,0)
+   GST_PAD_SET_ACCEPT_TEMPLATE (GST_BASE_PARSE_SINK_PAD (h265parse));
++#endif
+ }
+
+
+@@ -1774,8 +1778,14 @@ gst_h265_parse_pre_push_frame (GstBaseParse * parse, GstBaseParseFrame * frame)
+         GST_TAG_VIDEO_CODEC, caps);
+     gst_caps_unref (caps);
+
++#if GST_CHECK_VERSION(1,5,0)
+     gst_base_parse_merge_tags (parse, taglist, GST_TAG_MERGE_REPLACE);
+     gst_tag_list_unref (taglist);
++#else
++    gst_pad_push_event (GST_BASE_PARSE_SRC_PAD (h265parse),
++        gst_event_new_tag (taglist));
++#endif
++
+
+     /* also signals the end of first-frame processing */
+     h265parse->sent_codec_tag = TRUE;
+--
+2.5.1
index d9f809ce09a2bb88481cb5cf470a7a6538aee70a..ae09dbcb2683d098c9a3c78b7ca824fa734f1343 100644 (file)
@@ -5,9 +5,10 @@ videoparsers_patches_base = \
        0002-h264parse-fix-build-with-older-GStreamer-1.x-stacks.patch  \
         0003-h264parse-default-to-byte-stream-nalu-format-Annex-B.patch \
         0004-h264parse-Disable-3D-video-support-for-GStreamer-1.5.patch \
+        0005-videoparsers-h264-Disable-passthorugh-mode-enabling.patch  \
        $(NULL)
 
 videoparsers_patches_1_4p = \
-        0005-h265parse-include-gstvaapiparse.h.patch           \
-        0006-h265parse-fix-build-with-GStreamer-1.5.patch      \
+        0006-h265parse-include-gstvaapiparse.h.patch           \
+        0007-h265parse-fix-build-with-GStreamer-1.5.patch      \
        $(NULL)