1
0
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:
reimar 2010-05-26 18:23:43 +00:00
parent 1e0b9a97fd
commit c36de0867f
2 changed files with 6 additions and 3 deletions

View File

@ -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;

View File

@ -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;