mirror of
https://github.com/mpv-player/mpv
synced 2025-04-10 11:41:37 +00:00
demux_mkv: always add subtitle tracks
Even if the codec is unknown.
This commit is contained in:
parent
15ff7a5719
commit
018530cb74
@ -1578,35 +1578,35 @@ static int demux_mkv_open_sub(demuxer_t *demuxer, mkv_track_t *track)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (subtitle_type) {
|
|
||||||
bstr in = (bstr){track->private_data, track->private_size};
|
bstr in = (bstr){track->private_data, track->private_size};
|
||||||
struct sh_stream *gsh = new_sh_stream(demuxer, STREAM_SUB);
|
struct sh_stream *gsh = new_sh_stream(demuxer, STREAM_SUB);
|
||||||
if (!gsh)
|
if (!gsh)
|
||||||
return 1;
|
return 1;
|
||||||
track->stream = gsh;
|
track->stream = gsh;
|
||||||
sh_sub_t *sh = gsh->sub;
|
sh_sub_t *sh = gsh->sub;
|
||||||
sh->gsh->demuxer_id = track->tnum;
|
sh->gsh->demuxer_id = track->tnum;
|
||||||
track->sh_sub = sh;
|
track->sh_sub = sh;
|
||||||
sh->gsh->codec = subtitle_type;
|
sh->gsh->codec = subtitle_type;
|
||||||
bstr buffer = demux_mkv_decode(track, in, 2);
|
bstr buffer = demux_mkv_decode(track, in, 2);
|
||||||
if (buffer.start && buffer.start != track->private_data) {
|
if (buffer.start && buffer.start != track->private_data) {
|
||||||
talloc_free(track->private_data);
|
talloc_free(track->private_data);
|
||||||
talloc_steal(track, buffer.start);
|
talloc_steal(track, buffer.start);
|
||||||
track->private_data = buffer.start;
|
track->private_data = buffer.start;
|
||||||
track->private_size = buffer.len;
|
track->private_size = buffer.len;
|
||||||
}
|
}
|
||||||
sh->extradata = malloc(track->private_size);
|
sh->extradata = malloc(track->private_size);
|
||||||
memcpy(sh->extradata, track->private_data, track->private_size);
|
memcpy(sh->extradata, track->private_data, track->private_size);
|
||||||
sh->extradata_len = track->private_size;
|
sh->extradata_len = track->private_size;
|
||||||
if (track->language && (strcmp(track->language, "und") != 0))
|
if (track->language && (strcmp(track->language, "und") != 0))
|
||||||
sh->gsh->lang = talloc_strdup(sh, track->language);
|
sh->gsh->lang = talloc_strdup(sh, track->language);
|
||||||
sh->gsh->title = talloc_strdup(sh, track->name);
|
sh->gsh->title = talloc_strdup(sh, track->name);
|
||||||
sh->gsh->default_track = track->default_track;
|
sh->gsh->default_track = track->default_track;
|
||||||
} else {
|
|
||||||
|
if (!subtitle_type) {
|
||||||
mp_tmsg(MSGT_DEMUX, MSGL_ERR,
|
mp_tmsg(MSGT_DEMUX, MSGL_ERR,
|
||||||
"[mkv] Subtitle type '%s' is not supported.\n",
|
"[mkv] Subtitle type '%s' is not supported.\n",
|
||||||
track->codec_id);
|
track->codec_id);
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user