# HG changeset patch # User aurel # Date 1220624285 0 # Node ID ed77f7dee121a19c87fe19dcf4abaf1b7028b314 # Parent e95a1c3904a3b834921fae62b3da62c92f7a58fe demux_mkv: output correctly formated ASS packets diff -r e95a1c3904a3 -r ed77f7dee121 libmpdemux/demux_mkv.c --- a/libmpdemux/demux_mkv.c Fri Sep 05 01:44:33 2008 +0000 +++ b/libmpdemux/demux_mkv.c Fri Sep 05 14:18:05 2008 +0000 @@ -2566,10 +2566,42 @@ return 0; } +static void fix_ass_packet(char **block, int64_t *size, + uint64_t block_duration, uint64_t timecode) +{ + char *line, *layer, *ptr = *block, *end = ptr+*size; + *end = 0; + for (; *ptr!=',' && ptrsubtitle_type == MATROSKA_SUBTYPE_SSA) + fix_ass_packet(&data, &size, block_duration, timecode); + sub_utf8 = 1; dp = new_demux_packet(size); - memcpy(dp->buffer, block, size); + memcpy(dp->buffer, data, size); dp->pts = timecode / 1000.0f; dp->endpts = (timecode + block_duration) / 1000.0f; ds_add_packet(demuxer->sub, dp); + if (data != block) + free(data); } // Taken from demux_real.c. Thanks to the original developpers :)