|
|
@ -83,15 +83,20 @@ char *avpriv_timecode_to_string(char *buf, const struct ff_timecode *tc, unsigne |
|
|
|
{ |
|
|
|
{ |
|
|
|
int frame_num = tc->start + frame; |
|
|
|
int frame_num = tc->start + frame; |
|
|
|
int fps = (tc->rate.num + tc->rate.den/2) / tc->rate.den; |
|
|
|
int fps = (tc->rate.num + tc->rate.den/2) / tc->rate.den; |
|
|
|
int hh, mm, ss, ff; |
|
|
|
int hh, mm, ss, ff, neg = 0; |
|
|
|
|
|
|
|
|
|
|
|
if (tc->drop) |
|
|
|
if (tc->drop) |
|
|
|
frame_num = avpriv_framenum_to_drop_timecode(frame_num); |
|
|
|
frame_num = avpriv_framenum_to_drop_timecode(frame_num); |
|
|
|
|
|
|
|
if (frame_num < 0) { |
|
|
|
|
|
|
|
frame_num = -frame_num; |
|
|
|
|
|
|
|
neg = 1; |
|
|
|
|
|
|
|
} |
|
|
|
ff = frame_num % fps; |
|
|
|
ff = frame_num % fps; |
|
|
|
ss = frame_num / fps % 60; |
|
|
|
ss = frame_num / fps % 60; |
|
|
|
mm = frame_num / (fps*60) % 60; |
|
|
|
mm = frame_num / (fps*60) % 60; |
|
|
|
hh = frame_num / (fps*3600) % 24; |
|
|
|
hh = frame_num / (fps*3600) % 24; |
|
|
|
snprintf(buf, 16, "%02d:%02d:%02d%c%02d", |
|
|
|
snprintf(buf, 16, "%s%02d:%02d:%02d%c%02d", |
|
|
|
|
|
|
|
neg ? "-" : "", |
|
|
|
hh, mm, ss, tc->drop ? ';' : ':', ff); |
|
|
|
hh, mm, ss, tc->drop ? ';' : ':', ff); |
|
|
|
return buf; |
|
|
|
return buf; |
|
|
|
} |
|
|
|
} |
|
|
|