summaryrefslogtreecommitdiffstats
path: root/libmpdemux/demux_mkv.c
diff options
context:
space:
mode:
authorjoey <joey@b3059339-0415-0410-9bf9-f77b7e298cf2>2004-09-28 13:51:20 +0000
committerjoey <joey@b3059339-0415-0410-9bf9-f77b7e298cf2>2004-09-28 13:51:20 +0000
commitbaef32bc2c0075af1d7687163000b34a0ded4ff2 (patch)
tree9f932d67d8e2f70fd8758404973d11a8ec3d6d3b /libmpdemux/demux_mkv.c
parent4ff50686d9a0725984186fd7d912420a7d7b8ade (diff)
downloadmpv-baef32bc2c0075af1d7687163000b34a0ded4ff2.tar.bz2
mpv-baef32bc2c0075af1d7687163000b34a0ded4ff2.tar.xz
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
Diffstat (limited to 'libmpdemux/demux_mkv.c')
-rw-r--r--libmpdemux/demux_mkv.c20
1 files changed, 20 insertions, 0 deletions
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