if (qtdemux->pending_newsegment) {
gst_qtdemux_push_event (qtdemux, qtdemux->pending_newsegment);
qtdemux->pending_newsegment = NULL;
- qtdemux->upstream_newsegment = FALSE;
}
}
GstClockTime ts = gst_util_get_timestamp ();
#endif
- if (qtdemux->mss_mode || qtdemux->fragmented) {
+ if (qtdemux->upstream_newsegment || qtdemux->fragmented) {
/* seek should be handled by upstream, we might need to re-download fragments */
GST_DEBUG_OBJECT (qtdemux,
"leting upstream handle seek for smoothstreaming");
}
}
gst_caps_replace (&demux->media_caps, (GstCaps *) mediacaps);
+ } else {
+ demux->mss_mode = FALSE;
}
return TRUE;
GST_DEBUG_OBJECT (qtdemux, "Resetting demux");
gst_pad_stop_task (qtdemux->sinkpad);
- if (hard || qtdemux->mss_mode) {
+ if (hard || qtdemux->upstream_newsegment) {
qtdemux->state = QTDEMUX_STATE_INITIAL;
qtdemux->neededbytes = 16;
qtdemux->todrop = 0;
if (qtdemux->pending_newsegment)
gst_event_unref (qtdemux->pending_newsegment);
qtdemux->pending_newsegment = NULL;
- qtdemux->upstream_newsegment = TRUE;
+ qtdemux->upstream_newsegment = FALSE;
qtdemux->upstream_seekable = FALSE;
qtdemux->upstream_size = 0;
} else {
GST_DEBUG_OBJECT (demux, "Not storing upstream newsegment, "
"not in time format");
- }
- /* chain will send initial newsegment after pads have been added */
- if (demux->state != QTDEMUX_STATE_MOVIE || !demux->n_streams) {
- if (!demux->mss_mode) {
+ /* chain will send initial newsegment after pads have been added */
+ if (demux->state != QTDEMUX_STATE_MOVIE || !demux->n_streams) {
GST_DEBUG_OBJECT (demux, "still starting, eating event");
goto exit;
}
demux->neededbytes = demux->todrop + stream->samples[idx].size;
} else {
/* set up for EOS */
- if (demux->mss_mode) {
+ if (demux->upstream_newsegment) {
demux->neededbytes = 16;
} else {
demux->neededbytes = -1;
/* configured playback region */
GstSegment segment;
GstEvent *pending_newsegment;
- gboolean upstream_newsegment;
+ gboolean upstream_newsegment; /* qtdemux received upstream
+ * newsegment in TIME format which likely
+ * means that upstream is driving the pipeline
+ * (adaptive demuxers) */
gint64 seek_offset;
gint64 push_seek_start;
gint64 push_seek_stop;
* upstream provides it at the caps */
GstCaps *media_caps;
gboolean exposed;
- gboolean mss_mode; /* flag to indicate that we're working with a smoothstreaming fragment */
+ gboolean mss_mode; /* flag to indicate that we're working with a smoothstreaming fragment
+ * Mss doesn't have 'moov' or any information about the streams format,
+ * requiring qtdemux to expose and create the streams */
guint64 fragment_start;
guint64 fragment_start_offset;