diff options
author | iive <iive@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2004-07-16 20:31:17 +0000 |
---|---|---|
committer | iive <iive@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2004-07-16 20:31:17 +0000 |
commit | 9b0d8c680f63463b1dcf6cf5597018549d469c0b (patch) | |
tree | ade4bb6ce8b884a7ba46ef6eac25157c4df259da /libmpdemux | |
parent | eb75e9bfde5b510e9272d0505e3d12700db5ae1b (diff) | |
download | mpv-9b0d8c680f63463b1dcf6cf5597018549d469c0b.tar.bz2 mpv-9b0d8c680f63463b1dcf6cf5597018549d469c0b.tar.xz |
cache min fill adjustment, based on patch by Jeremy Huddleston
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@12836 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux')
-rw-r--r-- | libmpdemux/cache2.c | 19 | ||||
-rw-r--r-- | libmpdemux/demuxer.c | 7 |
2 files changed, 20 insertions, 6 deletions
diff --git a/libmpdemux/cache2.c b/libmpdemux/cache2.c index 370f47a3fe..d6ef3bccd8 100644 --- a/libmpdemux/cache2.c +++ b/libmpdemux/cache2.c @@ -198,6 +198,9 @@ cache_vars_t* cache_init(int size,int sector){ #endif memset(s,0,sizeof(cache_vars_t)); num=size/sector; + if(num < 16){ + num = 16; + }//32kb min_size s->buffer_size=num*sector; s->sector_size=sector; #ifndef WIN32 @@ -206,8 +209,7 @@ cache_vars_t* cache_init(int size,int sector){ s->buffer=malloc(s->buffer_size); #endif s->fill_limit=8*sector; - s->back_size=size/2; - s->prefill=size/20; // default: 5% + s->back_size=s->buffer_size/2; return s; } @@ -246,11 +248,20 @@ int stream_enable_cache(stream_t *stream,int size,int min,int prefill){ return 1; } - if(size<32*1024) size=32*1024; // 32kb min s=cache_init(size,ss); stream->cache_data=s; s->stream=stream; // callback - s->prefill=size*prefill; + s->prefill=prefill; + + + //make sure that we won't wait from cache_fill + //more data than it is alowed to fill + if (s->prefill > s->buffer_size - s->fill_limit ){ + s->prefill = s->buffer_size - s->fill_limit; + } + if (min > s->buffer_size - s->fill_limit) { + min = s->buffer_size - s->fill_limit; + } #ifndef WIN32 if((stream->cache_pid=fork())){ diff --git a/libmpdemux/demuxer.c b/libmpdemux/demuxer.c index 558748d266..8557be9cb1 100644 --- a/libmpdemux/demuxer.c +++ b/libmpdemux/demuxer.c @@ -1374,6 +1374,9 @@ int audio_stream_cache = 0; extern int hr_mp3_seek; +extern float stream_cache_min_percent; +extern float stream_cache_prefill_percent; + demuxer_t* demux_open(stream_t *vs,int file_format,int audio_id,int video_id,int dvdsub_id,char* filename){ stream_t *as = NULL,*ss = NULL; demuxer_t *vd,*ad = NULL,*sd = NULL; @@ -1386,8 +1389,8 @@ demuxer_t* demux_open(stream_t *vs,int file_format,int audio_id,int video_id,int return NULL; } if(audio_stream_cache) { - if(!stream_enable_cache(as,audio_stream_cache*1024,audio_stream_cache*1024/5, - audio_stream_cache*1024/20)) { + if(!stream_enable_cache(as,audio_stream_cache*1024,audio_stream_cache*1024*(stream_cache_min_percent / 100.0), + audio_stream_cache*1024*(stream_cache_prefill_percent / 100.0))) { free_stream(as); mp_msg(MSGT_DEMUXER,MSGL_ERR,"Can't enable audio stream cache\n"); return NULL; |