ext/ogg/gstoggdemux.c: Don't accidently send GST_CLOCK_TIME_NONE as a new segment...
authorMichael Smith <msmith@xiph.org>
Fri, 2 Jun 2006 14:07:42 +0000 (14:07 +0000)
committerMichael Smith <msmith@xiph.org>
Fri, 2 Jun 2006 14:07:42 +0000 (14:07 +0000)
Original commit message from CVS:
* ext/ogg/gstoggdemux.c: (gst_ogg_demux_perform_seek):
Don't accidently send GST_CLOCK_TIME_NONE as a new segment start
value. Fixes g-critical on trying to play back ogg containing
unknown codec.

ChangeLog
ext/ogg/gstoggdemux.c

index b9ae110..cbac714 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2006-06-02  Michael Smith  <msmith@fluendo.com>
+
+       * ext/ogg/gstoggdemux.c: (gst_ogg_demux_perform_seek):
+         Don't accidently send GST_CLOCK_TIME_NONE as a new segment start
+         value. Fixes g-critical on trying to play back ogg containing
+         unknown codec.
+
 2006-06-02  Wim Taymans  <wim@fluendo.com>
 
        * gst/playback/gstplaybasebin.c: (group_create), (group_commit),
index bbb987e..9be82ca 100644 (file)
@@ -2049,6 +2049,7 @@ gst_ogg_demux_perform_seek (GstOggDemux * ogg, GstEvent * event)
   {
     GstEvent *event;
     gint64 stop;
+    gint64 start;
 
     /* we have to send the flush to the old chain, not the new one */
     if (flush)
@@ -2060,10 +2061,13 @@ gst_ogg_demux_perform_seek (GstOggDemux * ogg, GstEvent * event)
     if (stop != -1)
       stop += chain->segment_start;
 
+    start = ogg->segment.last_stop;
+    if (chain->segment_start != GST_CLOCK_TIME_NONE)
+      start += chain->segment_start;
+
     /* create the segment event we are going to send out */
     event = gst_event_new_new_segment (FALSE, ogg->segment.rate,
-        ogg->segment.format,
-        ogg->segment.last_stop + chain->segment_start, stop, ogg->segment.time);
+        ogg->segment.format, start, stop, ogg->segment.time);
 
     if (chain != ogg->current_chain) {
       /* switch to different chain, send segment on new chain */