mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-18 05:16:05 +00:00
queue2: don't read beyond the end of file upstream in pull mode
... which could lead to a premature eos being reported downstream, rather than a successful partial read which would result when performed directly on e.g. basesrc.
This commit is contained in:
parent
b164a8232a
commit
8bf4c1e1a8
1 changed files with 8 additions and 0 deletions
|
@ -2657,6 +2657,14 @@ gst_queue2_get_range (GstPad * pad, guint64 offset, guint length,
|
|||
goto out_unexpected;
|
||||
}
|
||||
|
||||
if (G_UNLIKELY (offset + length > queue->upstream_size)) {
|
||||
gst_queue2_update_upstream_size (queue);
|
||||
if (queue->upstream_size > 0 && offset + length >= queue->upstream_size) {
|
||||
length = queue->upstream_size - offset;
|
||||
GST_DEBUG_OBJECT (queue, "adjusting length downto %d", length);
|
||||
}
|
||||
}
|
||||
|
||||
/* FIXME - function will block when the range is not yet available */
|
||||
ret = gst_queue2_create_read (queue, offset, length, buffer);
|
||||
GST_QUEUE2_MUTEX_UNLOCK (queue);
|
||||
|
|
Loading…
Reference in a new issue