summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoreugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2>2008-02-29 17:25:44 +0000
committereugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2>2008-02-29 17:25:44 +0000
commit96b0752265b8c5094036d64b815cd21c6084b863 (patch)
treee8b7c3f3076569500271c6c234a8f85d57693a3f
parent2c8e65329f3cabd86428d26dd0ed2fec49f38b41 (diff)
downloadmpv-96b0752265b8c5094036d64b815cd21c6084b863.tar.bz2
mpv-96b0752265b8c5094036d64b815cd21c6084b863.tar.xz
Demuxer-independent subtitle track selection.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@26119 b3059339-0415-0410-9bf9-f77b7e298cf2
-rw-r--r--mencoder.c12
-rw-r--r--mplayer.c2
2 files changed, 14 insertions, 0 deletions
diff --git a/mencoder.c b/mencoder.c
index 4f93cd8d2a..5feb694936 100644
--- a/mencoder.c
+++ b/mencoder.c
@@ -600,6 +600,18 @@ if(stream->type==STREAMTYPE_DVDNAV){
mencoder_exit(1,NULL);
}
+ if (dvdsub_id < 0 && dvdsub_lang)
+ dvdsub_id = demuxer_sub_track_by_lang(demuxer, dvdsub_lang);
+
+ for (i = 0; i < MAX_S_STREAMS; i++) {
+ sh_sub_t *sh = demuxer->s_streams[i];
+ if (sh && sh->sid == dvdsub_id) {
+ demuxer->sub->id = i;
+ demuxer->sub->sh = sh;
+ break;
+ }
+ }
+
if(dvd_chapter>1) {
float pts;
if (demuxer_seek_chapter(demuxer, dvd_chapter-1, 1, &pts, NULL, NULL) >= 0 && pts > -1.0)
diff --git a/mplayer.c b/mplayer.c
index 7d676b1fd8..35943e3117 100644
--- a/mplayer.c
+++ b/mplayer.c
@@ -3444,6 +3444,8 @@ if(mpctx->sh_video) {
if (mpctx->global_sub_size) {
// find the best sub to use
int vobsub_index_id = vobsub_get_index_by_id(vo_vobsub, vobsub_id);
+ if (dvdsub_id < 0 && dvdsub_lang)
+ dvdsub_id = demuxer_sub_track_by_lang(mpctx->demuxer, dvdsub_lang);
if (vobsub_index_id >= 0) {
// if user asks for a vobsub id, use that first.
mpctx->global_sub_pos = mpctx->global_sub_indices[SUB_SOURCE_VOBSUB] + vobsub_index_id;