mirror of
https://github.com/mpv-player/mpv
synced 2025-04-01 00:07:33 +00:00
cache: fix backbuffer logic
Currently, this is perfectly equivalent, because back_size is hardcoded to buffer_size/2. But this fixes the logic for the case the back_size can be configured freely.
This commit is contained in:
parent
aeb99f2718
commit
63d112746d
@ -215,11 +215,12 @@ static bool cache_fill(struct priv *s)
|
|||||||
// number of buffer bytes which should be preserved in backwards direction
|
// number of buffer bytes which should be preserved in backwards direction
|
||||||
int64_t back = MPCLAMP(read - s->min_filepos, 0, s->back_size);
|
int64_t back = MPCLAMP(read - s->min_filepos, 0, s->back_size);
|
||||||
|
|
||||||
// limit maximum readahead to half the total buffer size, to ensure that
|
// limit maximum readahead so that the backbuffer space is reserved, even
|
||||||
// we don't stall the network when starting a file (not reading new data
|
// if the backbuffer is not used. limit it to ensure that we don't stall the
|
||||||
// by preserving the backbuffer) - unless the whole file fits in the cache
|
// network when starting a file, or we wouldn't download new data until we
|
||||||
|
// get new free space again. (unless everything fits in the cache.)
|
||||||
if (s->stream_size > s->buffer_size)
|
if (s->stream_size > s->buffer_size)
|
||||||
back = MPMAX(back, s->buffer_size / 2);
|
back = MPMAX(back, s->back_size);
|
||||||
|
|
||||||
// number of buffer bytes that are valid and can be read
|
// number of buffer bytes that are valid and can be read
|
||||||
int64_t newb = FFMAX(s->max_filepos - read, 0);
|
int64_t newb = FFMAX(s->max_filepos - read, 0);
|
||||||
|
Loading…
Reference in New Issue
Block a user