subparse: fix off by one offset calculation
authorArnaud Vrac <avrac@freebox.fr>
Thu, 14 Feb 2013 00:35:45 +0000 (01:35 +0100)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Fri, 22 Mar 2013 11:09:11 +0000 (11:09 +0000)
Do not use the buffer start offset when it is invalid, otherwise a
discontinuity is detected on the next buffer, and the subtitle parser
reset and some subtitle lines are not shown.

Also remove unused next_offset field.

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

gst/subparse/gstsubparse.c
gst/subparse/gstsubparse.h

index 9ba447e..b7ac148 100644 (file)
@@ -302,8 +302,6 @@ gst_sub_parse_src_event (GstPad * pad, GstObject * parent, GstEvent * event)
         GST_DEBUG_OBJECT (self, "segment after seek: %" GST_SEGMENT_FORMAT,
             &self->segment);
 
-        self->next_offset = 0;
-
         self->need_segment = TRUE;
       } else {
         GST_WARNING_OBJECT (self, "seek to 0 bytes failed");
@@ -1420,8 +1418,7 @@ feed_textbuf (GstSubParse * self, GstBuffer * buf)
      * subtitles which are discontinuous by nature. */
   }
 
-  self->offset = GST_BUFFER_OFFSET (buf) + gst_buffer_get_size (buf);
-  self->next_offset = self->offset;
+  self->offset += gst_buffer_get_size (buf);
 
   gst_adapter_push (self->adapter, buf);
 
@@ -1644,7 +1641,6 @@ gst_sub_parse_change_state (GstElement * element, GstStateChange transition)
     case GST_STATE_CHANGE_READY_TO_PAUSED:
       /* format detection will init the parser state */
       self->offset = 0;
-      self->next_offset = 0;
       self->parser_type = GST_SUB_PARSE_FORMAT_UNKNOWN;
       self->valid_utf8 = TRUE;
       self->first_buffer = TRUE;
index 2da2012..5b5fd0d 100644 (file)
@@ -91,7 +91,6 @@ struct _GstSubParse {
 
   /* seek */
   guint64 offset;
-  guint64 next_offset;
   
   /* Segment */
   GstSegment    segment;