Mercurial > mplayer.hg
comparison mplayer.c @ 13126:b59e16a8dfc7
Support for subtitle switching in Matroska.
author | mosu |
---|---|
date | Tue, 24 Aug 2004 20:58:29 +0000 |
parents | fcce0023bf55 |
children | 957fc21fc10a |
comparison
equal
deleted
inserted
replaced
13125:69f13a4cbab9 | 13126:b59e16a8dfc7 |
---|---|
1588 | 1588 |
1589 /* display clip info */ | 1589 /* display clip info */ |
1590 demux_info_print(demuxer); | 1590 demux_info_print(demuxer); |
1591 | 1591 |
1592 //================== Read SUBTITLES (DVD & TEXT) ========================== | 1592 //================== Read SUBTITLES (DVD & TEXT) ========================== |
1593 if(vo_spudec==NULL && sh_video && stream->type==STREAMTYPE_DVD){ | 1593 if(vo_spudec==NULL && sh_video && (stream->type==STREAMTYPE_DVD || demuxer->type==DEMUXER_TYPE_MATROSKA)){ |
1594 | 1594 |
1595 if (spudec_ifo) { | 1595 if (spudec_ifo) { |
1596 unsigned int palette[16], width, height; | 1596 unsigned int palette[16], width, height; |
1597 current_module="spudec_init_vobsub"; | 1597 current_module="spudec_init_vobsub"; |
1598 if (vobsub_parse_ifo(NULL,spudec_ifo, palette, &width, &height, 1, -1, NULL) >= 0) | 1598 if (vobsub_parse_ifo(NULL,spudec_ifo, palette, &width, &height, 1, -1, NULL) >= 0) |
3174 new_id = -1; | 3174 new_id = -1; |
3175 if (new_id != dvdsub_id) | 3175 if (new_id != dvdsub_id) |
3176 osd_show_vobsub_changed = sh_video->fps; | 3176 osd_show_vobsub_changed = sh_video->fps; |
3177 dvdsub_id = new_id; | 3177 dvdsub_id = new_id; |
3178 d_dvdsub->id = demux_ogg_sub_id(new_id); | 3178 d_dvdsub->id = demux_ogg_sub_id(new_id); |
3179 } | |
3180 #endif | |
3181 #ifdef HAVE_MATROSKA | |
3182 if (d_dvdsub && demuxer->type == DEMUXER_TYPE_MATROSKA) { | |
3183 int new_id = dvdsub_id + 1; | |
3184 if (dvdsub_id < 0) | |
3185 new_id = 0; | |
3186 if ((unsigned int) new_id >= demux_mkv_num_subs(demuxer)) | |
3187 new_id = -1; | |
3188 if (new_id != dvdsub_id) | |
3189 osd_show_vobsub_changed = sh_video->fps; | |
3190 dvdsub_id = new_id; | |
3191 d_dvdsub->id = demux_mkv_change_subs(demuxer, new_id); | |
3192 if (d_dvdsub->id >= 0 && ((mkv_sh_sub_t *)d_dvdsub->sh)->type == 'v') { | |
3193 mkv_sh_sub_t *mkv_sh_sub = (mkv_sh_sub_t *)d_dvdsub->sh; | |
3194 if (vo_spudec != NULL) | |
3195 spudec_free(vo_spudec); | |
3196 vo_spudec = | |
3197 spudec_new_scaled_vobsub(mkv_sh_sub->palette, mkv_sh_sub->colors, | |
3198 mkv_sh_sub->custom_colors, | |
3199 mkv_sh_sub->width, | |
3200 mkv_sh_sub->height); | |
3201 if (!forced_subs_only) | |
3202 forced_subs_only = mkv_sh_sub->forced_subs_only; | |
3203 if (vo_spudec) { | |
3204 spudec_set_forced_subs_only(vo_spudec, forced_subs_only); | |
3205 inited_flags |= INITED_SPUDEC; | |
3206 } | |
3207 } | |
3179 } | 3208 } |
3180 #endif | 3209 #endif |
3181 break; | 3210 break; |
3182 case MP_CMD_SUB_FORCED_ONLY: | 3211 case MP_CMD_SUB_FORCED_ONLY: |
3183 if (vo_spudec) { | 3212 if (vo_spudec) { |