summaryrefslogtreecommitdiffstats
path: root/mplayer.c
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-11-19 14:23:54 +0000
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-11-19 14:23:54 +0000
commitb38e1ca6e7f699db28a9f15111a8a82ce600ef97 (patch)
treef3fe29fd9aa2614b508bf20f5aa1a17698e71290 /mplayer.c
parent0b062aa4474e24fcbf56b5341cded4a622f6e18f (diff)
downloadmpv-b38e1ca6e7f699db28a9f15111a8a82ce600ef97.tar.bz2
mpv-b38e1ca6e7f699db28a9f15111a8a82ce600ef97.tar.xz
Generalize subtitle switching, demux_ogg does not need a special case
anymore and demux_mov works now, too. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@21054 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'mplayer.c')
-rw-r--r--mplayer.c32
1 files changed, 19 insertions, 13 deletions
diff --git a/mplayer.c b/mplayer.c
index 0f6d0ac80e..704e0662eb 100644
--- a/mplayer.c
+++ b/mplayer.c
@@ -2246,6 +2246,10 @@ static int mp_property_sub(m_option_t* prop,int action,void* arg) {
return M_PROPERTY_OK;
}
#endif
+ if (dvdsub_id >= 0) {
+ snprintf(*(char**)arg, 63, "(%d) %s", dvdsub_id, MSGTR_Unknown);
+ return M_PROPERTY_OK;
+ }
snprintf(*(char**)arg, 63, MSGTR_Disabled);
return M_PROPERTY_OK;
@@ -2316,10 +2320,16 @@ static int mp_property_sub(m_option_t* prop,int action,void* arg) {
spudec_reset(vo_spudec);
}
#endif
-#ifdef HAVE_OGGVORBIS
- if (demuxer->type == DEMUXER_TYPE_OGG)
- d_dvdsub->id = demux_ogg_sub_id(demuxer, dvdsub_id);
-#endif
+ if (stream->type != STREAMTYPE_DVD) {
+ int i = 0;
+ for (d_dvdsub->id = 0; d_dvdsub->id < MAX_S_STREAMS; d_dvdsub->id++) {
+ if (demuxer->s_streams[d_dvdsub->id]) {
+ if (i == dvdsub_id) break;
+ i++;
+ }
+ }
+ d_dvdsub->sh = demuxer->s_streams[d_dvdsub->id];
+ }
if (demuxer->type == DEMUXER_TYPE_MATROSKA) {
d_dvdsub->id = demux_mkv_change_subs(demuxer, dvdsub_id);
#ifdef USE_ASS
@@ -4043,18 +4053,14 @@ if(!demuxer)
}
inited_flags|=INITED_DEMUXER;
-if (demuxer->type==DEMUXER_TYPE_MATROSKA) {
+if (stream->type != STREAMTYPE_DVD) {
+ int i;
// setup global sub numbering
global_sub_indices[SUB_SOURCE_DEMUX] = global_sub_size; // the global # of the first demux-specific sub.
- global_sub_size += demux_mkv_num_subs(demuxer);
+ for (i = 0; i < MAX_S_STREAMS; i++)
+ if (demuxer->s_streams[i])
+ global_sub_size++;
}
-#ifdef HAVE_OGGVORBIS
-if (demuxer->type==DEMUXER_TYPE_OGG) {
- // setup global sub numbering
- global_sub_indices[SUB_SOURCE_DEMUX] = global_sub_size; // the global # of the first demux-specific sub.
- global_sub_size += demux_ogg_num_subs(demuxer);
-}
-#endif
current_module="demux_open2";