summaryrefslogtreecommitdiffstats
path: root/libhb/decutf8sub.c
diff options
context:
space:
mode:
authorjstebbins <[email protected]>2015-05-01 14:47:35 +0000
committerjstebbins <[email protected]>2015-05-01 14:47:35 +0000
commit58b25a7664d9d063b404ec39270ff4cdfa333979 (patch)
tree3807be923b500ddc3f618170b7bd7c4900204bdd /libhb/decutf8sub.c
parent3e30a6ef3a449ac4cadb60fa738cc58f974c1794 (diff)
libhb: Use a buffer flat to indicate EOF
... instead of a 0 length buffer. This fixes this issue: https://forum.handbrake.fr/viewtopic.php?f=12&t=31959 Theora can create 0 length output. These 0 length frames indicate duplicate frames. So we can't use 0 length buffers to indicate the end of the stream. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@7143 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'libhb/decutf8sub.c')
-rw-r--r--libhb/decutf8sub.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/libhb/decutf8sub.c b/libhb/decutf8sub.c
index 4461f1ef4..5a278c786 100644
--- a/libhb/decutf8sub.c
+++ b/libhb/decutf8sub.c
@@ -48,10 +48,15 @@ static int decutf8Work(hb_work_object_t * w,
hb_buffer_t **buf_in, hb_buffer_t **buf_out)
{
hb_work_private_t * pv = w->private_data;
- // Pass the packets through without modification
+ hb_buffer_t * in = *buf_in;
hb_buffer_t *out = *buf_in;
- out->s.frametype = HB_FRAME_SUBTITLE;
+ *buf_in = NULL;
+ if (in->s.flags & HB_BUF_FLAG_EOF)
+ {
+ *buf_out = in;
+ return HB_WORK_DONE;
+ }
// Warn if the subtitle's duration has not been passed through by the
// demuxer, which will prevent the subtitle from displaying at all
@@ -61,12 +66,9 @@ static int decutf8Work(hb_work_object_t * w,
}
hb_srt_to_ssa(out, ++pv->line);
-
- *buf_in = NULL;
+ out->s.frametype = HB_FRAME_SUBTITLE;
*buf_out = out;
- if (out->size == 0)
- return HB_WORK_DONE;
return HB_WORK_OK;
}