Commit 0b068047 authored by Sjoerd Simons's avatar Sjoerd Simons Committed by Sjoerd Simons

queue2: Fix backwards seeks into undowloaded ranges

When in download buffering mode queue2 didn't check if a range offset is
in a undownloaded range before the currently in-progress range. Causing
seeks to an earlier offset to, well, take a while.
parent 280f5573
......@@ -1124,21 +1124,13 @@ gst_queue2_have_data (GstQueue2 * queue, guint64 offset, guint length)
guint64 threshold = 1024 * 512;
if (QUEUE_IS_USING_RING_BUFFER (queue)) {
guint64 distance;
distance = QUEUE_MAX_BYTES (queue) - queue->cur_level.bytes;
/* don't wait for the complete buffer to fill */
distance = MIN (distance, threshold);
if (offset >= queue->current->offset && offset <=
queue->current->writing_pos + distance) {
GST_INFO_OBJECT (queue,
"requested data is within range, wait for data");
return FALSE;
}
} else if (offset < queue->current->writing_pos + threshold) {
update_cur_pos (queue, queue->current, offset + length);
GST_INFO_OBJECT (queue, "wait for data");
threshold = MIN (threshold,
QUEUE_MAX_BYTES (queue) - queue->cur_level.bytes);
}
if (offset >= queue->current->offset && offset <=
queue->current->writing_pos + threshold) {
GST_INFO_OBJECT (queue,
"requested data is within range, wait for data");
return FALSE;
}
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment