From 018530cb7490600bf1f14bfe7cc93e18321ddce7 Mon Sep 17 00:00:00 2001 From: wm4 Date: Tue, 16 Apr 2013 10:22:54 +0200 Subject: demux_mkv: always add subtitle tracks Even if the codec is unknown. --- demux/demux_mkv.c | 52 ++++++++++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/demux/demux_mkv.c b/demux/demux_mkv.c index 647f831630..d8159ac1e2 100644 --- a/demux/demux_mkv.c +++ b/demux/demux_mkv.c @@ -1578,35 +1578,35 @@ static int demux_mkv_open_sub(demuxer_t *demuxer, mkv_track_t *track) break; } } - if (subtitle_type) { - bstr in = (bstr){track->private_data, track->private_size}; - struct sh_stream *gsh = new_sh_stream(demuxer, STREAM_SUB); - if (!gsh) - return 1; - track->stream = gsh; - sh_sub_t *sh = gsh->sub; - sh->gsh->demuxer_id = track->tnum; - track->sh_sub = sh; - sh->gsh->codec = subtitle_type; - bstr buffer = demux_mkv_decode(track, in, 2); - if (buffer.start && buffer.start != track->private_data) { - talloc_free(track->private_data); - talloc_steal(track, buffer.start); - track->private_data = buffer.start; - track->private_size = buffer.len; - } - sh->extradata = malloc(track->private_size); - memcpy(sh->extradata, track->private_data, track->private_size); - sh->extradata_len = track->private_size; - if (track->language && (strcmp(track->language, "und") != 0)) - sh->gsh->lang = talloc_strdup(sh, track->language); - sh->gsh->title = talloc_strdup(sh, track->name); - sh->gsh->default_track = track->default_track; - } else { + + bstr in = (bstr){track->private_data, track->private_size}; + struct sh_stream *gsh = new_sh_stream(demuxer, STREAM_SUB); + if (!gsh) + return 1; + track->stream = gsh; + sh_sub_t *sh = gsh->sub; + sh->gsh->demuxer_id = track->tnum; + track->sh_sub = sh; + sh->gsh->codec = subtitle_type; + bstr buffer = demux_mkv_decode(track, in, 2); + if (buffer.start && buffer.start != track->private_data) { + talloc_free(track->private_data); + talloc_steal(track, buffer.start); + track->private_data = buffer.start; + track->private_size = buffer.len; + } + sh->extradata = malloc(track->private_size); + memcpy(sh->extradata, track->private_data, track->private_size); + sh->extradata_len = track->private_size; + if (track->language && (strcmp(track->language, "und") != 0)) + sh->gsh->lang = talloc_strdup(sh, track->language); + sh->gsh->title = talloc_strdup(sh, track->name); + sh->gsh->default_track = track->default_track; + + if (!subtitle_type) { mp_tmsg(MSGT_DEMUX, MSGL_ERR, "[mkv] Subtitle type '%s' is not supported.\n", track->codec_id); - return 1; } return 0; -- cgit v1.2.3