mirror of
https://github.com/mpv-player/mpv
synced 2025-01-01 04:12:25 +00:00
40c8df8a54
The buffer can be larger than the normal size when "peeking" is used (such as done with some file formats, where a large number of bytes masy need to be "peeked" at the beginning, because FFmpeg). Once normal operation resumes, it's supposed to free this buffer again. Apparently this didn't happen as intended, because normal reading did have no way to discard back buffer before/while resizing the buffer. There's only a path for discarding the back buffer when actually reading. It seems like this unfortunately needs 2 code paths for discarding old data. Just put it into stream_resize_buffer(), where it's rather non-tricky (discarding can be done by adjusting the copy offset when moving data to the new allocation). The function now drops old data if it doesn't fit into the allocation. The caller must ensure that the new size is sufficient; the function signature changes only so the size of the implicitly guaranteed kept part can be checked with assert(). |
||
---|---|---|
.. | ||
cookies.c | ||
cookies.h | ||
dvb_tune.c | ||
dvb_tune.h | ||
dvbin.h | ||
stream_avdevice.c | ||
stream_bluray.c | ||
stream_cb.c | ||
stream_cdda.c | ||
stream_concat.c | ||
stream_dvb.c | ||
stream_dvdnav.c | ||
stream_edl.c | ||
stream_file.c | ||
stream_lavf.c | ||
stream_libarchive.c | ||
stream_libarchive.h | ||
stream_memory.c | ||
stream_mf.c | ||
stream_null.c | ||
stream.c | ||
stream.h |