summaryrefslogtreecommitdiffstats
path: root/mplayer.c
diff options
context:
space:
mode:
authormosu <mosu@b3059339-0415-0410-9bf9-f77b7e298cf2>2004-08-24 20:58:29 +0000
committermosu <mosu@b3059339-0415-0410-9bf9-f77b7e298cf2>2004-08-24 20:58:29 +0000
commit55e4ded2bca9381f03452d92be7da72b187e5325 (patch)
tree3143eeba1df24cb08792a725d865de19e22634cc /mplayer.c
parent23e9e1c0314b30825b5f67db2c82df347d6060cc (diff)
downloadmpv-55e4ded2bca9381f03452d92be7da72b187e5325.tar.bz2
mpv-55e4ded2bca9381f03452d92be7da72b187e5325.tar.xz
Support for subtitle switching in Matroska.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@13127 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'mplayer.c')
-rw-r--r--mplayer.c31
1 files changed, 30 insertions, 1 deletions
diff --git a/mplayer.c b/mplayer.c
index acc1315433..7bca9219cc 100644
--- a/mplayer.c
+++ b/mplayer.c
@@ -1590,7 +1590,7 @@ if(!sh_video && !sh_audio){
demux_info_print(demuxer);
//================== Read SUBTITLES (DVD & TEXT) ==========================
-if(vo_spudec==NULL && sh_video && stream->type==STREAMTYPE_DVD){
+if(vo_spudec==NULL && sh_video && (stream->type==STREAMTYPE_DVD || demuxer->type==DEMUXER_TYPE_MATROSKA)){
if (spudec_ifo) {
unsigned int palette[16], width, height;
@@ -3178,6 +3178,35 @@ if (stream->type==STREAMTYPE_DVDNAV && dvd_nav_still)
d_dvdsub->id = demux_ogg_sub_id(new_id);
}
#endif
+#ifdef HAVE_MATROSKA
+ if (d_dvdsub && demuxer->type == DEMUXER_TYPE_MATROSKA) {
+ int new_id = dvdsub_id + 1;
+ if (dvdsub_id < 0)
+ new_id = 0;
+ if ((unsigned int) new_id >= demux_mkv_num_subs(demuxer))
+ new_id = -1;
+ if (new_id != dvdsub_id)
+ osd_show_vobsub_changed = sh_video->fps;
+ dvdsub_id = new_id;
+ d_dvdsub->id = demux_mkv_change_subs(demuxer, new_id);
+ if (d_dvdsub->id >= 0 && ((mkv_sh_sub_t *)d_dvdsub->sh)->type == 'v') {
+ mkv_sh_sub_t *mkv_sh_sub = (mkv_sh_sub_t *)d_dvdsub->sh;
+ if (vo_spudec != NULL)
+ spudec_free(vo_spudec);
+ vo_spudec =
+ spudec_new_scaled_vobsub(mkv_sh_sub->palette, 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;
+ }
+ }
+ }
+#endif
break;
case MP_CMD_SUB_FORCED_ONLY:
if (vo_spudec) {