mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-03 14:08:56 +00:00
plugins/elements/gstfilesink.c: Be a bit smarter when seeking, like, don't try to do a seek when it's not needed. Thi...
Original commit message from CVS: * plugins/elements/gstfilesink.c: (gst_file_sink_event): Be a bit smarter when seeking, like, don't try to do a seek when it's not needed. This avoids errors when the file is not seekable. Fixes #499771.
This commit is contained in:
parent
bb523ea0a3
commit
7797419321
2 changed files with 22 additions and 8 deletions
|
@ -1,3 +1,10 @@
|
|||
2007-11-27 Wim Taymans <wim.taymans@gmail.com>
|
||||
|
||||
* plugins/elements/gstfilesink.c: (gst_file_sink_event):
|
||||
Be a bit smarter when seeking, like, don't try to do a seek when it's
|
||||
not needed. This avoids errors when the file is not seekable.
|
||||
Fixes #499771.
|
||||
|
||||
2007-11-26 Stefan Kost <ensonic@users.sf.net>
|
||||
|
||||
* docs/gst/gstreamer-docs.sgml:
|
||||
|
|
|
@ -384,15 +384,22 @@ gst_file_sink_event (GstBaseSink * sink, GstEvent * event)
|
|||
&stop, &pos);
|
||||
|
||||
if (format == GST_FORMAT_BYTES) {
|
||||
/* FIXME, the seek should be performed on the pos field, start/stop are
|
||||
* just boundaries for valid bytes offsets. We should also fill the file
|
||||
* with zeroes if the new position extends the current EOF (sparse streams
|
||||
* and segment accumulation). */
|
||||
if (!gst_file_sink_do_seek (filesink, (guint64) start))
|
||||
goto seek_failed;
|
||||
/* only try to seek and fail when we are going to a different
|
||||
* position */
|
||||
if (filesink->current_pos != start) {
|
||||
/* FIXME, the seek should be performed on the pos field, start/stop are
|
||||
* just boundaries for valid bytes offsets. We should also fill the file
|
||||
* with zeroes if the new position extends the current EOF (sparse streams
|
||||
* and segment accumulation). */
|
||||
if (!gst_file_sink_do_seek (filesink, (guint64) start))
|
||||
goto seek_failed;
|
||||
} else {
|
||||
GST_DEBUG_OBJECT (filesink, "Ignored NEWSEGMENT, no seek needed");
|
||||
}
|
||||
} else {
|
||||
GST_DEBUG ("Ignored NEWSEGMENT event of format %u (%s)",
|
||||
(guint) format, gst_format_get_name (format));
|
||||
GST_DEBUG_OBJECT (filesink,
|
||||
"Ignored NEWSEGMENT event of format %u (%s)", (guint) format,
|
||||
gst_format_get_name (format));
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue