diff options
author | mplayer-svn <svn@mplayerhq.hu> | 2011-12-31 12:20:08 +0000 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2012-08-03 01:43:03 +0200 |
commit | 98f15b645ff1d10a914c004d0b076916a5f1f094 (patch) | |
tree | 61cccc0937d86a1f06a01d874a9d33f52603c438 /stream | |
parent | e97d658bdee7b1ebb1e62fcf8d79b150bd40213f (diff) | |
download | mpv-98f15b645ff1d10a914c004d0b076916a5f1f094.tar.bz2 mpv-98f15b645ff1d10a914c004d0b076916a5f1f094.tar.xz |
stream: add new stream control command STREAM_CTRL_GET_NUM_TITLES
This provides the total number of titles (aka tracks) of CDs / VCDs / DVDs.
Additionally, add a titles property to the get_property slave command.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@34474 b3059339-0415-0410-9bf9-f77b7e298cf2
Author: ib
Diffstat (limited to 'stream')
-rw-r--r-- | stream/stream.h | 1 | ||||
-rw-r--r-- | stream/stream_cdda.c | 5 | ||||
-rw-r--r-- | stream/stream_dvd.c | 5 | ||||
-rw-r--r-- | stream/stream_vcd.c | 1 |
4 files changed, 12 insertions, 0 deletions
diff --git a/stream/stream.h b/stream/stream.h index 81bfcf0386..3ad65bb656 100644 --- a/stream/stream.h +++ b/stream/stream.h @@ -98,6 +98,7 @@ #define STREAM_CTRL_GET_NUM_ANGLES 9 #define STREAM_CTRL_GET_ANGLE 10 #define STREAM_CTRL_SET_ANGLE 11 +#define STREAM_CTRL_GET_NUM_TITLES 12 typedef enum { diff --git a/stream/stream_cdda.c b/stream/stream_cdda.c index 8bd179b1df..a014ad14c4 100644 --- a/stream/stream_cdda.c +++ b/stream/stream_cdda.c @@ -254,6 +254,11 @@ static int control(stream_t *stream, int cmd, void *arg) { cdda_priv *p = stream->priv; switch (cmd) { + case STREAM_CTRL_GET_NUM_TITLES: + { + *(unsigned int *)arg = p->cd->tracks; + return STREAM_OK; + } case STREAM_CTRL_GET_NUM_CHAPTERS: { int start_track = get_track_by_sector(p, p->start_sector); diff --git a/stream/stream_dvd.c b/stream/stream_dvd.c index 2121e78ccc..b9ffafed8f 100644 --- a/stream/stream_dvd.c +++ b/stream/stream_dvd.c @@ -621,6 +621,11 @@ static int control(stream_t *stream,int cmd,void* arg) *((double *)arg) = (double) mp_get_titleset_length(d->vts_file, d->tt_srpt, d->cur_title-1)/1000.0; return 1; } + case STREAM_CTRL_GET_NUM_TITLES: + { + *((unsigned int *)arg) = d->vmg_file->tt_srpt->nr_of_srpts; + return 1; + } case STREAM_CTRL_GET_NUM_CHAPTERS: { int r; diff --git a/stream/stream_vcd.c b/stream/stream_vcd.c index e06e381f59..0dae3731fb 100644 --- a/stream/stream_vcd.c +++ b/stream/stream_vcd.c @@ -91,6 +91,7 @@ static int seek(stream_t *s,off_t newpos) { static int control(stream_t *stream, int cmd, void *arg) { struct stream_priv_s *p = stream->priv; switch(cmd) { + case STREAM_CTRL_GET_NUM_TITLES: case STREAM_CTRL_GET_NUM_CHAPTERS: { mp_vcd_priv_t *vcd = vcd_read_toc(stream->fd); |