diff options
author | Uoti Urpala <uau@glyph.nonexistent.invalid> | 2010-01-26 16:56:44 +0200 |
---|---|---|
committer | Uoti Urpala <uau@glyph.nonexistent.invalid> | 2010-01-27 14:26:49 +0200 |
commit | 2fd4dc45de77f87f46eaca4aaf5f233317723018 (patch) | |
tree | daa8e1809307328179b0be618d85538db5a9b91c | |
parent | 16ee636a58c7e0eb1e44b85681ea61fd692fef7f (diff) | |
download | mpv-2fd4dc45de77f87f46eaca4aaf5f233317723018.tar.bz2 mpv-2fd4dc45de77f87f46eaca4aaf5f233317723018.tar.xz |
demux_mkv: handle compressed text subtitles
The decompression step wasn't run at all for subtitle types other than
vobsub. Fix that. Remove a "!mkv_d->v_skip_to_keyframe" test from the
subtitle handling - for properly timed subtitles unnecessary packets
do little harm, and the subtitles could stay visible.
-rw-r--r-- | libmpdemux/demux_mkv.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/libmpdemux/demux_mkv.c b/libmpdemux/demux_mkv.c index 982f04062d..931e05e102 100644 --- a/libmpdemux/demux_mkv.c +++ b/libmpdemux/demux_mkv.c @@ -2278,9 +2278,12 @@ static int handle_block(demuxer_t *demuxer, uint8_t *block, uint64_t length, } else if (num == demuxer->sub->id) { ds = demuxer->sub; if (track->subtitle_type != MATROSKA_SUBTYPE_VOBSUB) { - if (!mkv_d->v_skip_to_keyframe) - handle_subtitles(demuxer, track, block, length, block_duration, - tc); + uint8_t *buffer; + int size = length; + int modified = demux_mkv_decode(track, block, &buffer, &size, 1); + handle_subtitles(demuxer, track, buffer, size, block_duration, tc); + if (modified) + free(buffer); use_this_block = 0; } } else |