summaryrefslogtreecommitdiffstats
path: root/libmpdemux/demux_mkv.c
diff options
context:
space:
mode:
authorUoti Urpala <uau@glyph.nonexistent.invalid>2010-01-26 16:56:44 +0200
committerUoti Urpala <uau@glyph.nonexistent.invalid>2010-01-27 14:26:49 +0200
commit2fd4dc45de77f87f46eaca4aaf5f233317723018 (patch)
treedaa8e1809307328179b0be618d85538db5a9b91c /libmpdemux/demux_mkv.c
parent16ee636a58c7e0eb1e44b85681ea61fd692fef7f (diff)
downloadmpv-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.
Diffstat (limited to 'libmpdemux/demux_mkv.c')
-rw-r--r--libmpdemux/demux_mkv.c9
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