summaryrefslogtreecommitdiffstats
path: root/mplayer.c
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-11-21 15:48:00 +0000
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-11-21 15:48:00 +0000
commit68faef14e9824e9fdfb5e9faecf147c56ff17c21 (patch)
tree664bef77960c9d5e8fe31a8625828a30de1b8999 /mplayer.c
parentc99a4cad085790926671e7d42666a2b89b55ee9d (diff)
downloadmpv-68faef14e9824e9fdfb5e9faecf147c56ff17c21.tar.bz2
mpv-68faef14e9824e9fdfb5e9faecf147c56ff17c21.tar.xz
Reuse init_vo_spudec in subtitle switching code.
Also generalize vobsub and ass init code to work for demuxers besides matroska (fixes subtitle switching with http://samples.mplayerhq.hu/sub/NeroMP4/unsupported-embedded-subs-2.mp4) git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@21136 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'mplayer.c')
-rw-r--r--mplayer.c31
1 files changed, 7 insertions, 24 deletions
diff --git a/mplayer.c b/mplayer.c
index 64906e5cdd..883647c2ec 100644
--- a/mplayer.c
+++ b/mplayer.c
@@ -2379,32 +2379,15 @@ static int mp_property_sub(m_option_t* prop,int action,void* arg) {
}
if (demuxer->type == DEMUXER_TYPE_MATROSKA) {
d_dvdsub->id = demux_mkv_change_subs(demuxer, dvdsub_id);
+ }
+ if (d_dvdsub->sh && d_dvdsub->id >= 0) {
+ sh_sub_t *sh = d_dvdsub->sh;
+ if (sh->type == 'v')
+ init_vo_spudec();
#ifdef USE_ASS
- if (ass_enabled && (d_dvdsub->id >= 0) &&
- (((sh_sub_t *)d_dvdsub->sh)->type == 'a')) {
- ass_track = ((sh_sub_t *)d_dvdsub->sh)->ass_track;
- }
+ else if (ass_enabled && sh->type == 'a')
+ ass_track = sh->ass_track;
#endif
- if (d_dvdsub->id >= 0 &&
- ((sh_sub_t *)d_dvdsub->sh)->type == 'v') {
- sh_sub_t *mkv_sh_sub = (sh_sub_t *)d_dvdsub->sh;
- if (vo_spudec != NULL)
- spudec_free(vo_spudec);
- vo_spudec =
- spudec_new_scaled_vobsub(mkv_sh_sub->has_palette ?
- mkv_sh_sub->palette :
- NULL, mkv_sh_sub->colors,
- mkv_sh_sub->custom_colors,
- mkv_sh_sub->width,
- mkv_sh_sub->height);
- if (!forced_subs_only)
- forced_subs_only = mkv_sh_sub->forced_subs_only;
- if (vo_spudec) {
- spudec_set_forced_subs_only(vo_spudec,
- forced_subs_only);
- inited_flags |= INITED_SPUDEC;
- }
- }
}
}
} else { // off