filesink: Consider the current buffer size when checking the current position

This commit is contained in:
Sebastian Dröge 2018-08-17 17:24:19 +03:00
parent cbcad53b45
commit 035045c981

View file

@ -452,7 +452,8 @@ gst_file_sink_query (GstBaseSink * bsink, GstQuery * query)
switch (format) { switch (format) {
case GST_FORMAT_DEFAULT: case GST_FORMAT_DEFAULT:
case GST_FORMAT_BYTES: case GST_FORMAT_BYTES:
gst_query_set_position (query, GST_FORMAT_BYTES, self->current_pos); gst_query_set_position (query, GST_FORMAT_BYTES,
self->current_pos + self->current_buffer_size);
res = TRUE; res = TRUE;
break; break;
default: default:
@ -557,7 +558,8 @@ gst_file_sink_event (GstBaseSink * sink, GstEvent * event)
if (segment->format == GST_FORMAT_BYTES) { if (segment->format == GST_FORMAT_BYTES) {
/* only try to seek and fail when we are going to a different /* only try to seek and fail when we are going to a different
* position */ * position */
if (filesink->current_pos != segment->start) { if (filesink->current_pos + filesink->current_buffer_size !=
segment->start) {
/* FIXME, the seek should be performed on the pos field, start/stop are /* 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 * just boundaries for valid bytes offsets. We should also fill the file
* with zeroes if the new position extends the current EOF (sparse streams * with zeroes if the new position extends the current EOF (sparse streams