summaryrefslogtreecommitdiffstats
path: root/libmpdemux
diff options
context:
space:
mode:
authoreugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2>2008-02-19 19:41:22 +0000
committereugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2>2008-02-19 19:41:22 +0000
commitcfa0af8f17f82b9656e374c0b12040fc7601f821 (patch)
tree9b6723ca7c6d8f8dc8d5b4c1b7bd67a27eca43b0 /libmpdemux
parent67352a6575f2c0b4dd65140f40c35336eda81c06 (diff)
downloadmpv-cfa0af8f17f82b9656e374c0b12040fc7601f821.tar.bz2
mpv-cfa0af8f17f82b9656e374c0b12040fc7601f821.tar.xz
Support -slang in lavf demuxer.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@26032 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux')
-rw-r--r--libmpdemux/demux_lavf.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/libmpdemux/demux_lavf.c b/libmpdemux/demux_lavf.c
index 135909efa4..e6feb13e92 100644
--- a/libmpdemux/demux_lavf.c
+++ b/libmpdemux/demux_lavf.c
@@ -46,6 +46,8 @@
#define PROBE_BUF_SIZE 2048
extern char *audio_lang;
+extern char *dvdsub_lang;
+extern int dvdsub_id;
static unsigned int opt_probesize = 0;
static unsigned int opt_analyzeduration = 0;
static char *opt_format;
@@ -433,7 +435,14 @@ static void handle_stream(demuxer_t *demuxer, AVFormatContext *avfc, int i) {
memcpy(sh_sub->extradata, codec->extradata, codec->extradata_size);
sh_sub->extradata_len = codec->extradata_size;
}
- demuxer->sub->sh = demuxer->s_streams[priv->sub_streams++];
+ if (demuxer->sub->id == -1
+ || (demuxer->sub->id == -2 && (dvdsub_lang && st->language[0] && !strncmp(dvdsub_lang, st->language, 3)))
+ || demuxer->sub->id == priv->sub_streams) {
+ dvdsub_id = i;
+ demuxer->sub->id = priv->sub_streams;
+ demuxer->sub->sh = sh_sub;
+ }
+ priv->sub_streams++;
break;
}
case CODEC_TYPE_ATTACHMENT:{