aboutsummaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/sccdec.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/libavformat/sccdec.c b/libavformat/sccdec.c
index 72f47f70de..fa2a5c223a 100644
--- a/libavformat/sccdec.c
+++ b/libavformat/sccdec.c
@@ -131,14 +131,11 @@ try_again:
o2 = convert(c4) | (convert(c3) << 4);
lline = NULL;
- out[i+0] = 0xfc;
- out[i+1] = o1;
- out[i+2] = o2;
- if (o1 == 0x94 && o2 == 0x2f && saveptr && av_strcasecmp(saveptr, "942f")) {
+ if (i > 12 && o1 == 0x94 && o2 == 0x20 && saveptr &&
+ (av_strncasecmp(saveptr, "942f", 4) || !av_strncasecmp(saveptr, "942c", 4))) {
int64_t duration;
- i += 3;
out[i] = 0;
duration = i * 11;
@@ -146,13 +143,17 @@ try_again:
if (!sub)
goto fail;
- current_pos += i;
sub->pos = current_pos;
+ current_pos += i;
sub->pts = ts_start;
sub->duration = duration;
ts_start += duration;
i = 0;
}
+
+ out[i+0] = 0xfc;
+ out[i+1] = o1;
+ out[i+2] = o2;
}
out[i] = 0;