[FFmpeg-cvslog] movtextdec: Don't emit errors for normal duration-end packets.

Philip Langdale git at videolan.org
Thu Aug 16 07:03:31 CEST 2012


ffmpeg | branch: master | Philip Langdale <philipl at overt.org> | Sun Aug 12 14:16:35 2012 -0700| [569027ea80daf928e6c127a27b2d7d23950e4534] | committer: Philip Langdale

movtextdec: Don't emit errors for normal duration-end packets.

The logic here was off. If the packet size is exactly two, then
it's a well-formed empty subtitle, used to mark the end of the
duration of the previous subtitle.

Signed-off-by: Philip Langdale <philipl at overt.org>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=569027ea80daf928e6c127a27b2d7d23950e4534
---

 libavcodec/movtextdec.c |   14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/libavcodec/movtextdec.c b/libavcodec/movtextdec.c
index 52668e2..a65bbb8 100644
--- a/libavcodec/movtextdec.c
+++ b/libavcodec/movtextdec.c
@@ -65,8 +65,18 @@ static int mov_text_decode_frame(AVCodecContext *avctx,
     const char *ptr = avpkt->data;
     const char *end;
 
-    if (!ptr || avpkt->size <= 2)
-        return avpkt->size ? AVERROR_INVALIDDATA : 0;
+    if (!ptr || avpkt->size < 2)
+        return AVERROR_INVALIDDATA;
+
+    /*
+     * A packet of size two with value zero is an empty subtitle
+     * used to mark the end of the previous non-empty subtitle.
+     * We can just drop them here as we have duration information
+     * already. If the value is non-zero, then it's technically a
+     * bad packet.
+     */
+    if (avpkt->size == 2)
+        return AV_RB16(ptr) == 0 ? 0 : AVERROR_INVALIDDATA;
 
     /*
      * The first two bytes of the packet are the length of the text string



More information about the ffmpeg-cvslog mailing list