diff options
author | wm4 <wm4@nowhere> | 2019-11-07 15:54:34 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2019-11-07 22:53:13 +0100 |
commit | e5a9b792ecf08ddbcf3b674de3a00f7a919d1858 (patch) | |
tree | ead751b12d006d13f138867324b62dda62b8e77b /stream/stream_cb.c | |
parent | ca75fedaf4dea19986159f1caa5ab9ebc202f9d4 (diff) | |
download | mpv-e5a9b792ecf08ddbcf3b674de3a00f7a919d1858.tar.bz2 mpv-e5a9b792ecf08ddbcf3b674de3a00f7a919d1858.tar.xz |
stream: replace STREAM_CTRL_GET_SIZE with a proper entrypoint
This is overlay convoluted as a stream control, and important enough to
warrant "first class" functionality.
Diffstat (limited to 'stream/stream_cb.c')
-rw-r--r-- | stream/stream_cb.c | 21 |
1 files changed, 8 insertions, 13 deletions
diff --git a/stream/stream_cb.c b/stream/stream_cb.c index 5a946a6369..c6f33263a3 100644 --- a/stream/stream_cb.c +++ b/stream/stream_cb.c @@ -36,22 +36,17 @@ static int seek(stream_t *s, int64_t newpos) return p->info.seek_fn(p->info.cookie, newpos) >= 0; } -static int control(stream_t *s, int cmd, void *arg) +static int64_t get_size(stream_t *s) { struct priv *p = s->priv; - switch (cmd) { - case STREAM_CTRL_GET_SIZE: { - if (!p->info.size_fn) - break; + + if (p->info.size_fn) { int64_t size = p->info.size_fn(p->info.cookie); - if (size >= 0) { - *(int64_t *)arg = size; - return 1; - } - break; - } + if (size >= 0) + return size; } - return STREAM_UNSUPPORTED; + + return -1; } static void s_close(stream_t *s) @@ -96,7 +91,7 @@ static int open_cb(stream_t *stream) } stream->fast_skip = true; stream->fill_buffer = fill_buffer; - stream->control = control; + stream->get_size = get_size; stream->read_chunk = 64 * 1024; stream->close = s_close; |