summaryrefslogtreecommitdiffstats
path: root/libhb/sync.c
diff options
context:
space:
mode:
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;