summaryrefslogtreecommitdiffstats
path: root/libhb/sync.c
diff options
context:
space:
mode:
authorJohn Stebbins <[email protected]>2016-01-27 09:27:45 -0700
committerJohn Stebbins <[email protected]>2016-01-27 09:27:45 -0700
commit4b408bced10509e378ee91aa526e126b264cfccf (patch)
tree494d85b8658350930fd00af49f775d843de71573 /libhb/sync.c
parentfa95126fe78249de6c9d42c5a5f99210ad76c9a2 (diff)
sync: fix delayed subtitles when burned-in
sync was delaying delivery of subtitles which caused burn-in late.
Diffstat (limited to 'libhb/sync.c')
-rw-r--r--libhb/sync.c14
1 files changed, 14 insertions, 0 deletions
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;