oggdemux: safety for failing to determine time length in push mode
authorVincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Fri, 26 Aug 2016 10:30:16 +0000 (11:30 +0100)
committerVincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Mon, 5 Sep 2016 10:42:44 +0000 (11:42 +0100)
If we can't find a valid granule near the end of the file, we
disable seeking. This guards against the whole file being then
read and never going to PLAYING.

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

ext/ogg/gstoggdemux.c

index 6f03edd..517430e 100644 (file)
@@ -1538,6 +1538,10 @@ gst_ogg_demux_seek_back_after_push_duration_check_unlock (GstOggDemux * ogg)
   event = ogg->push_mode_seek_delayed_event;
   ogg->push_mode_seek_delayed_event = NULL;
 
+  /* if we haven't learnt about the total time yet, disable seeking */
+  if (ogg->total_time == -1)
+    ogg->push_disable_seeking = TRUE;
+
   ogg->push_state = PUSH_PLAYING;
 
   /* If there is one, perform it. Otherwise, seek back at start to start