]> granicus.if.org Git - handbrake/commitdiff
libhb: remove emptry tx3g subtitles
authorjstebbins <jstebbins.hb@gmail.com>
Wed, 27 Aug 2014 20:33:49 +0000 (20:33 +0000)
committerjstebbins <jstebbins.hb@gmail.com>
Wed, 27 Aug 2014 20:33:49 +0000 (20:33 +0000)
We don't need the empty subtitle buffers.

git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@6373 b64f7644-9d1e-0410-96f1-a4d463321fa5

libhb/dectx3gsub.c

index 7a38b1d846ed371ac701c3361436781d31b8eb9f..9cfc031ac3f47d03f20a3f0cd3af493c216dfcc7 100644 (file)
@@ -77,7 +77,7 @@ static int write_ssa_markup(char *dst, StyleRecord *style)
     return strlen(dst);
 }
 
-static hb_buffer_t *tx3g_decode_to_ssa(hb_buffer_t *in, int line)
+static hb_buffer_t *tx3g_decode_to_ssa(hb_work_private_t *pv, hb_buffer_t *in)
 {
     uint8_t *pos = in->data;
     uint8_t *end = in->data + in->size;
@@ -158,11 +158,13 @@ static hb_buffer_t *tx3g_decode_to_ssa(hb_buffer_t *in, int line)
     if ( out == NULL )
         goto fail;
     uint8_t *dst = out->data;
+    uint8_t *start;
     int charIndex = 0;
     int styleIndex = 0;
 
-    sprintf((char*)dst, "%d,,Default,,0,0,0,,", line);
+    sprintf((char*)dst, "%d,,Default,,0,0,0,,", pv->line);
     dst += strlen((char*)dst);
+    start = dst;
     for (pos = text, end = text + textLength; pos < end; pos++)
     {
         if (IS_10xxxxxx(*pos))
@@ -200,6 +202,13 @@ static hb_buffer_t *tx3g_decode_to_ssa(hb_buffer_t *in, int line)
         }
         charIndex++;
     }
+    if (start == dst)
+    {
+        // No text in the subtitle.  This sub is just filler, drop it.
+        free(styleRecords);
+        hb_buffer_close(&out);
+        return NULL;
+    }
     *dst = '\0';
     dst++;
 
@@ -263,7 +272,7 @@ static int dectx3gWork( hb_work_object_t * w, hb_buffer_t ** buf_in,
         return HB_WORK_DONE;
     }
 
-    *buf_out = tx3g_decode_to_ssa(in, ++pv->line);
+    *buf_out = tx3g_decode_to_ssa(pv, in);
 
     return HB_WORK_OK;
 }