Mercurial > mplayer.hg
changeset 27635:22bdd7ba8892
slave command to get the number of chapters; patch by Kevin DeKorte - kdekorte gmail com
author | nicodvb |
---|---|
date | Fri, 26 Sep 2008 21:17:01 +0000 |
parents | 9d0094f6cdf6 |
children | b45a3ae01e54 |
files | DOCS/tech/slave.txt command.c mplayer.c |
diffstat | 3 files changed, 19 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/DOCS/tech/slave.txt Thu Sep 25 17:42:56 2008 +0000 +++ b/DOCS/tech/slave.txt Fri Sep 26 21:17:01 2008 +0000 @@ -478,6 +478,7 @@ stream_end pos 0 X end pos in stream stream_length pos 0 X (end - start) chapter int 0 X X X select chapter +chapters int X number of chapters angle int 0 X X X select angle length time X length of file in seconds percent_pos int 0 100 X X X position in percent
--- a/command.c Thu Sep 25 17:42:56 2008 +0000 +++ b/command.c Fri Sep 26 21:17:01 2008 +0000 @@ -447,6 +447,17 @@ return M_PROPERTY_OK; } +/// Number of chapters in file +static int mp_property_chapters(m_option_t *prop, int action, void *arg, + MPContext *mpctx) +{ + if (!mpctx->demuxer) + return M_PROPERTY_UNAVAILABLE; + if (mpctx->demuxer->num_chapters == 0) + stream_control(mpctx->demuxer->stream, STREAM_CTRL_GET_NUM_CHAPTERS, &mpctx->demuxer->num_chapters); + return m_property_int_ro(prop, action, arg, mpctx->demuxer->num_chapters); +} + /// Current dvd angle (RW) static int mp_property_angle(m_option_t *prop, int action, void *arg, MPContext *mpctx) @@ -1983,6 +1994,8 @@ M_OPT_MIN, 0, 0, NULL }, { "chapter", mp_property_chapter, CONF_TYPE_INT, M_OPT_MIN, 1, 0, NULL }, + { "chapters", mp_property_chapters, CONF_TYPE_INT, + 0, 0, 0, NULL }, { "angle", mp_property_angle, CONF_TYPE_INT, CONF_RANGE, -2, 10, NULL }, { "metadata", mp_property_metadata, CONF_TYPE_STRING_LIST,
--- a/mplayer.c Thu Sep 25 17:42:56 2008 +0000 +++ b/mplayer.c Fri Sep 26 21:17:01 2008 +0000 @@ -3531,6 +3531,11 @@ } mp_msg(MSGT_IDENTIFY,MSGL_INFO,"ID_LENGTH=%.2lf\n", demuxer_get_time_length(mpctx->demuxer)); mp_msg(MSGT_IDENTIFY,MSGL_INFO,"ID_SEEKABLE=%d\n", mpctx->stream->seek ? 1 : 0); + if (mpctx->demuxer) { + if (mpctx->demuxer->num_chapters == 0) + stream_control(mpctx->demuxer->stream, STREAM_CTRL_GET_NUM_CHAPTERS, &mpctx->demuxer->num_chapters); + mp_msg(MSGT_IDENTIFY,MSGL_INFO,"ID_CHAPTERS=%d\n", mpctx->demuxer->num_chapters); + } if(!mpctx->sh_video) goto main; // audio-only