summaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/microdvddec.c23
-rw-r--r--libavformat/version.h2
2 files changed, 19 insertions, 6 deletions
diff --git a/libavformat/microdvddec.c b/libavformat/microdvddec.c
index 5d5b83fea8..96ffa3da07 100644
--- a/libavformat/microdvddec.c
+++ b/libavformat/microdvddec.c
@@ -83,18 +83,19 @@ static int microdvd_read_header(AVFormatContext *s)
return AVERROR(ENOMEM);
while (!url_feof(s->pb)) {
+ char *p = line;
AVPacket *sub;
int64_t pos = avio_tell(s->pb);
int len = ff_get_line(s->pb, line, sizeof(line));
if (!len)
break;
- if (i < 3) {
+ line[strcspn(line, "\r\n")] = 0;
+ if (i++ < 3) {
int frame;
double fps;
char c;
- i++;
if ((sscanf(line, "{%d}{}%6lf", &frame, &fps) == 2 ||
sscanf(line, "{%d}{%*d}%6lf", &frame, &fps) == 2)
&& frame <= 1 && fps > 3 && fps < 100)
@@ -107,12 +108,24 @@ static int microdvd_read_header(AVFormatContext *s)
continue;
}
}
- sub = ff_subtitles_queue_insert(&microdvd->q, line, len, 0);
+#define SKIP_FRAME_ID \
+ p = strchr(p, '}'); \
+ if (!p) { \
+ av_log(s, AV_LOG_WARNING, "Invalid event \"%s\"" \
+ " at line %d\n", line, i); \
+ continue; \
+ } \
+ p++
+ SKIP_FRAME_ID;
+ SKIP_FRAME_ID;
+ if (!*p)
+ continue;
+ sub = ff_subtitles_queue_insert(&microdvd->q, p, strlen(p), 0);
if (!sub)
return AVERROR(ENOMEM);
sub->pos = pos;
- sub->pts = get_pts(sub->data);
- sub->duration = get_duration(sub->data);
+ sub->pts = get_pts(line);
+ sub->duration = get_duration(line);
}
ff_subtitles_queue_finalize(&microdvd->q);
avpriv_set_pts_info(st, 64, pts_info.den, pts_info.num);
diff --git a/libavformat/version.h b/libavformat/version.h
index 90d47d02d1..6fb42d84ed 100644
--- a/libavformat/version.h
+++ b/libavformat/version.h
@@ -30,7 +30,7 @@
#include "libavutil/avutil.h"
#define LIBAVFORMAT_VERSION_MAJOR 54
-#define LIBAVFORMAT_VERSION_MINOR 56
+#define LIBAVFORMAT_VERSION_MINOR 57
#define LIBAVFORMAT_VERSION_MICRO 100
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \