From baef32bc2c0075af1d7687163000b34a0ded4ff2 Mon Sep 17 00:00:00 2001 From: joey Date: Tue, 28 Sep 2004 13:51:20 +0000 Subject: fix sub_select fiasco with global sub numbering. now multiple sub sources can be managed in essentially one list. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@13502 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpdemux/demux_mkv.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'libmpdemux/demux_mkv.c') diff --git a/libmpdemux/demux_mkv.c b/libmpdemux/demux_mkv.c index be27e69c00..3a7f710782 100644 --- a/libmpdemux/demux_mkv.c +++ b/libmpdemux/demux_mkv.c @@ -227,6 +227,7 @@ typedef struct __attribute__((__packed__)) /* for e.g. "-slang ger" */ extern char *dvdsub_lang; extern char *audio_lang; +extern int dvdsub_id; static mkv_track_t * @@ -2043,6 +2044,24 @@ demux_mkv_open_sub (demuxer_t *demuxer, mkv_track_t *track) void demux_mkv_seek (demuxer_t *demuxer, float rel_seek_secs, int flags); +/** \brief Given a matroska track number, find the subtitle number that mplayer would ask for. + * \param d The demuxer for which the subtitle id should be returned. + * \param num The matroska track number we are looking up. + */ +static int demux_mkv_sub_reverse_id(mkv_demuxer_t *d, int num) +{ + int i, id; + + for (i=0, id=0; i < d->num_tracks; i++) + if (d->tracks[i] != NULL && d->tracks[i]->type == MATROSKA_TRACK_SUBTITLE) { + if (d->tracks[i]->tnum == num) + return id; + id++; + } + + return -1; +} + int demux_mkv_open (demuxer_t *demuxer) { @@ -2256,6 +2275,7 @@ demux_mkv_open (demuxer_t *demuxer) { mp_msg (MSGT_DEMUX, MSGL_INFO, "[mkv] Will display subtitle track %u\n", track->tnum); + dvdsub_id = demux_mkv_sub_reverse_id(mkv_d, track->tnum); demuxer->sub->id = track->tnum; } else -- cgit v1.2.3