From 5cbef87c17ce4944893b53796370a1ffeb7a24f0 Mon Sep 17 00:00:00 2001 From: xylosper Date: Mon, 24 Feb 2014 00:43:04 +0900 Subject: command: use DVD volume ID for media-title property Signed-off-by: wm4 Closes #582. --- stream/stream.h | 1 + stream/stream_dvd.c | 9 +++++++++ stream/stream_dvdnav.c | 7 +++++++ 3 files changed, 17 insertions(+) (limited to 'stream') 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; -- cgit v1.2.3