gst/apetag/gsttagdemux.c: Fix handling of -1 values for start and stop values when seeking, and SEEK_CUR+SEEK_END her...

Original commit message from CVS:
* gst/apetag/gsttagdemux.c: (gst_tag_demux_srcpad_event):
Fix handling of -1 values for start and stop values when seeking,
and SEEK_CUR+SEEK_END here as well.
This commit is contained in:
Tim-Philipp Müller 2007-03-12 17:56:54 +00:00
parent 56fbcb6766
commit dbe62aba11
2 changed files with 22 additions and 3 deletions

View file

@ -1,3 +1,9 @@
2007-03-12 Tim-Philipp Müller <tim at centricular dot net>
* gst/apetag/gsttagdemux.c: (gst_tag_demux_srcpad_event):
Fix handling of -1 values for start and stop values when seeking,
and SEEK_CUR+SEEK_END here as well.
2007-03-12 Jan Schmidt <thaytan@mad.scientist.com> 2007-03-12 Jan Schmidt <thaytan@mad.scientist.com>
* gst/id3demux/gstid3demux.c: (gst_id3demux_srcpad_event): * gst/id3demux/gstid3demux.c: (gst_id3demux_srcpad_event):

View file

@ -732,12 +732,18 @@ gst_tag_demux_srcpad_event (GstPad * pad, GstEvent * event)
switch (cur_type) { switch (cur_type) {
case GST_SEEK_TYPE_SET: case GST_SEEK_TYPE_SET:
if (cur == -1)
cur = 0;
cur += tagdemux->priv->strip_start; cur += tagdemux->priv->strip_start;
break; break;
case GST_SEEK_TYPE_CUR: case GST_SEEK_TYPE_CUR:
break; break;
case GST_SEEK_TYPE_END: case GST_SEEK_TYPE_END:
cur += tagdemux->priv->strip_end; /* Adjust the seek to be relative to the start of any end tag
* (note: 10 bytes before end is represented by stop=-10) */
if (cur > 0)
cur = 0;
cur -= tagdemux->priv->strip_end;
break; break;
default: default:
g_assert_not_reached (); g_assert_not_reached ();
@ -745,12 +751,19 @@ gst_tag_demux_srcpad_event (GstPad * pad, GstEvent * event)
} }
switch (stop_type) { switch (stop_type) {
case GST_SEEK_TYPE_SET: case GST_SEEK_TYPE_SET:
stop += tagdemux->priv->strip_start; if (stop != -1) {
/* -1 means the end of the file, pass it upstream intact */
stop += tagdemux->priv->strip_start;
}
break; break;
case GST_SEEK_TYPE_CUR: case GST_SEEK_TYPE_CUR:
break; break;
case GST_SEEK_TYPE_END: case GST_SEEK_TYPE_END:
stop += tagdemux->priv->strip_end; /* Adjust the seek to be relative to the start of any end tag
* (note: 10 bytes before end is represented by stop=-10) */
if (stop > 0)
stop = 0;
stop -= tagdemux->priv->strip_end;
break; break;
default: default:
break; break;