summaryrefslogtreecommitdiffstats
path: root/stream
diff options
context:
space:
mode:
Diffstat (limited to 'stream')
-rw-r--r--stream/stream.h1
-rw-r--r--stream/stream_dvd.c9
-rw-r--r--stream/stream_dvdnav.c7
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;