diff --git a/ChangeLog b/ChangeLog index d970ef518f..93056936c8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,21 @@ +2004-10-12 Ronald S. Bultje + + * ext/gnomevfs/gstgnomevfssrc.c: (gst_gnomevfssrc_get), + (gst_gnomevfssrc_srcpad_query), (gst_gnomevfssrc_srcpad_event): + Some debug. + * gst/avi/gstavidemux.c: (gst_avi_demux_reset), + (gst_avi_demux_handle_src_event), (gst_avi_demux_read_superindex), + (gst_avi_demux_read_subindexes), (gst_avi_demux_add_stream), + (gst_avi_demux_stream_index), (gst_avi_demux_skip), + (gst_avi_demux_sync), (gst_avi_demux_stream_scan), + (gst_avi_demux_massage_index), (gst_avi_demux_stream_header): + * gst/avi/gstavidemux.h: + Support for openDML-2.0 indx/ix## chunks. Support for broken index + recovery (where, if part of the index is broken, we will still read + the rest of the index and recover the broken part by stream + scanning). More broken media support. EOS workarounds. General AVI + braindamage headache recovery. Aspirin included. + 2004-10-11 Ronald S. Bultje * ext/cdparanoia/gstcdparanoia.c: (cdparanoia_open), diff --git a/ext/gnomevfs/gstgnomevfssrc.c b/ext/gnomevfs/gstgnomevfssrc.c index 62b33143fa..70907eae1e 100644 --- a/ext/gnomevfs/gstgnomevfssrc.c +++ b/ext/gnomevfs/gstgnomevfssrc.c @@ -1040,6 +1040,7 @@ gst_gnomevfssrc_get (GstPad * pad) /* deal with EOF state */ if ((src->curoffset >= src->size) && (src->size != 0)) { gst_element_set_eos (GST_ELEMENT (src)); + GST_DEBUG ("Returning EOS"); return GST_DATA (gst_event_new (GST_EVENT_EOS)); } @@ -1063,6 +1064,7 @@ gst_gnomevfssrc_get (GstPad * pad) /* EOS? */ if (readbytes == 0) { gst_buffer_unref (buf); + GST_DEBUG ("Returning EOS"); gst_element_set_eos (GST_ELEMENT (src)); return GST_DATA (gst_event_new (GST_EVENT_EOS)); } @@ -1107,14 +1109,13 @@ gst_gnomevfssrc_get (GstPad * pad) result = gnome_vfs_read (src->handle, GST_BUFFER_DATA (buf), src->bytes_per_read, &readbytes); - GST_DEBUG ("read: %s, readbytes: %" G_GINT64_FORMAT, - gnome_vfs_result_to_string (result), readbytes); + GST_DEBUG ("read: %s, readbytes: %" G_GINT64_FORMAT " @ %" G_GINT64_FORMAT, + gnome_vfs_result_to_string (result), readbytes, src->curoffset); /* deal with EOS */ if (readbytes == 0) { gst_buffer_unref (buf); - + GST_DEBUG ("Returning EOS"); gst_element_set_eos (GST_ELEMENT (src)); - return GST_DATA (gst_event_new (GST_EVENT_EOS)); } @@ -1249,7 +1250,7 @@ gst_gnomevfssrc_srcpad_query (GstPad * pad, GstQueryType type, switch (type) { case GST_QUERY_TOTAL: - if (*format != GST_FORMAT_BYTES) { + if (*format != GST_FORMAT_BYTES || src->size == 0) { return FALSE; } *value = src->size; @@ -1298,6 +1299,8 @@ gst_gnomevfssrc_srcpad_event (GstPad * pad, GstEvent * event) desired_offset = src->curoffset + GST_EVENT_SEEK_OFFSET (event); break; case GST_SEEK_METHOD_END: + if (src->size == 0) + return FALSE; desired_offset = src->size - ABS (GST_EVENT_SEEK_OFFSET (event)); break; default: @@ -1308,7 +1311,8 @@ gst_gnomevfssrc_srcpad_event (GstPad * pad, GstEvent * event) result = gnome_vfs_seek (src->handle, GNOME_VFS_SEEK_START, desired_offset); - GST_DEBUG ("new_seek: %s", gnome_vfs_result_to_string (result)); + GST_DEBUG ("new_seek to %" G_GINT64_FORMAT ": %s", + desired_offset, gnome_vfs_result_to_string (result)); if (result != GNOME_VFS_OK) { gst_event_unref (event);