| From 1a81bd90d4a3e59d6669a0bbfa456f1ed4e5db48 Mon Sep 17 00:00:00 2001 |
| From: Xabier Rodriguez Calvar <calvaris@igalia.com> |
| Date: Thu, 7 Apr 2016 13:57:16 +0200 |
| Subject: [PATCH] Revert "qtdemux: expose streams with first moof for |
| fragmented format" |
| |
| This reverts commit d8bb6687ea251570c331038279a43d448167d6ad. |
| --- |
| gst/isomp4/qtdemux.c | 54 ++++++++++++++++------------------------------------ |
| gst/isomp4/qtdemux.h | 1 - |
| 2 files changed, 16 insertions(+), 39 deletions(-) |
| |
| diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c |
| index 39be163..9636b4b 100644 |
| --- a/gst/isomp4/qtdemux.c |
| +++ b/gst/isomp4/qtdemux.c |
| @@ -609,7 +609,6 @@ gst_qtdemux_init (GstQTDemux * qtdemux) |
| qtdemux->state = QTDEMUX_STATE_INITIAL; |
| qtdemux->pullbased = FALSE; |
| qtdemux->posted_redirect = FALSE; |
| - qtdemux->pending_configure = FALSE; |
| qtdemux->neededbytes = 16; |
| qtdemux->todrop = 0; |
| qtdemux->adapter = gst_adapter_new (); |
| @@ -2049,7 +2048,6 @@ gst_qtdemux_reset (GstQTDemux * qtdemux, gboolean hard) |
| gst_caps_replace (&qtdemux->media_caps, NULL); |
| qtdemux->timescale = 0; |
| qtdemux->got_moov = FALSE; |
| - qtdemux->pending_configure = FALSE; |
| } else if (qtdemux->mss_mode) { |
| gst_flow_combiner_reset (qtdemux->flowcombiner); |
| for (n = 0; n < qtdemux->n_streams; n++) |
| @@ -6104,7 +6102,6 @@ gst_qtdemux_process_adapter (GstQTDemux * demux, gboolean force) |
| &fourcc); |
| if (fourcc == FOURCC_moov) { |
| gint n; |
| - gboolean got_samples = FALSE; |
| |
| /* in usual fragmented setup we could try to scan for more |
| * and end up at the the moov (after mdat) again */ |
| @@ -6136,27 +6133,19 @@ gst_qtdemux_process_adapter (GstQTDemux * demux, gboolean force) |
| qtdemux_node_dump (demux, demux->moov_node); |
| qtdemux_parse_tree (demux); |
| qtdemux_prepare_streams (demux); |
| + if (!demux->got_moov) |
| + qtdemux_expose_streams (demux); |
| + else { |
| |
| - for (n = 0; n < demux->n_streams; n++) { |
| - QtDemuxStream *stream = demux->streams[n]; |
| - got_samples |= stream->stbl_index >= 0; |
| - } |
| - if (!demux->fragmented || got_samples) { |
| - if (!demux->got_moov) { |
| - qtdemux_expose_streams (demux); |
| - } else { |
| - for (n = 0; n < demux->n_streams; n++) { |
| - QtDemuxStream *stream = demux->streams[n]; |
| - gst_qtdemux_configure_stream (demux, stream); |
| - } |
| + for (n = 0; n < demux->n_streams; n++) { |
| + QtDemuxStream *stream = demux->streams[n]; |
| + |
| + gst_qtdemux_configure_stream (demux, stream); |
| } |
| - gst_qtdemux_check_send_pending_segment (demux); |
| - demux->pending_configure = FALSE; |
| - } else { |
| - demux->pending_configure = TRUE; |
| } |
| |
| demux->got_moov = TRUE; |
| + gst_qtdemux_check_send_pending_segment (demux); |
| |
| /* fragmented streams headers shouldn't contain edts atoms */ |
| if (!demux->fragmented) { |
| @@ -6175,7 +6164,6 @@ gst_qtdemux_process_adapter (GstQTDemux * demux, gboolean force) |
| guint64 dist = 0; |
| GstClockTime prev_pts; |
| guint64 prev_offset; |
| - gint n; |
| |
| GST_DEBUG_OBJECT (demux, "Parsing [moof]"); |
| |
| @@ -6209,25 +6197,15 @@ gst_qtdemux_process_adapter (GstQTDemux * demux, gboolean force) |
| ret = GST_FLOW_ERROR; |
| goto done; |
| } |
| - /* in MSS we need to expose the pads after the first moof as we won't get a moov |
| - * Also, fragmented format need to be exposed if a moov have no valid sample data */ |
| - if (demux->mss_mode || demux->pending_configure) { |
| - if (!demux->exposed) { |
| - if (!demux->pending_newsegment) { |
| - GstSegment segment; |
| - gst_segment_init (&segment, GST_FORMAT_TIME); |
| - GST_DEBUG_OBJECT (demux, "new pending_newsegment"); |
| - demux->pending_newsegment = gst_event_new_segment (&segment); |
| - } |
| - qtdemux_expose_streams (demux); |
| - } else { |
| - for (n = 0; n < demux->n_streams; n++) { |
| - QtDemuxStream *stream = demux->streams[n]; |
| - gst_qtdemux_configure_stream (demux, stream); |
| - } |
| + /* in MSS we need to expose the pads after the first moof as we won't get a moov */ |
| + if (demux->mss_mode && !demux->exposed) { |
| + if (!demux->pending_newsegment) { |
| + GstSegment segment; |
| + gst_segment_init (&segment, GST_FORMAT_TIME); |
| + GST_DEBUG_OBJECT (demux, "new pending_newsegment"); |
| + demux->pending_newsegment = gst_event_new_segment (&segment); |
| } |
| - gst_qtdemux_check_send_pending_segment (demux); |
| - demux->pending_configure = FALSE; |
| + qtdemux_expose_streams (demux); |
| } |
| } else { |
| GST_DEBUG_OBJECT (demux, "Discarding [moof]"); |
| diff --git a/gst/isomp4/qtdemux.h b/gst/isomp4/qtdemux.h |
| index 6061215..ecf0c63 100644 |
| --- a/gst/isomp4/qtdemux.h |
| +++ b/gst/isomp4/qtdemux.h |
| @@ -89,7 +89,6 @@ struct _GstQTDemux { |
| gboolean posted_redirect; |
| |
| /* push based variables */ |
| - gboolean pending_configure; |
| guint neededbytes; |
| guint todrop; |
| GstAdapter *adapter; |
| -- |
| 2.8.0.rc3 |
| |