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