diff --git a/libavformat/microdvddec.c b/libavformat/microdvddec.c index 7b49e43976..42c6de0098 100644 --- a/libavformat/microdvddec.c +++ b/libavformat/microdvddec.c @@ -71,22 +71,29 @@ static int get_duration(const char *buf) return -1; } +static const char *bom = "\xEF\xBB\xBF"; + static int microdvd_read_header(AVFormatContext *s) { AVRational pts_info = (AVRational){ 2997, 125 }; /* default: 23.976 fps */ MicroDVDContext *microdvd = s->priv_data; AVStream *st = avformat_new_stream(s, NULL); int i = 0; - char line[MAX_LINESIZE]; + char line_buf[MAX_LINESIZE]; 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)); + char *line = line_buf; + + if (!strncmp(line, bom, 3)) + line += 3; + p = line; if (!len) break;