Diff
Modified: trunk/Tools/ChangeLog (236959 => 236960)
--- trunk/Tools/ChangeLog 2018-10-09 09:14:37 UTC (rev 236959)
+++ trunk/Tools/ChangeLog 2018-10-09 13:54:57 UTC (rev 236960)
@@ -1,3 +1,16 @@
+2018-10-09 Philippe Normand <pnorm...@igalia.com>
+
+ [JHBuild] Update to GStreamer 1.14.4
+ https://bugs.webkit.org/show_bug.cgi?id=190395
+
+ Reviewed by Xabier Rodriguez-Calvar.
+
+ * gstreamer/jhbuild.modules: Remove patches merged in 1.14.4 and bump version of GStreamer modules.
+ * gstreamer/patches/gst-plugins-good-0007-matroskademux-Allow-Matroska-headers-to-be-read-more.patch: Removed.
+ * gstreamer/patches/gst-plugins-good-0008-matroskademux-Refactor-track-parsing-out-from-adding.patch: Removed.
+ * gstreamer/patches/gst-plugins-good-0009-matroskademux-Parse-successive-Tracks-elements.patch: Removed.
+ * gstreamer/patches/gst-plugins-good-0010-matroskademux-Emit-no-more-pads-after-parsing-Tracks.patch: Removed.
+
2018-10-08 Wenson Hsieh <wenson_hs...@apple.com>
[macOS] API test DragAndDropTests.DropColor is failing on macOS 10.12
Modified: trunk/Tools/gstreamer/jhbuild.modules (236959 => 236960)
--- trunk/Tools/gstreamer/jhbuild.modules 2018-10-09 09:14:37 UTC (rev 236959)
+++ trunk/Tools/gstreamer/jhbuild.modules 2018-10-09 13:54:57 UTC (rev 236960)
@@ -51,7 +51,7 @@
<dependencies>
<dep package="orc"/>
</dependencies>
- <branch hash="sha256:13ae530eb1d4566c3aa0cff1bbb8e64c643065bb12e2e7c707f311ab4a390456" module="gstreamer/gstreamer-${version}.tar.xz" repo="gstreamer" version="1.14.3">
+ <branch hash="sha256:f94f6696c5f05a3b3a9183e39c5f5c0b779f75a04c0efa497e7920afa985ffc7" module="gstreamer/gstreamer-${version}.tar.xz" repo="gstreamer" version="1.14.4">
<patch file="gstreamer-0001-protection-Add-a-new-definition-for-unspecified-syst.patch" strip="1" /> <!-- Merged as 05a3da347b3b8dbaf470793dc3f9ebb23e6fc67f -->
<patch file="gstreamer-0002-protection-Fix-the-string-to-define-unspecified-syst.patch" strip="1" /> <!-- Merged as b89b1802df44829a0c034db5807bc893ad3c7774 -->
</branch>
@@ -66,7 +66,7 @@
<dependencies>
<dep package="gstreamer"/>
</dependencies>
- <branch hash="sha256:f0b319c36be0ffc2a00380c77ba269cdf04e2b39bbc49d30b641fc35aa0b7952" module="gst-plugins-base/gst-plugins-base-${version}.tar.xz" repo="gstreamer" version="1.14.3" >
+ <branch hash="sha256:ca6139490e48863e7706d870ff4e8ac9f417b56f3b9e4b3ce490c13b09a77461" module="gst-plugins-base/gst-plugins-base-${version}.tar.xz" repo="gstreamer" version="1.14.4" >
<patch file="gst-plugins-base-0001-parsebin-Post-STREAM_COLLECTION-on-EVENT_STREAM_COLL.patch" strip="1"/> <!-- Merged as 89d0e9cc92a86aa0227ee87406737b6d31670aea -->
</branch>
</autotools>
@@ -77,7 +77,7 @@
<dep package="libvpx"/>
</dependencies>
- <branch hash="sha256:5112bce6af0be62760687ca47873c90ce4d65d3fe920a3adf8145db7b07bff5d" module="gst-plugins-good/gst-plugins-good-${version}.tar.xz" repo="gstreamer" version="1.14.3">
+ <branch hash="sha256:5f8b553260cb0aac56890053d8511db1528d53cae10f0287cfce2cb2acc70979" module="gst-plugins-good/gst-plugins-good-${version}.tar.xz" repo="gstreamer" version="1.14.4">
<patch file="gst-plugins-good-0002-qtdemux-add-context-for-a-preferred-protection.patch" strip="1" /> <!-- Merged as ee4b45da24cb7465b416c230597f8efc7b2c45cb -->
<patch file="gst-plugins-good-0003-qtdemux-also-push-buffers-without-encryption-info-in.patch" strip="1" /> <!-- Merged as 844423ff99e281fc831303b92861ed43ce5c1518 -->
<patch file="gst-plugins-good-0001-qtdemux-Do-not-run-the-preferred-decryptor-context-q.patch" strip="1" /> <!-- Merged as 3e063703b3a51b8aaa7f75f36c4660c583a60e93 -->
@@ -87,10 +87,6 @@
<patch file="gst-plugins-good-0004-qtdemux-Add-initial-support-for-AV1-demuxing.patch" strip="1" /> <!-- Merged as b6e8c6323e01249bb3ac4f121c3adc3ea8d924bf (to be shipped in 1.16) -->
<patch file="gst-plugins-good-0005-qtdemux-Extract-AV1-codec_data-and-put-it-in-the-cap.patch" strip="1" /> <!-- Merged as 43ee4055c3d03a9f99acdf3c05f45e154899edef (to be shipped in 1.16) -->
<patch file="gst-plugins-good-0006-qtdemux-Recognize-more-AV1-atoms.patch" strip="1" /> <!-- Merged as e07ce9afb4edb2ea898763c7ea11f0af2704104e (to be shipped in 1.16) -->
- <patch file="gst-plugins-good-0007-matroskademux-Allow-Matroska-headers-to-be-read-more.patch" strip="1" /> <!-- Merged as 9dc7859184d4b7ad1dd7e2b54704e994dbace329 (to be shipped in 1.14.4) -->
- <patch file="gst-plugins-good-0008-matroskademux-Refactor-track-parsing-out-from-adding.patch" strip="1" /> <!-- Merged as f279bc5336dda19741a5996a108da42dd3201366 (to be shipped in 1.14.4) -->
- <patch file="gst-plugins-good-0009-matroskademux-Parse-successive-Tracks-elements.patch" strip="1" /> <!-- Merged as 0e60076a390fd3ef53d350940b2c695ff7bbe008 (to be shipped in 1.14.4) -->
- <patch file="gst-plugins-good-0010-matroskademux-Emit-no-more-pads-after-parsing-Tracks.patch" strip="1" /> <!-- Merged as 7ceefec7141069b4adf4451a874766f8760c66d6 (to be shipped in 1.14.4) -->
<patch file="gst-plugins-good-0011-matroska-Add-the-WebM-encrypted-content-support-in-m.patch" strip="1" /> <!-- Merged as 0432826950d4d80fe2b50ffd3757dc08155de9e3 -->
<patch file="gst-plugins-good-0012-matroskdemux-do-not-use-MapInfo.data-after-unmapping.patch" strip="1" /> <!-- Merged as defae350358660e557c74e41a4fe8a8bb327e9c8 -->
</branch>
@@ -103,7 +99,7 @@
<dep package="openh264"/>
<dep package="aom"/>
</dependencies>
- <branch hash="sha256:b2224e5d9c1b85ad51233f6135524bb9e16a9172d395edc79c73b89094659fd5" module="gst-plugins-bad/gst-plugins-bad-${version}.tar.xz" repo="gstreamer" version="1.14.3">
+ <branch hash="sha256:910b4e0e2e897e8b6d06767af1779d70057c309f67292f485ff988d087aa0de5" module="gst-plugins-bad/gst-plugins-bad-${version}.tar.xz" repo="gstreamer" version="1.14.4">
<patch file="gst-plugins-bad-0001-aomenc-Add-support-for-10-12bit-decoding.patch" strip="1" /> <!-- Merged as 1d96d9e842dd71882f54ddffbf6c1ccecdb03fcd (to be shipped in 1.16) -->
<patch file="gst-plugins-bad-0002-aomenc-Handle-8-bit_depth-images-with-AOM_IMG_FMT_HI.patch" strip="1" /> <!-- Merged as 10a37e0c3528a721084441c37af37baef0908ddc (to be shipped in 1.16) -->
</branch>
@@ -113,11 +109,11 @@
<dependencies>
<dep package="gst-plugins-base"/>
</dependencies>
- <branch hash="sha256:9b03529bb45785ad1b6b1f4856c52a832ad5fc472285ce49174439e8015ab677" module="gst-libav/gst-libav-${version}.tar.xz" repo="gstreamer" version="1.14.3" />
+ <branch hash="sha256:dfd78591901df7853eab7e56a86c34a1b03635da0d3d56b89aa577f1897865da" module="gst-libav/gst-libav-${version}.tar.xz" repo="gstreamer" version="1.14.4" />
</autotools>
<autotools id="gstreamer-vaapi" autogen-sh="configure" autogenargs="--disable-examples --disable-gtk-doc">
- <branch hash="sha256:8f5e65cb96aa6e44ff80926366d4a6fef9b8da68a04bab4bf2cbed93941c74f0" module="gstreamer-vaapi/gstreamer-vaapi-${version}.tar.xz" repo="gstreamer" version="1.14.3" />
+ <branch hash="sha256:ce18dbfe961c6a8d31270231686075586bf7a7df62b778c8e7f5ec148251d0a3" module="gstreamer-vaapi/gstreamer-vaapi-${version}.tar.xz" repo="gstreamer" version="1.14.4" />
<dependencies>
<dep package="gstreamer"/>
<dep package="gst-plugins-base"/>
Deleted: trunk/Tools/gstreamer/patches/gst-plugins-good-0007-matroskademux-Allow-Matroska-headers-to-be-read-more.patch (236959 => 236960)
--- trunk/Tools/gstreamer/patches/gst-plugins-good-0007-matroskademux-Allow-Matroska-headers-to-be-read-more.patch 2018-10-09 09:14:37 UTC (rev 236959)
+++ trunk/Tools/gstreamer/patches/gst-plugins-good-0007-matroskademux-Allow-Matroska-headers-to-be-read-more.patch 2018-10-09 13:54:57 UTC (rev 236960)
@@ -1,45 +0,0 @@
-From 9dc7859184d4b7ad1dd7e2b54704e994dbace329 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Alicia=20Boya=20Garc=C3=ADa?= <ntr...@gmail.com>
-Date: Thu, 30 Nov 2017 20:44:23 +0100
-Subject: [PATCH 7/9] matroskademux: Allow Matroska headers to be read more
- than once
-
-This is necessary for MSE, where a new MSE initialization segment may be
-appended at any point. These MSE initialization segments consist of an
-entire WebM file until the first Cluster element (not included). [1]
-
-Note that track definitions are ignored on successive headers, they must
-match, but this is not checked by matroskademux (look for
-`(!demux->tracks_parsed)` in the code).
-
-Source pads are not altered when the new headers are read.
-
-This patch has been splitted from the original patch from eocanha in [2].
-
-[1] https://www.w3.org/TR/mse-byte-stream-format-webm/
-[2] https://bug334082.bugzilla-attachments.gnome.org/attachment.cgi?id=362212
-
-https://bugzilla.gnome.org/show_bug.cgi?id=793333
----
- gst/matroska/matroska-demux.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/gst/matroska/matroska-demux.c b/gst/matroska/matroska-demux.c
-index b7e13bb80..24a729485 100644
---- a/gst/matroska/matroska-demux.c
-+++ b/gst/matroska/matroska-demux.c
-@@ -4984,6 +4984,11 @@ gst_matroska_demux_parse_id (GstMatroskaDemux * demux, guint32 id,
- case GST_MATROSKA_READ_STATE_DATA:
- case GST_MATROSKA_READ_STATE_SEEK:
- switch (id) {
-+ case GST_EBML_ID_HEADER:
-+ GST_READ_CHECK (gst_matroska_demux_flush (demux, read));
-+ demux->common.state = GST_MATROSKA_READ_STATE_SEGMENT;
-+ gst_matroska_demux_check_seekability (demux);
-+ break;
- case GST_MATROSKA_ID_SEGMENTINFO:
- if (!demux->common.segmentinfo_parsed) {
- GST_READ_CHECK (gst_matroska_demux_take (demux, read, &ebml));
---
-2.17.1
-
Deleted: trunk/Tools/gstreamer/patches/gst-plugins-good-0008-matroskademux-Refactor-track-parsing-out-from-adding.patch (236959 => 236960)
--- trunk/Tools/gstreamer/patches/gst-plugins-good-0008-matroskademux-Refactor-track-parsing-out-from-adding.patch 2018-10-09 09:14:37 UTC (rev 236959)
+++ trunk/Tools/gstreamer/patches/gst-plugins-good-0008-matroskademux-Refactor-track-parsing-out-from-adding.patch 2018-10-09 13:54:57 UTC (rev 236960)
@@ -1,266 +0,0 @@
-From 1ef01359e5ab267ea13253cea688869697f7ff0d Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Alicia=20Boya=20Garc=C3=ADa?= <ab...@igalia.com>
-Date: Mon, 24 Sep 2018 17:20:15 +0200
-Subject: [PATCH] (backport for 1.4.13) matroskademux: Refactor track parsing
- out from adding tracks
-
-This splits gst_matroska_demux_add_stream() into:
-
-* gst_matroska_demux_parse_stream(): will read the Matroska bytestream
- and fill a GstMatroskaTrackContext.
-
-* gst_matroska_demux_parse_tracks(): will check there are no repeated
- tracks.
-
-* gst_matroska_demux_add_stream(): creates and sets up the pad for the
- track.
-
-https://bugzilla.gnome.org/show_bug.cgi?id=793333
----
- gst/matroska/matroska-demux.c | 114 +++++++++++++++++++++-------------
- 1 file changed, 72 insertions(+), 42 deletions(-)
-
-diff --git a/gst/matroska/matroska-demux.c b/gst/matroska/matroska-demux.c
-index 3f329ed6e..7c8990cf4 100644
---- a/gst/matroska/matroska-demux.c
-+++ b/gst/matroska/matroska-demux.c
-@@ -575,21 +575,16 @@ beach:
- }
-
- static GstFlowReturn
--gst_matroska_demux_add_stream (GstMatroskaDemux * demux, GstEbmlRead * ebml)
-+gst_matroska_demux_parse_stream (GstMatroskaDemux * demux, GstEbmlRead * ebml,
-+ GstMatroskaTrackContext ** dest_context)
- {
-- GstElementClass *klass = GST_ELEMENT_GET_CLASS (demux);
- GstMatroskaTrackContext *context;
-- GstPadTemplate *templ = NULL;
-- GstStreamFlags stream_flags;
- GstCaps *caps = NULL;
- GstTagList *cached_taglist;
-- gchar *padname = NULL;
- GstFlowReturn ret;
- guint32 id, riff_fourcc = 0;
- guint16 riff_audio_fmt = 0;
-- GstEvent *stream_start;
- gchar *codec = NULL;
-- gchar *stream_id;
-
- DEBUG_ELEMENT_START (demux, ebml, "TrackEntry");
-
-@@ -602,8 +597,6 @@ gst_matroska_demux_add_stream (GstMatroskaDemux * demux, GstEbmlRead * ebml)
- /* allocate generic... if we know the type, we'll g_renew()
- * with the precise type */
- context = g_new0 (GstMatroskaTrackContext, 1);
-- g_ptr_array_add (demux->common.src, context);
-- context->index = demux->common.num_streams;
- context->index_writer_id = -1;
- context->type = 0; /* no type yet */
- context->default_duration = 0;
-@@ -620,10 +613,9 @@ gst_matroska_demux_add_stream (GstMatroskaDemux * demux, GstEbmlRead * ebml)
- context->dts_only = FALSE;
- context->intra_only = FALSE;
- context->tags = gst_tag_list_new_empty ();
-- demux->common.num_streams++;
-- g_assert (demux->common.src->len == demux->common.num_streams);
-
-- GST_DEBUG_OBJECT (demux, "Stream number %d", context->index);
-+ GST_DEBUG_OBJECT (demux, "Parsing a TrackEntry (%d tracks parsed so far)",
-+ demux->common.num_streams);
-
- /* try reading the trackentry headers */
- while (ret == GST_FLOW_OK && gst_ebml_read_has_remaining (ebml, 1, TRUE)) {
-@@ -642,12 +634,6 @@ gst_matroska_demux_add_stream (GstMatroskaDemux * demux, GstEbmlRead * ebml)
- GST_ERROR_OBJECT (demux, "Invalid TrackNumber 0");
- ret = GST_FLOW_ERROR;
- break;
-- } else if (!gst_matroska_read_common_tracknumber_unique (&demux->common,
-- num)) {
-- GST_ERROR_OBJECT (demux, "TrackNumber %" G_GUINT64_FORMAT
-- " is not unique", num);
-- ret = GST_FLOW_ERROR;
-- break;
- }
-
- GST_DEBUG_OBJECT (demux, "TrackNumber: %" G_GUINT64_FORMAT, num);
-@@ -714,8 +700,6 @@ gst_matroska_demux_add_stream (GstMatroskaDemux * demux, GstEbmlRead * ebml)
- context->type = 0;
- break;
- }
-- g_ptr_array_index (demux->common.src, demux->common.num_streams - 1)
-- = context;
- break;
- }
-
-@@ -734,8 +718,6 @@ gst_matroska_demux_add_stream (GstMatroskaDemux * demux, GstEbmlRead * ebml)
- break;
- }
- videocontext = (GstMatroskaTrackVideoContext *) context;
-- g_ptr_array_index (demux->common.src, demux->common.num_streams - 1)
-- = context;
-
- while (ret == GST_FLOW_OK &&
- gst_ebml_read_has_remaining (ebml, 1, TRUE)) {
-@@ -1011,8 +993,6 @@ gst_matroska_demux_add_stream (GstMatroskaDemux * demux, GstEbmlRead * ebml)
- break;
-
- audiocontext = (GstMatroskaTrackAudioContext *) context;
-- g_ptr_array_index (demux->common.src, demux->common.num_streams - 1)
-- = context;
-
- while (ret == GST_FLOW_OK &&
- gst_ebml_read_has_remaining (ebml, 1, TRUE)) {
-@@ -1341,11 +1321,9 @@ gst_matroska_demux_add_stream (GstMatroskaDemux * demux, GstEbmlRead * ebml)
- if (ret == GST_FLOW_OK || ret == GST_FLOW_EOS)
- GST_WARNING_OBJECT (ebml, "Unknown stream/codec in track entry header");
-
-- demux->common.num_streams--;
-- g_ptr_array_remove_index (demux->common.src, demux->common.num_streams);
-- g_assert (demux->common.src->len == demux->common.num_streams);
- gst_matroska_track_free (context);
--
-+ context = NULL;
-+ *dest_context = NULL;
- return ret;
- }
-
-@@ -1356,14 +1334,12 @@ gst_matroska_demux_add_stream (GstMatroskaDemux * demux, GstEbmlRead * ebml)
- if (cached_taglist)
- gst_tag_list_insert (context->tags, cached_taglist, GST_TAG_MERGE_APPEND);
-
-- /* now create the GStreamer connectivity */
-+ /* compute caps */
- switch (context->type) {
- case GST_MATROSKA_TRACK_TYPE_VIDEO:{
- GstMatroskaTrackVideoContext *videocontext =
- (GstMatroskaTrackVideoContext *) context;
-
-- padname = g_strdup_printf ("video_%u", demux->num_v_streams++);
-- templ = gst_element_class_get_pad_template (klass, "video_%u");
- caps = gst_matroska_demux_video_caps (videocontext,
- context->codec_id, context->codec_priv,
- context->codec_priv_size, &codec, &riff_fourcc);
-@@ -1381,8 +1357,6 @@ gst_matroska_demux_add_stream (GstMatroskaDemux * demux, GstEbmlRead * ebml)
- GstMatroskaTrackAudioContext *audiocontext =
- (GstMatroskaTrackAudioContext *) context;
-
-- padname = g_strdup_printf ("audio_%u", demux->num_a_streams++);
-- templ = gst_element_class_get_pad_template (klass, "audio_%u");
- caps = gst_matroska_demux_audio_caps (audiocontext,
- context->codec_id, context->codec_priv, context->codec_priv_size,
- &codec, &riff_audio_fmt);
-@@ -1400,8 +1374,6 @@ gst_matroska_demux_add_stream (GstMatroskaDemux * demux, GstEbmlRead * ebml)
- GstMatroskaTrackSubtitleContext *subtitlecontext =
- (GstMatroskaTrackSubtitleContext *) context;
-
-- padname = g_strdup_printf ("subtitle_%u", demux->num_t_streams++);
-- templ = gst_element_class_get_pad_template (klass, "subtitle_%u");
- caps = gst_matroska_demux_subtitle_caps (subtitlecontext,
- context->codec_id, context->codec_priv, context->codec_priv_size);
- break;
-@@ -1468,9 +1440,56 @@ gst_matroska_demux_add_stream (GstMatroskaDemux * demux, GstEbmlRead * ebml)
- context->stream_headers, caps);
- }
-
-+ context->caps = caps;
-+
-+ /* tadaah! */
-+ *dest_context = context;
-+ return ret;
-+}
-+
-+static void
-+gst_matroska_demux_add_stream (GstMatroskaDemux * demux,
-+ GstMatroskaTrackContext * context)
-+{
-+ GstElementClass *klass = GST_ELEMENT_GET_CLASS (demux);
-+ gchar *padname = NULL;
-+ GstPadTemplate *templ = NULL;
-+ GstStreamFlags stream_flags;
-+
-+ GstEvent *stream_start;
-+
-+ gchar *stream_id;
-+
-+ g_ptr_array_add (demux->common.src, context);
-+ context->index = demux->common.num_streams++;
-+ g_assert (demux->common.src->len == demux->common.num_streams);
-+ g_ptr_array_index (demux->common.src, demux->common.num_streams - 1) =
-+ context;
-+
-+ /* now create the GStreamer connectivity */
-+ switch (context->type) {
-+ case GST_MATROSKA_TRACK_TYPE_VIDEO:
-+ padname = g_strdup_printf ("video_%u", demux->num_v_streams++);
-+ templ = gst_element_class_get_pad_template (klass, "video_%u");
-+ break;
-+
-+ case GST_MATROSKA_TRACK_TYPE_AUDIO:
-+ padname = g_strdup_printf ("audio_%u", demux->num_a_streams++);
-+ templ = gst_element_class_get_pad_template (klass, "audio_%u");
-+ break;
-+
-+ case GST_MATROSKA_TRACK_TYPE_SUBTITLE:
-+ padname = g_strdup_printf ("subtitle_%u", demux->num_t_streams++);
-+ templ = gst_element_class_get_pad_template (klass, "subtitle_%u");
-+ break;
-+
-+ default:
-+ /* we should already have quit by now */
-+ g_assert_not_reached ();
-+ }
-+
- /* the pad in here */
- context->pad = gst_pad_new_from_template (templ, padname);
-- context->caps = caps;
-
- gst_pad_set_event_function (context->pad,
- GST_DEBUG_FUNCPTR (gst_matroska_demux_handle_src_event));
-@@ -1478,7 +1497,7 @@ gst_matroska_demux_add_stream (GstMatroskaDemux * demux, GstEbmlRead * ebml)
- GST_DEBUG_FUNCPTR (gst_matroska_demux_handle_src_query));
-
- GST_INFO_OBJECT (demux, "Adding pad '%s' with caps %" GST_PTR_FORMAT,
-- padname, caps);
-+ padname, context->caps);
-
- gst_pad_set_element_private (context->pad, context);
-
-@@ -1543,9 +1562,6 @@ gst_matroska_demux_add_stream (GstMatroskaDemux * demux, GstEbmlRead * ebml)
- gst_flow_combiner_add_pad (demux->flowcombiner, context->pad);
-
- g_free (padname);
--
-- /* tadaah! */
-- return ret;
- }
-
- static gboolean
-@@ -2768,9 +2784,23 @@ gst_matroska_demux_parse_tracks (GstMatroskaDemux * demux, GstEbmlRead * ebml)
-
- switch (id) {
- /* one track within the "all-tracks" header */
-- case GST_MATROSKA_ID_TRACKENTRY:
-- ret = gst_matroska_demux_add_stream (demux, ebml);
-+ case GST_MATROSKA_ID_TRACKENTRY:{
-+ GstMatroskaTrackContext *track;
-+ ret = gst_matroska_demux_parse_stream (demux, ebml, &track);
-+ if (track != NULL) {
-+ if (gst_matroska_read_common_tracknumber_unique (&demux->common,
-+ track->num)) {
-+ gst_matroska_demux_add_stream (demux, track);
-+ } else {
-+ GST_ERROR_OBJECT (demux,
-+ "TrackNumber %" G_GUINT64_FORMAT " is not unique", track->num);
-+ ret = GST_FLOW_ERROR;
-+ gst_matroska_track_free (track);
-+ track = NULL;
-+ }
-+ }
- break;
-+ }
-
- default:
- ret = gst_matroska_read_common_parse_skip (&demux->common, ebml,
---
-2.17.1
-
Deleted: trunk/Tools/gstreamer/patches/gst-plugins-good-0009-matroskademux-Parse-successive-Tracks-elements.patch (236959 => 236960)
--- trunk/Tools/gstreamer/patches/gst-plugins-good-0009-matroskademux-Parse-successive-Tracks-elements.patch 2018-10-09 09:14:37 UTC (rev 236959)
+++ trunk/Tools/gstreamer/patches/gst-plugins-good-0009-matroskademux-Parse-successive-Tracks-elements.patch 2018-10-09 13:54:57 UTC (rev 236960)
@@ -1,149 +0,0 @@
-From 0e60076a390fd3ef53d350940b2c695ff7bbe008 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Alicia=20Boya=20Garc=C3=ADa?= <ab...@igalia.com>
-Date: Fri, 21 Sep 2018 20:38:02 +0200
-Subject: [PATCH 9/9] matroskademux: Parse successive Tracks elements
-
-This patch allows matroskademux to parse a second Tracks element,
-erroring out if the tracks are not compatible (different number, type or
-codec) and emitting new caps and tag events should they have changed.
-
-https://bugzilla.gnome.org/show_bug.cgi?id=793333
----
- gst/matroska/matroska-demux.c | 111 +++++++++++++++++++++++++++++++++-
- 1 file changed, 109 insertions(+), 2 deletions(-)
-
-diff --git a/gst/matroska/matroska-demux.c b/gst/matroska/matroska-demux.c
-index 0e2157a15..77176fb62 100644
---- a/gst/matroska/matroska-demux.c
-+++ b/gst/matroska/matroska-demux.c
-@@ -3132,6 +3132,113 @@ gst_matroska_demux_parse_tracks (GstMatroskaDemux * demux, GstEbmlRead * ebml)
- return ret;
- }
-
-+static GstFlowReturn
-+gst_matroska_demux_update_tracks (GstMatroskaDemux * demux, GstEbmlRead * ebml)
-+{
-+ GstFlowReturn ret = GST_FLOW_OK;
-+ guint num_tracks_found = 0;
-+ guint32 id;
-+
-+ GST_INFO_OBJECT (demux, "Reparsing Tracks element");
-+
-+ DEBUG_ELEMENT_START (demux, ebml, "Tracks");
-+
-+ if ((ret = gst_ebml_read_master (ebml, &id)) != GST_FLOW_OK) {
-+ DEBUG_ELEMENT_STOP (demux, ebml, "Tracks", ret);
-+ return ret;
-+ }
-+
-+ while (ret == GST_FLOW_OK && gst_ebml_read_has_remaining (ebml, 1, TRUE)) {
-+ if ((ret = gst_ebml_peek_id (ebml, &id)) != GST_FLOW_OK)
-+ break;
-+
-+ switch (id) {
-+ /* one track within the "all-tracks" header */
-+ case GST_MATROSKA_ID_TRACKENTRY:{
-+ GstMatroskaTrackContext *new_track;
-+ gint old_track_index;
-+ GstMatroskaTrackContext *old_track;
-+ ret = gst_matroska_demux_parse_stream (demux, ebml, &new_track);
-+ if (new_track == NULL)
-+ break;
-+ num_tracks_found++;
-+
-+ if (gst_matroska_read_common_tracknumber_unique (&demux->common,
-+ new_track->num)) {
-+ GST_ERROR_OBJECT (demux,
-+ "Unexpected new TrackNumber: %" G_GUINT64_FORMAT, new_track->num);
-+ goto track_mismatch_error;
-+ }
-+
-+ old_track_index =
-+ gst_matroska_read_common_stream_from_num (&demux->common,
-+ new_track->num);
-+ g_assert (old_track_index != -1);
-+ old_track = g_ptr_array_index (demux->common.src, old_track_index);
-+
-+ if (old_track->type != new_track->type) {
-+ GST_ERROR_OBJECT (demux,
-+ "Mismatch reparsing track %" G_GUINT64_FORMAT
-+ " on track type. Expected %d, found %d", new_track->num,
-+ old_track->type, new_track->type);
-+ goto track_mismatch_error;
-+ }
-+
-+ if (g_strcmp0 (old_track->codec_id, new_track->codec_id) != 0) {
-+ GST_ERROR_OBJECT (demux,
-+ "Mismatch reparsing track %" G_GUINT64_FORMAT
-+ " on codec id. Expected '%s', found '%s'", new_track->num,
-+ old_track->codec_id, new_track->codec_id);
-+ goto track_mismatch_error;
-+ }
-+
-+ /* The new track matches the old track. No problems on our side.
-+ * Let's make it replace the old track. */
-+ new_track->pad = old_track->pad;
-+ new_track->index = old_track->index;
-+ new_track->pos = old_track->pos;
-+ g_ptr_array_index (demux->common.src, old_track_index) = new_track;
-+ gst_pad_set_element_private (new_track->pad, new_track);
-+
-+ if (!gst_caps_is_equal (old_track->caps, new_track->caps)) {
-+ gst_pad_set_caps (new_track->pad, new_track->caps);
-+ }
-+
-+ if (!gst_tag_list_is_equal (old_track->tags, new_track->tags)) {
-+ GST_DEBUG_OBJECT (old_track->pad, "Sending tags %p: %"
-+ GST_PTR_FORMAT, new_track->tags, new_track->tags);
-+ gst_pad_push_event (new_track->pad,
-+ gst_event_new_tag (gst_tag_list_copy (new_track->tags)));
-+ }
-+
-+ gst_matroska_track_free (old_track);
-+ break;
-+
-+ track_mismatch_error:
-+ gst_matroska_track_free (new_track);
-+ new_track = NULL;
-+ ret = GST_FLOW_ERROR;
-+ break;
-+ }
-+
-+ default:
-+ ret = gst_matroska_read_common_parse_skip (&demux->common, ebml,
-+ "Track", id);
-+ break;
-+ }
-+ }
-+ DEBUG_ELEMENT_STOP (demux, ebml, "Tracks", ret);
-+
-+ if (ret != GST_FLOW_ERROR && demux->common.num_streams != num_tracks_found) {
-+ GST_ERROR_OBJECT (demux,
-+ "Mismatch on the number of tracks. Expected %du tracks, found %du",
-+ demux->common.num_streams, num_tracks_found);
-+ ret = GST_FLOW_ERROR;
-+ }
-+
-+ return ret;
-+}
-+
- /*
- * Read signed/unsigned "EBML" numbers.
- * Return: number of bytes processed.
-@@ -5031,11 +5138,11 @@ gst_matroska_demux_parse_id (GstMatroskaDemux * demux, guint32 id,
- }
- break;
- case GST_MATROSKA_ID_TRACKS:
-+ GST_READ_CHECK (gst_matroska_demux_take (demux, read, &ebml));
- if (!demux->tracks_parsed) {
-- GST_READ_CHECK (gst_matroska_demux_take (demux, read, &ebml));
- ret = gst_matroska_demux_parse_tracks (demux, &ebml);
- } else {
-- GST_READ_CHECK (gst_matroska_demux_flush (demux, read));
-+ ret = gst_matroska_demux_update_tracks (demux, &ebml);
- }
- break;
- case GST_MATROSKA_ID_CLUSTER:
---
-2.17.1
-
Deleted: trunk/Tools/gstreamer/patches/gst-plugins-good-0010-matroskademux-Emit-no-more-pads-after-parsing-Tracks.patch (236959 => 236960)
--- trunk/Tools/gstreamer/patches/gst-plugins-good-0010-matroskademux-Emit-no-more-pads-after-parsing-Tracks.patch 2018-10-09 09:14:37 UTC (rev 236959)
+++ trunk/Tools/gstreamer/patches/gst-plugins-good-0010-matroskademux-Emit-no-more-pads-after-parsing-Tracks.patch 2018-10-09 13:54:57 UTC (rev 236960)
@@ -1,48 +0,0 @@
-From 7ceefec7141069b4adf4451a874766f8760c66d6 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Alicia=20Boya=20Garc=C3=ADa?= <ab...@igalia.com>
-Date: Fri, 21 Sep 2018 22:24:02 +0200
-Subject: [PATCH] matroskademux: Emit no-more-pads after parsing Tracks
-
-Currently matroskademux does not emit no-more-pads until the first
-Cluster is parsed, even though the Tracks have already been parsed and
-from that point on there can be no more tracks.
-
-This is important in MSE because the browser needs to know when the MSE
-initialization segment has been completely parsed so that it can expose
-the tracks to the user. Some applications depend on this been done
-before they feed frames to the demuxer.
-
-As a consequence, historically WebKit has relied on hacks such as
-listening to the `pad-added` event, which made impossible to support
-multiple tracks in the same file. Let's fix that.
-
-https://bugzilla.gnome.org/show_bug.cgi?id=797187
----
- gst/matroska/matroska-demux.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/gst/matroska/matroska-demux.c b/gst/matroska/matroska-demux.c
-index 77176fb62..683380bbf 100644
---- a/gst/matroska/matroska-demux.c
-+++ b/gst/matroska/matroska-demux.c
-@@ -3128,6 +3128,8 @@ gst_matroska_demux_parse_tracks (GstMatroskaDemux * demux, GstEbmlRead * ebml)
- DEBUG_ELEMENT_STOP (demux, ebml, "Tracks", ret);
-
- demux->tracks_parsed = TRUE;
-+ GST_DEBUG_OBJECT (demux, "signaling no more pads");
-+ gst_element_no_more_pads (GST_ELEMENT (demux));
-
- return ret;
- }
-@@ -5196,8 +5198,6 @@ gst_matroska_demux_parse_id (GstMatroskaDemux * demux, guint32 id,
- GST_TIME_ARGS (demux->common.segment.duration));
- }
- }
-- GST_DEBUG_OBJECT (demux, "signaling no more pads");
-- gst_element_no_more_pads (GST_ELEMENT (demux));
- /* send initial segment - we wait till we know the first
- incoming timestamp, so we can properly set the start of
- the segment. */
---
-2.17.1
-