[FFmpeg-devel] [PATCH 3/3] avformat/microdvd: skip BOM properly

wm4 nfxjfg at googlemail.com
Mon Feb 17 21:49:36 CET 2014


The BOM is already skipped in the probe function, but not the header
read function. This could cause the header to be misparsed (not reading
the FPS line).
---
 libavformat/microdvddec.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/libavformat/microdvddec.c b/libavformat/microdvddec.c
index 51f7f48..0a301b6 100644
--- a/libavformat/microdvddec.c
+++ b/libavformat/microdvddec.c
@@ -77,17 +77,23 @@ static int microdvd_read_header(AVFormatContext *s)
     MicroDVDContext *microdvd = s->priv_data;
     AVStream *st = avformat_new_stream(s, NULL);
     int i = 0;
-    char line[MAX_LINESIZE];
+    char line_buf[MAX_LINESIZE];
     int has_real_fps = 0;
 
     if (!st)
         return AVERROR(ENOMEM);
 
     while (!url_feof(s->pb)) {
-        char *p = line;
+        char *p;
         AVPacket *sub;
         int64_t pos = avio_tell(s->pb);
-        int len = ff_get_line(s->pb, line, sizeof(line));
+        int len = ff_get_line(s->pb, line_buf, sizeof(line_buf));
+        const char *bom = "\xEF\xBB\xBF";
+        char *line = line_buf;
+
+        if (!strncmp(line, bom, 3))
+            line += 3;
+        p = line;
 
         if (!len)
             break;
-- 
1.9.0.rc3



More information about the ffmpeg-devel mailing list