From 4b408bced10509e378ee91aa526e126b264cfccf Mon Sep 17 00:00:00 2001 From: John Stebbins Date: Wed, 27 Jan 2016 09:27:45 -0700 Subject: [PATCH] sync: fix delayed subtitles when burned-in sync was delaying delivery of subtitles which caused burn-in late. --- libhb/sync.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/libhb/sync.c b/libhb/sync.c index 23e96a964..9f95c3c53 100644 --- a/libhb/sync.c +++ b/libhb/sync.c @@ -801,6 +801,20 @@ static void OutputBuffer( sync_common_t * common ) if (hb_list_count(stream->in_queue) > stream->min_len) { buf = hb_list_item(stream->in_queue, 0); + if (stream->type == SYNC_TYPE_SUBTITLE) + { + // Forward subtitles immediately instead of interleaving. + // + // Normally, we interleave output by PTS in order to + // optimize sync recovery. This results in queueing + // stream data that may not get delivered to it's + // respecitive output fifo until the next input data + // is received for that stream. This isn't a problem + // for continuous streams like audio and video, but + // it delays subtitles unacceptably. + out_stream = stream; + break; + } if (buf->s.start < pts) { pts = buf->s.start; -- 2.40.0