1- From e0d65818e8254e441b9652b525ae18d6d08f5542 Mon Sep 17 00:00:00 2001
1+ From 3389dcb2296d80aa219206f7e0ecd3eb745841fe Mon Sep 17 00:00:00 2001
22From: =?UTF-8?q?Enrique=20Oca=C3=B1a=20Gonz=C3=A1lez?= <
[email protected] >
33Date: Wed, 19 Jun 2019 15:51:22 +0000
4- Subject: [PATCH 6/6 ] Manual revert of bfd0e022 qtdemux: rework segment event
4+ Subject: [PATCH 16/16 ] Manual revert of bfd0e022 qtdemux: rework segment event
55 pushing
66
77That commit broke WebKit AppendPipeline processing for out-of-order appends,
@@ -17,10 +17,10 @@ patch.
1717 2 files changed, 61 insertions(+), 24 deletions(-)
1818
1919diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c
20- index afbcfcb17..e69c195e1 100644
20+ index 0c7972cca..58eff6160 100644
2121--- a/gst/isomp4/qtdemux.c
2222+++ b/gst/isomp4/qtdemux.c
23- @@ -2152 ,6 +2152 ,9 @@ gst_qtdemux_reset (GstQTDemux * qtdemux, gboolean hard)
23+ @@ -2161 ,6 +2161 ,9 @@ gst_qtdemux_reset (GstQTDemux * qtdemux, gboolean hard)
2424 qtdemux->element_index = NULL;
2525 #endif
2626 qtdemux->major_brand = 0;
@@ -30,15 +30,15 @@ index afbcfcb17..e69c195e1 100644
3030 qtdemux->upstream_format_is_time = FALSE;
3131 qtdemux->upstream_seekable = FALSE;
3232 qtdemux->upstream_size = 0;
33- @@ -2174 ,7 +2177 ,6 @@ gst_qtdemux_reset (GstQTDemux * qtdemux, gboolean hard)
33+ @@ -2182 ,7 +2185 ,6 @@ gst_qtdemux_reset (GstQTDemux * qtdemux, gboolean hard)
3434 qtdemux->offset = 0;
3535 gst_adapter_clear (qtdemux->adapter);
3636 gst_segment_init (&qtdemux->segment, GST_FORMAT_TIME);
3737- qtdemux->need_segment = TRUE;
3838
3939 if (hard) {
4040 qtdemux->segment_seqnum = GST_SEQNUM_INVALID;
41- @@ -2216 ,6 +2218 ,12 @@ gst_qtdemux_reset (GstQTDemux * qtdemux, gboolean hard)
41+ @@ -2226 ,6 +2228 ,12 @@ gst_qtdemux_reset (GstQTDemux * qtdemux, gboolean hard)
4242 stream->time_position = 0;
4343 stream->accumulated_base = 0;
4444 }
@@ -51,7 +51,7 @@ index afbcfcb17..e69c195e1 100644
5151 }
5252 }
5353
54- @@ -2310 ,7 +2318 ,12 @@ gst_qtdemux_handle_sink_event (GstPad * sinkpad, GstObject * parent,
54+ @@ -2328 ,7 +2336 ,12 @@ gst_qtdemux_handle_sink_event (GstPad * sinkpad, GstObject * parent,
5555 GST_DEBUG_OBJECT (demux, "received newsegment %" GST_SEGMENT_FORMAT,
5656 &segment);
5757
@@ -64,7 +64,7 @@ index afbcfcb17..e69c195e1 100644
6464 demux->upstream_format_is_time = TRUE;
6565 demux->segment_seqnum = gst_event_get_seqnum (event);
6666 } else {
67- @@ -2387 ,8 +2400 ,16 @@ gst_qtdemux_handle_sink_event (GstPad * sinkpad, GstObject * parent,
67+ @@ -2405 ,8 +2418 ,16 @@ gst_qtdemux_handle_sink_event (GstPad * sinkpad, GstObject * parent,
6868
6969 /* map segment to internal qt segments and push on each stream */
7070 if (QTDEMUX_N_STREAMS (demux)) {
@@ -83,7 +83,7 @@ index afbcfcb17..e69c195e1 100644
8383 }
8484
8585 /* clear leftover in current segment, if any */
86- @@ -4319 ,12 +4340 ,6 @@ qtdemux_parse_moof (GstQTDemux * qtdemux, const guint8 * buffer, guint length,
86+ @@ -4678 ,12 +4699 ,6 @@ qtdemux_parse_moof (GstQTDemux * qtdemux, const guint8 * buffer, guint length,
8787 QtDemuxStream *stream = QTDEMUX_NTH_STREAM (qtdemux, i);
8888 stream->time_position = min_dts;
8989 }
@@ -96,7 +96,7 @@ index afbcfcb17..e69c195e1 100644
9696 }
9797
9898 qtdemux->first_moof_already_parsed = TRUE;
99- @@ -6847 ,7 +6862 ,7 @@ gst_qtdemux_drop_data (GstQTDemux * demux, gint bytes)
99+ @@ -7219 ,7 +7234 ,7 @@ gst_qtdemux_drop_data (GstQTDemux * demux, gint bytes)
100100 static void
101101 gst_qtdemux_check_send_pending_segment (GstQTDemux * demux)
102102 {
@@ -105,7 +105,7 @@ index afbcfcb17..e69c195e1 100644
105105 gint i;
106106
107107 if (!demux->upstream_format_is_time) {
108- @@ -6860 ,8 +6875 ,6 @@ gst_qtdemux_check_send_pending_segment (GstQTDemux * demux)
108+ @@ -7232 ,8 +7247 ,6 @@ gst_qtdemux_check_send_pending_segment (GstQTDemux * demux)
109109 gst_qtdemux_push_event (demux, segment_event);
110110 }
111111
@@ -114,7 +114,7 @@ index afbcfcb17..e69c195e1 100644
114114 /* clear to send tags on all streams */
115115 for (i = 0; i < QTDEMUX_N_STREAMS (demux); i++) {
116116 QtDemuxStream *stream = QTDEMUX_NTH_STREAM (demux, i);
117- @@ -7161 ,6 +7174 ,15 @@ gst_qtdemux_process_adapter (GstQTDemux * demux, gboolean force)
117+ @@ -7533 ,6 +7546 ,15 @@ gst_qtdemux_process_adapter (GstQTDemux * demux, gboolean force)
118118 if (demux->moov_node)
119119 g_node_destroy (demux->moov_node);
120120 demux->moov_node = NULL;
@@ -130,7 +130,7 @@ index afbcfcb17..e69c195e1 100644
130130 }
131131
132132 demux->last_moov_offset = demux->offset;
133- @@ -7179 ,7 +7201 ,8 @@ gst_qtdemux_process_adapter (GstQTDemux * demux, gboolean force)
133+ @@ -7551 ,7 +7573 ,8 @@ gst_qtdemux_process_adapter (GstQTDemux * demux, gboolean force)
134134
135135 demux->got_moov = TRUE;
136136
@@ -140,13 +140,13 @@ index afbcfcb17..e69c195e1 100644
140140
141141 if (demux->moov_node_compressed) {
142142 g_node_destroy (demux->moov_node_compressed);
143- @@ -7262 ,15 +7285 ,20 @@ gst_qtdemux_process_adapter (GstQTDemux * demux, gboolean force)
143+ @@ -7634 ,15 +7657 ,20 @@ gst_qtdemux_process_adapter (GstQTDemux * demux, gboolean force)
144144 ret = GST_FLOW_ERROR;
145145 goto done;
146146 }
147147-
148148 /* in MSS we need to expose the pads after the first moof as we won't get a moov */
149- if (demux->mss_mode && !demux->exposed) {
149+ if (demux->variant == VARIANT_MSS_FRAGMENTED && !demux->exposed) {
150150+ if (!demux->pending_newsegment) {
151151+ GST_DEBUG_OBJECT (demux, "new pending_newsegment");
152152+ demux->pending_newsegment =
@@ -164,7 +164,7 @@ index afbcfcb17..e69c195e1 100644
164164 } else {
165165 GST_DEBUG_OBJECT (demux, "Discarding [moof]");
166166 }
167- @@ -12876 ,6 +12904 ,14 @@ qtdemux_update_streams (GstQTDemux * qtdemux)
167+ @@ -13453 ,6 +13481 ,14 @@ qtdemux_update_streams (GstQTDemux * qtdemux)
168168 stream->stream_tags = NULL;
169169 if (!gst_qtdemux_add_stream (qtdemux, stream, list))
170170 return FALSE;
@@ -179,15 +179,15 @@ index afbcfcb17..e69c195e1 100644
179179 }
180180 }
181181
182- @@ -12900 ,7 +12936 ,6 @@ qtdemux_expose_streams (GstQTDemux * qtdemux)
182+ @@ -13477 ,7 +13513 ,6 @@ qtdemux_expose_streams (GstQTDemux * qtdemux)
183183 }
184184
185185 g_ptr_array_set_size (qtdemux->old_streams, 0);
186186- qtdemux->need_segment = TRUE;
187187
188188 return GST_FLOW_OK;
189189 }
190- @@ -12919 ,6 +12954 ,13 @@ qtdemux_expose_streams (GstQTDemux * qtdemux)
190+ @@ -13496 ,6 +13531 ,13 @@ qtdemux_expose_streams (GstQTDemux * qtdemux)
191191 if (!gst_qtdemux_add_stream (qtdemux, stream, list))
192192 return GST_FLOW_ERROR;
193193
@@ -201,7 +201,7 @@ index afbcfcb17..e69c195e1 100644
201201 }
202202 }
203203
204- @@ -12962 ,8 +13004 ,6 @@ qtdemux_expose_streams (GstQTDemux * qtdemux)
204+ @@ -13539 ,8 +13581 ,6 @@ qtdemux_expose_streams (GstQTDemux * qtdemux)
205205 g_ptr_array_foreach (qtdemux->active_streams,
206206 (GFunc) qtdemux_do_allocation, qtdemux);
207207
@@ -211,10 +211,10 @@ index afbcfcb17..e69c195e1 100644
211211 return GST_FLOW_OK;
212212 }
213213diff --git a/gst/isomp4/qtdemux.h b/gst/isomp4/qtdemux.h
214- index 83a050a43..ccee2ee2b 100644
214+ index 600553421..afe5ab283 100644
215215--- a/gst/isomp4/qtdemux.h
216216+++ b/gst/isomp4/qtdemux.h
217- @@ -118 ,11 +118 ,8 @@ struct _GstQTDemux {
217+ @@ -131 ,11 +131 ,8 @@ struct _GstQTDemux {
218218 /* configured playback region */
219219 GstSegment segment;
220220
@@ -229,5 +229,5 @@ index 83a050a43..ccee2ee2b 100644
229229 guint32 segment_seqnum;
230230
231231- -
232- 2.17 .1
232+ 2.34 .1
233233
0 commit comments