From 125c20bd081a7d99681f3ac25174c1360b885436 Mon Sep 17 00:00:00 2001 From: wm4 Date: Mon, 24 Jun 2013 23:52:53 +0200 Subject: dec_sub: add hack to display last MicroDVD subtitle event The old subreader.c infrastructure handled this in a similar way. --- sub/dec_sub.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/sub/dec_sub.c b/sub/dec_sub.c index 56ed2a3d6f..968ca3e39f 100644 --- a/sub/dec_sub.c +++ b/sub/dec_sub.c @@ -411,6 +411,17 @@ bool sub_read_all_packets(struct dec_sub *sub, struct sh_sub *sh) if (!opts->suboverlap_enabled) fix_overlaps_and_gaps(subs); + if (sh->gsh->codec && strcmp(sh->gsh->codec, "microdvd") == 0) { + // The last subtitle event in MicroDVD subs can have duration unset, + // which means show the subtitle until end of video. + // See FFmpeg FATE MicroDVD_capability_tester.sub + if (subs->num_packets) { + struct demux_packet *last = subs->packets[subs->num_packets - 1]; + if (last->duration <= 0) + last->duration = 10; // arbitrary + } + } + add_sub_list(sub, preprocess, subs); talloc_free(subs); -- cgit v1.2.3