diff options
author | xylosper <darklin20@gmail.com> | 2014-03-18 13:03:00 +0900 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2014-03-18 15:24:45 +0100 |
commit | d2e35b2faafab1dfcf5e4acbdc36b569d3834b9a (patch) | |
tree | 1ec385de7524e9d0aa3fe707c37091850db6eb59 | |
parent | 5c2b4d9356f62781fa01f67f1fa881f7f2d8efb1 (diff) | |
download | mpv-d2e35b2faafab1dfcf5e4acbdc36b569d3834b9a.tar.bz2 mpv-d2e35b2faafab1dfcf5e4acbdc36b569d3834b9a.tar.xz |
command: make 'disc-title' property writable
This commit makes 'disc-title' property writable using
STREAM_CTRL_SET_CURRENT_TITLE. This commit also contains
implementation of STREAM_CTRL_SET_CURRENT_TITLE for stream_bluray.
Currently, 'disc-title' is writable only for stream_dvdnav and
stream_bluray and stream_dvd is not supported.
-rw-r--r-- | player/command.c | 10 | ||||
-rw-r--r-- | stream/stream_bluray.c | 9 |
2 files changed, 16 insertions, 3 deletions
diff --git a/player/command.c b/player/command.c index e15d3db54e..d9854af9e8 100644 --- a/player/command.c +++ b/player/command.c @@ -436,7 +436,7 @@ static int mp_property_playtime_remaining(m_option_t *prop, int action, return property_time(prop, action, arg, remaining / speed); } -/// Current BD/DVD title (RO) +/// Current BD/DVD title (RW) static int mp_property_disc_title(m_option_t *prop, int action, void *arg, MPContext *mpctx) { @@ -449,7 +449,13 @@ static int mp_property_disc_title(m_option_t *prop, int action, void *arg, case M_PROPERTY_GET: if (stream_control(stream, STREAM_CTRL_GET_CURRENT_TITLE, &title) <= 0) return M_PROPERTY_UNAVAILABLE; - return m_property_int_ro(prop, action, arg, title); + *(int*)arg = title; + return M_PROPERTY_OK; + case M_PROPERTY_SET: + title = *(int*)arg; + if (stream_control(stream, STREAM_CTRL_SET_CURRENT_TITLE, &title) <= 0) + return M_PROPERTY_NOT_IMPLEMENTED; + return M_PROPERTY_OK; default: return M_PROPERTY_NOT_IMPLEMENTED; } diff --git a/stream/stream_bluray.c b/stream/stream_bluray.c index 83d26c05fb..e606eafbb5 100644 --- a/stream/stream_bluray.c +++ b/stream/stream_bluray.c @@ -143,7 +143,14 @@ static int bluray_stream_control(stream_t *s, int cmd, void *arg) } return STREAM_ERROR; } - + case STREAM_CTRL_SET_CURRENT_TITLE: { + const uint32_t title = *((unsigned int*)arg); + if (title < b->num_titles && bd_select_title(b->bd, title)) { + b->current_title = title; + return STREAM_OK; + } + return STREAM_ERROR; + } case STREAM_CTRL_GET_CURRENT_TITLE: { *((unsigned int *) arg) = b->current_title; return 1; |