diff libmpdemux/demux_lavf.c @ 26000:4437c030ec00

Support -slang in lavf demuxer.
author eugeni
date Tue, 19 Feb 2008 19:41:22 +0000
parents 1b30560b5b25
children 6e9c78324790
line wrap: on
line diff
--- a/libmpdemux/demux_lavf.c	Tue Feb 19 18:04:10 2008 +0000
+++ b/libmpdemux/demux_lavf.c	Tue Feb 19 19:41:22 2008 +0000
@@ -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 @@
                 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:{