summaryrefslogtreecommitdiffstats
path: root/stream/cache2.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2012-12-01 23:28:58 +0100
committerwm4 <wm4@nowhere>2012-12-03 21:08:51 +0100
commit6294c785490be5fc31d29758ca592510fd161371 (patch)
treea03c9135534f28cf7e9a62abcde87c65eb54eeaa /stream/cache2.c
parent2d58234c86e59298de52fec12d1eb59086d68763 (diff)
downloadmpv-6294c785490be5fc31d29758ca592510fd161371.tar.bz2
mpv-6294c785490be5fc31d29758ca592510fd161371.tar.xz
cache: simplify further
This commit is separate from the previous one to separate our own changes from changes merged from mplayer2 (as far as that was possible). Make it easier for stream implementations to request being cached. Set a default cache size in stream.c, and remove them from various stream implementations. Only MS streaming support sets a meaningful cache size. Make querying cache size saner. This reduces the amount of #ifdefs needed.
Diffstat (limited to 'stream/cache2.c')
-rw-r--r--stream/cache2.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/stream/cache2.c b/stream/cache2.c
index 27147d00fb..8b35150321 100644
--- a/stream/cache2.c
+++ b/stream/cache2.c
@@ -360,9 +360,9 @@ static cache_vars_t* cache_init(int64_t size,int sector){
memset(s,0,sizeof(cache_vars_t));
num=size/sector;
- if(num < 16){
- num = 16;
- }//32kb min_size
+ if(num < 32){
+ num = 32;
+ }//64kb min_size
s->buffer_size=num*sector;
s->sector_size=sector;
s->buffer=shared_alloc(s->buffer_size);
@@ -583,14 +583,6 @@ int cache_stream_fill_buffer(stream_t *s){
}
-int cache_fill_status(stream_t *s) {
- cache_vars_t *cv;
- if (!s || !s->cache_data)
- return -1;
- cv = s->cache_data;
- return (cv->max_filepos-cv->read_filepos)/(cv->buffer_size / 100);
-}
-
int cache_stream_seek_long(stream_t *stream,int64_t pos){
cache_vars_t* s;
int64_t newpos;
@@ -626,6 +618,12 @@ int cache_do_control(stream_t *stream, int cmd, void *arg) {
int pos_change = 0;
cache_vars_t* s = stream->cache_data;
switch (cmd) {
+ case STREAM_CTRL_GET_CACHE_SIZE:
+ *(int64_t *)arg = s->buffer_size;
+ return STREAM_OK;
+ case STREAM_CTRL_GET_CACHE_FILL:
+ *(int64_t *)arg = s->max_filepos - s->read_filepos;
+ return STREAM_OK;
case STREAM_CTRL_SEEK_TO_TIME:
s->control_double_arg = *(double *)arg;
s->control = cmd;