38 int d,
m, frames_per_10mins;
42 frames_per_10mins = 17982;
43 }
else if (fps == 60) {
45 frames_per_10mins = 35964;
49 d = framenum / frames_per_10mins;
50 m = framenum % frames_per_10mins;
52 return framenum + 9 * drop_frames * d + drop_frames * ((m - drop_frames) / (frames_per_10mins / 10));
57 unsigned fps = tc->
fps;
61 framenum += tc->
start;
65 ss = framenum / fps % 60;
66 mm = framenum / (fps*60) % 60;
67 hh = framenum / (fps*3600) % 24;
88 int hh, mm, ss, ff, neg = 0;
90 framenum += tc->
start;
98 ss = framenum / fps % 60;
99 mm = framenum / (fps*60) % 60;
100 hh = framenum / (fps*3600);
105 hh, mm, ss, drop ?
';' :
':', ff);
111 unsigned low = bcd & 0xf;
112 unsigned high = bcd >> 4;
113 if (low > 9 || high > 9)
115 return low + 10*high;
120 unsigned hh =
bcd2uint(tcsmpte & 0x3f);
121 unsigned mm =
bcd2uint(tcsmpte>>8 & 0x7f);
122 unsigned ss =
bcd2uint(tcsmpte>>16 & 0x7f);
123 unsigned ff =
bcd2uint(tcsmpte>>24 & 0x3f);
124 unsigned drop = tcsmpte & 1<<30 && !prevent_df;
126 hh, mm, ss, drop ?
';' :
':', ff);
136 tc25bit & 1<<24 ?
';' :
':',
144 static const int supported_fps[] = {24, 25, 30, 50, 60};
147 if (fps == supported_fps[i])
159 av_log(log_ctx,
AV_LOG_ERROR,
"Drop frame is only allowed with 30000/1001 or 60000/1001 FPS\n");
172 if (!rate.
den || !rate.
num)
174 return (rate.
num + rate.
den/2) / rate.
den;
184 memset(tc, 0,
sizeof(*tc));
185 tc->
start = frame_start;
195 int hh, mm, ss, ff,
ret;
197 if (sscanf(str,
"%d:%d:%d%c%d", &hh, &mm, &ss, &c, &ff) != 5) {
199 "syntax: hh:mm:ss[:;.]ff\n");
203 memset(tc, 0,
sizeof(*tc));
212 tc->
start = (hh*3600 + mm*60 + ss) * tc->
fps + ff;
214 int tmins = 60*hh + mm;
215 tc->
start -= 2 * (tmins - tmins/10);