From: <tp...@ke...> - 2007-05-22 15:31:11
|
CVS Root: /cvs/gstreamer Module: gst-plugins-base Changes by: tpm Date: Tue May 22 2007 15:30:38 UTC Log message: Patch by: Mark Nauwelaerts <manauw at skynet be> * ext/gnomevfs/gstgnomevfssink.c: (gst_gnome_vfs_sink_init), (gst_gnome_vfs_sink_open_file), (gst_gnome_vfs_sink_handle_event), (gst_gnome_vfs_sink_query), (gst_gnome_vfs_sink_render): * ext/gnomevfs/gstgnomevfssink.h: Fix position reporting, especially after a seek (from upstream), see #412648. Modified files: . : ChangeLog ext/gnomevfs : gstgnomevfssink.c gstgnomevfssink.h Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/ChangeLog.diff?r1=1.3331&r2=1.3332 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/ext/gnomevfs/gstgnomevfssink.c.diff?r1=1.43&r2=1.44 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-base/ext/gnomevfs/gstgnomevfssink.h.diff?r1=1.4&r2=1.5 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-base/ChangeLog,v retrieving revision 1.3331 retrieving revision 1.3332 diff -u -d -r1.3331 -r1.3332 --- ChangeLog 22 May 2007 15:04:40 -0000 1.3331 +++ ChangeLog 22 May 2007 15:30:26 -0000 1.3332 @@ -1,5 +1,16 @@ 2007-05-22 Tim-Philipp Müller <tim at centricular dot net> + Patch by: Mark Nauwelaerts <manauw at skynet be> + + * ext/gnomevfs/gstgnomevfssink.c: (gst_gnome_vfs_sink_init), + (gst_gnome_vfs_sink_open_file), (gst_gnome_vfs_sink_handle_event), + (gst_gnome_vfs_sink_query), (gst_gnome_vfs_sink_render): + * ext/gnomevfs/gstgnomevfssink.h: + Fix position reporting, especially after a seek (from upstream), + see #412648. +2007-05-22 Tim-Philipp Müller <tim at centricular dot net> * ext/cdparanoia/gstcdparanoiasrc.c: Repair umlaut. Index: gstgnomevfssink.c RCS file: /cvs/gstreamer/gst-plugins-base/ext/gnomevfs/gstgnomevfssink.c,v retrieving revision 1.43 retrieving revision 1.44 diff -u -d -r1.43 -r1.44 --- gstgnomevfssink.c 10 Oct 2006 12:49:01 -0000 1.43 +++ gstgnomevfssink.c 22 May 2007 15:30:26 -0000 1.44 @@ -3,7 +3,7 @@ * 2000 Wim Taymans <wt...@ch...> * 2001 Bastien Nocera <ha...@ha...> * 2003 Colin Walters <wa...@ve...> - * 2005 Tim-Philipp M??ller <tim centricular net> + * 2005 Tim-Philipp Müller <tim centricular net> * * gstgnomevfssink.c: @@ -242,7 +242,7 @@ sink->uri_name = NULL; sink->handle = NULL; sink->own_handle = FALSE; - sink->data_written = 0; + sink->current_pos = 0; GST_BASE_SINK (sink)->sync = FALSE; } @@ -398,7 +398,7 @@ sink->own_handle = FALSE; } return TRUE; @@ -474,6 +474,8 @@ if (res != GNOME_VFS_OK) { GST_ERROR_OBJECT (sink, "Failed to seek to offset %" G_GINT64_FORMAT ": %s", offset, gnome_vfs_result_to_string (res)); + } else { + sink->current_pos = offset; } break; @@ -505,7 +507,7 @@ switch (format) { case GST_FORMAT_DEFAULT: case GST_FORMAT_BYTES: - gst_query_set_position (query, GST_FORMAT_BYTES, sink->data_written); + gst_query_set_position (query, GST_FORMAT_BYTES, sink->current_pos); return TRUE; default: return FALSE; @@ -527,13 +529,12 @@ GstGnomeVFSSink *sink; GnomeVFSResult result; GstFlowReturn ret; - guint64 back_pending = 0; sink = GST_GNOME_VFS_SINK (basesink); if (gnome_vfs_tell (sink->handle, &cur_pos) == GNOME_VFS_OK) { - if (cur_pos < sink->data_written) - back_pending = sink->data_written - cur_pos; + /* bring up to date with current position for proper reporting */ + sink->current_pos = cur_pos; result = gnome_vfs_write (sink->handle, GST_BUFFER_DATA (buf), @@ -551,7 +552,7 @@ GST_BUFFER_SIZE (buf), written); - sink->data_written += GST_BUFFER_SIZE (buf) - back_pending; + sink->current_pos += GST_BUFFER_SIZE (buf); ret = GST_FLOW_OK; } Index: gstgnomevfssink.h RCS file: /cvs/gstreamer/gst-plugins-base/ext/gnomevfs/gstgnomevfssink.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- gstgnomevfssink.h 1 Jun 2006 19:19:49 -0000 1.4 +++ gstgnomevfssink.h 22 May 2007 15:30:26 -0000 1.5 @@ -65,7 +65,7 @@ /* whether we opened the handle ourselves */ gboolean own_handle; - guint64 data_written; + guint64 current_pos; }; struct _GstGnomeVFSSinkClass |