diff options
author | wm4 <wm4@nowhere> | 2013-05-24 23:20:09 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2013-06-16 22:05:09 +0200 |
commit | d5ad9a8f60779ec41a3213f91c39d8f48d1296bc (patch) | |
tree | 75213bc5d476fc4ff9d8b45ba61aff5912d504e0 /core/mplayer.c | |
parent | 7c4202b863752e5903c76231420d9b391a0961e1 (diff) | |
download | mpv-d5ad9a8f60779ec41a3213f91c39d8f48d1296bc.tar.bz2 mpv-d5ad9a8f60779ec41a3213f91c39d8f48d1296bc.tar.xz |
stream: add stream_unread_buffer()
demux_lavf probes up to 2 MB of data in the worst case. When the ffmpeg
demuxer is actually opened, the stream is seeked back to 0, and the
previously read data is thrown away.
This wasn't a problem for playback of local files, but it's less than
ideal for playing from slow media (like web streams), and breaks
completely if the media is not seekable (pipes, some web streams).
This new function is intended to allow fixing this. demux_lavf will use
it to put the read probe data back into the buffer.
The simplest way of implementing this function is by making it
transparently extend the normal stream buffer. This makes sure no
existing code is broken by new weird special cases. For simplicity
and to avoid possible performance loss due to extra dereferencing
when accessing the buffer, we just extend the static buffer from
8 KB to 2 MB. Normally, most of these 2 MB will stay uncommitted, so
there's no associated waste of memory. If demux_lavf really reads all
2 MB, the memory will be committed and stay unused, though.
Diffstat (limited to 'core/mplayer.c')
0 files changed, 0 insertions, 0 deletions