summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libmpdemux/demux_mpg.c5
-rw-r--r--mplayer.c2
2 files changed, 7 insertions, 0 deletions
diff --git a/libmpdemux/demux_mpg.c b/libmpdemux/demux_mpg.c
index 4f57c89a3d..a3ae67506f 100644
--- a/libmpdemux/demux_mpg.c
+++ b/libmpdemux/demux_mpg.c
@@ -36,6 +36,7 @@ typedef struct mpg_demuxer {
int a_stream_ids[MAX_A_STREAMS];
} mpg_demuxer_t;
+extern char* dvdsub_lang;
static int mpeg_pts_error=0;
static int parse_psm(demuxer_t *demux, int len) {
@@ -293,6 +294,10 @@ static int demux_mpg_read_packet(demuxer_t *demux,int id){
demux->s_streams[aid]=1;
}
+ if(demux->sub->id > -1)
+ demux->sub->id &= 0x1F;
+ if(!dvdsub_lang && demux->sub->id == -1)
+ demux->sub->id = aid;
if(demux->sub->id==aid){
ds=demux->sub;
}
diff --git a/mplayer.c b/mplayer.c
index 3e8002f8ca..f50eca4cee 100644
--- a/mplayer.c
+++ b/mplayer.c
@@ -3794,8 +3794,10 @@ if (stream->type==STREAMTYPE_DVDNAV && dvd_nav_still)
vo_sub_last = vo_sub = NULL;
#endif
vobsub_id = -1;
+ if(dvdsub_lang) {
dvdsub_id = -1;
if (d_dvdsub) d_dvdsub->id = -1;
+ }
// be careful!
// if sub_changed is till on but subdata's been reset, bad things happen.