mirror of
https://github.com/mpv-player/mpv
synced 2025-03-05 13:47:39 +00:00
Retry reading even if we hit eof before.
This allows playing growing files even with a large cache. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31226 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
1e0b9a97fd
commit
c36de0867f
@ -225,7 +225,7 @@ static int cache_fill(cache_vars_t *s)
|
||||
//memcpy(&s->buffer[pos],s->stream->buffer,len); // avoid this extra copy!
|
||||
// ....
|
||||
len=stream_read(s->stream,&s->buffer[pos],space);
|
||||
if(!len) s->eof=1;
|
||||
s->eof= !len;
|
||||
|
||||
s->max_filepos+=len;
|
||||
if(pos+len>=s->buffer_size){
|
||||
@ -477,7 +477,6 @@ static void *ThreadProc( void *s ){
|
||||
|
||||
int cache_stream_fill_buffer(stream_t *s){
|
||||
int len;
|
||||
if(s->eof){ s->buf_pos=s->buf_len=0; return 0; }
|
||||
if(!s->cache_pid) return stream_fill_buffer(s);
|
||||
|
||||
// cache_stats(s->cache_data);
|
||||
@ -488,6 +487,7 @@ int cache_stream_fill_buffer(stream_t *s){
|
||||
//printf("cache_stream_fill_buffer->read -> %d\n",len);
|
||||
|
||||
if(len<=0){ s->eof=1; s->buf_pos=s->buf_len=0; return 0; }
|
||||
s->eof=0;
|
||||
s->buf_pos=0;
|
||||
s->buf_len=len;
|
||||
s->pos+=len;
|
||||
|
@ -263,7 +263,7 @@ stream_t* open_output_stream(const char* filename, char** options) {
|
||||
|
||||
int stream_fill_buffer(stream_t *s){
|
||||
int len;
|
||||
if (/*s->fd == NULL ||*/ s->eof) { return 0; }
|
||||
// we will retry even if we already reached EOF previously.
|
||||
switch(s->type){
|
||||
case STREAMTYPE_STREAM:
|
||||
#ifdef CONFIG_NETWORK
|
||||
@ -285,6 +285,9 @@ int stream_fill_buffer(stream_t *s){
|
||||
len= s->fill_buffer ? s->fill_buffer(s,s->buffer,STREAM_BUFFER_SIZE) : 0;
|
||||
}
|
||||
if(len<=0){ s->eof=1; return 0; }
|
||||
// When reading succeeded we are obviously not at eof.
|
||||
// This e.g. avoids issues with eof getting stuck when lavf seeks in MPEG-TS
|
||||
s->eof=0;
|
||||
s->buf_pos=0;
|
||||
s->buf_len=len;
|
||||
s->pos+=len;
|
||||
|
Loading…
Reference in New Issue
Block a user