char *end;
int hours, minutes;
double seconds = 0;
+ int64_t ts = 0;
if (*cur < '0' || *cur > '9')
return 0;
seconds = strtod(cur + 1, &end);
if (end > cur + 1)
cur = end;
+ ts = av_clipd(seconds * AV_TIME_BASE, INT64_MIN/2, INT64_MAX/2);
}
- *rtime = (hours * 3600LL + minutes * 60LL + seconds) * AV_TIME_BASE;
+ *rtime = av_sat_add64((hours * 3600LL + minutes * 60LL) * AV_TIME_BASE, ts);
return cur - str;
}
return AVERROR_INVALIDDATA;
}
ts.type = p->current_time.type;
+
+ if (av_sat_add64(p->current_time.t, rel_ts) != p->current_time.t + (uint64_t)rel_ts)
+ return AVERROR_INVALIDDATA;
ts.t = p->current_time.t + rel_ts;
r = parse_fade(p, &fade);
if (r < 0)
if (r < 0)
goto fail;
+ if (script.end_ts != AV_NOPTS_VALUE && script.end_ts < script.start_ts) {
+ r = AVERROR_INVALIDDATA;
+ goto fail;
+ }
+
st = avformat_new_stream(avf, NULL);
if (!st)
return AVERROR(ENOMEM);