lavf/srtdec: simplify start/end computation.
Also fix potential overflow (CID733778)
This commit is contained in:
parent
a945607a78
commit
a96b39de62
@ -53,19 +53,16 @@ static int srt_read_header(AVFormatContext *s)
|
||||
|
||||
static int64_t get_pts(const char *buf, int *duration)
|
||||
{
|
||||
int i, hour, min, sec, hsec;
|
||||
int he, me, se, mse;
|
||||
int i;
|
||||
|
||||
for (i=0; i<2; i++) {
|
||||
int64_t start, end;
|
||||
int hh1, mm1, ss1, ms1;
|
||||
int hh2, mm2, ss2, ms2;
|
||||
if (sscanf(buf, "%d:%2d:%2d%*1[,.]%3d --> %d:%2d:%2d%*1[,.]%3d",
|
||||
&hour, &min, &sec, &hsec, &he, &me, &se, &mse) == 8) {
|
||||
min += 60*hour;
|
||||
sec += 60*min;
|
||||
start = sec*1000+hsec;
|
||||
me += 60*he;
|
||||
se += 60*me;
|
||||
end = se*1000+mse;
|
||||
&hh1, &mm1, &ss1, &ms1,
|
||||
&hh2, &mm2, &ss2, &ms2) == 8) {
|
||||
int64_t start = (hh1*3600LL + mm1*60LL + ss1) * 1000LL + ms1;
|
||||
int64_t end = (hh2*3600LL + mm2*60LL + ss2) * 1000LL + ms2;
|
||||
*duration = end - start;
|
||||
return start;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user