summaryrefslogtreecommitdiffstats
path: root/stream/stream_dvd.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2013-06-05 01:59:04 +0200
committerwm4 <wm4@nowhere>2013-06-09 22:06:02 +0200
commit005375bb7d095d06c46a1d47223e0381439dc3ea (patch)
tree67ab3869e46afe1e3752392e7650e3a6e07cbe9f /stream/stream_dvd.c
parent97887895308d8912ffa78400fcccd1ddb2c58680 (diff)
downloadmpv-005375bb7d095d06c46a1d47223e0381439dc3ea.tar.bz2
mpv-005375bb7d095d06c46a1d47223e0381439dc3ea.tar.xz
core: use STREAM_CTRL instead of accessing stream_dvd internals
Some code in mplayer.c did stuff like accessing (dvd_priv_t *)st->priv. Do this indirectly by introducing STREAM_CTRL_GET_DVD_INFO. This is extremely specific to DVD, so it's not worth abstracting this further. This is a preparation for turning the cache into an actual stream, which simply wraps the cached stream. There are other streams which are accessed in the way DVD was, at least TV/radio/DVB. We assume these can't be used with the cache. The code doesn't look thread-safe or fork aware.
Diffstat (limited to 'stream/stream_dvd.c')
-rw-r--r--stream/stream_dvd.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/stream/stream_dvd.c b/stream/stream_dvd.c
index aa113667fd..1a641de5cd 100644
--- a/stream/stream_dvd.c
+++ b/stream/stream_dvd.c
@@ -747,6 +747,14 @@ static int control(stream_t *stream,int cmd,void* arg)
}
case STREAM_CTRL_MANAGES_TIMELINE:
return STREAM_OK;
+ case STREAM_CTRL_GET_DVD_INFO:
+ {
+ struct stream_dvd_info_req *req = arg;
+ memset(req, 0, sizeof(*req));
+ req->num_subs = dvd_number_of_subs(stream);
+ memcpy(req->palette, d->cur_pgc->palette, sizeof(req->palette));
+ return STREAM_OK;
+ }
}
return STREAM_UNSUPPORTED;
}