diff --git a/ChangeLog b/ChangeLog index 15fac99910..7fc40e837c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-04-29 Benjamin Otte + + * ext/mad/gstid3tag.c: (gst_id3_tag_handle_event), + (gst_id3_tag_chain): + rewrite buffer offset + 2004-04-28 Ronald Bultje * configure.ac: diff --git a/ext/mad/gstid3tag.c b/ext/mad/gstid3tag.c index 8b02ec5e74..ade3006cef 100644 --- a/ext/mad/gstid3tag.c +++ b/ext/mad/gstid3tag.c @@ -760,7 +760,10 @@ gst_id3_tag_handle_event (GstPad * pad, GstEvent * event) GST_BUFFER_SIZE (tag->buffer) : 0)) GST_ELEMENT_ERROR (tag, CORE, EVENT, (NULL), - ("Seek during ID3v2 tag reading")); + ("Got seek to %" G_GUINT64_FORMAT " during ID3v2 tag reading" + " (allowed was %" G_GUINT64_FORMAT ")", value, + (guint64) (tag->buffer ? GST_BUFFER_OFFSET (tag->buffer) + + GST_BUFFER_SIZE (tag->buffer) : 0))); } gst_data_unref (GST_DATA (event)); break; @@ -1162,6 +1165,16 @@ gst_id3_tag_chain (GstPad * pad, GstData * data) gst_data_unref (GST_DATA (buffer)); buffer = sub; } + if (tag->v2tag_size) { + GstBuffer *sub = + gst_buffer_create_sub (buffer, 0, GST_BUFFER_SIZE (buffer)); + GST_BUFFER_OFFSET (sub) = + GST_BUFFER_OFFSET (buffer) - tag->v2tag_size; + GST_BUFFER_OFFSET_END (sub) = + GST_BUFFER_OFFSET_END (buffer) - tag->v2tag_size; + gst_data_unref (GST_DATA (buffer)); + buffer = sub; + } gst_pad_push (tag->srcpad, GST_DATA (buffer)); } return;