diff options
author | xylosper <darklin20@gmail.com> | 2014-02-24 00:43:04 +0900 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2014-02-23 18:16:24 +0100 |
commit | 5cbef87c17ce4944893b53796370a1ffeb7a24f0 (patch) | |
tree | 38239784f3dbb5925ed604b1f7f1718960b7846c /stream | |
parent | 8906e409250da939e40c57783ef349cfdecc99d8 (diff) | |
download | mpv-5cbef87c17ce4944893b53796370a1ffeb7a24f0.tar.bz2 mpv-5cbef87c17ce4944893b53796370a1ffeb7a24f0.tar.xz |
command: use DVD volume ID for media-title property
Signed-off-by: wm4 <wm4@nowhere>
Closes #582.
Diffstat (limited to 'stream')
-rw-r--r-- | stream/stream.h | 1 | ||||
-rw-r--r-- | stream/stream_dvd.c | 9 | ||||
-rw-r--r-- | stream/stream_dvdnav.c | 7 |
3 files changed, 17 insertions, 0 deletions
diff --git a/stream/stream.h b/stream/stream.h index 9361884657..0ccf9557e2 100644 --- a/stream/stream.h +++ b/stream/stream.h @@ -99,6 +99,7 @@ enum stream_ctrl { STREAM_CTRL_GET_BASE_FILENAME, STREAM_CTRL_GET_NAV_EVENT, // struct mp_nav_event** STREAM_CTRL_NAV_CMD, // struct mp_nav_cmd* + STREAM_CTRL_GET_DVD_VOLUME_ID, }; struct stream_lang_req { diff --git a/stream/stream_dvd.c b/stream/stream_dvd.c index 27b539901d..7e3c9c1cc3 100644 --- a/stream/stream_dvd.c +++ b/stream/stream_dvd.c @@ -727,6 +727,15 @@ static int control(stream_t *stream,int cmd,void* arg) memcpy(req->palette, d->cur_pgc->palette, sizeof(req->palette)); return STREAM_OK; } + case STREAM_CTRL_GET_DVD_VOLUME_ID: + { + char buffer[128]; + if (DVDUDFVolumeInfo(d->dvd, buffer, sizeof(buffer), NULL, 0) < 0 + && DVDISOVolumeInfo(d->dvd, buffer, sizeof(buffer), NULL, 0) < 0) + return STREAM_ERROR; + *(char**)arg = talloc_strdup(NULL, buffer); + return STREAM_OK; + } } return STREAM_UNSUPPORTED; } diff --git a/stream/stream_dvdnav.c b/stream/stream_dvdnav.c index ca17846921..537047fe04 100644 --- a/stream/stream_dvdnav.c +++ b/stream/stream_dvdnav.c @@ -602,6 +602,13 @@ static int control(stream_t *stream, int cmd, void *arg) handle_cmd(stream, (struct mp_nav_cmd *)arg); return STREAM_OK; } + case STREAM_CTRL_GET_DVD_VOLUME_ID: { + const char *volume = NULL; + if (dvdnav_get_title_string(dvdnav, &volume) != DVDNAV_STATUS_OK || !volume) + return STREAM_ERROR; + *(char**)arg = talloc_strdup(NULL, volume); + return STREAM_OK; + } } return STREAM_UNSUPPORTED; |