Commit 77b740ac authored by Jason's avatar Jason Committed by Michael Niedermayer

lavu/timecode: fix time code calculation for 60000/1001 drop frame

Reviewed-by: 's avatarMatthieu Bouron <matthieu.bouron@gmail.com>
Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent a717fa84
...@@ -35,18 +35,21 @@ int av_timecode_adjust_ntsc_framenum2(int framenum, int fps) ...@@ -35,18 +35,21 @@ int av_timecode_adjust_ntsc_framenum2(int framenum, int fps)
{ {
/* only works for NTSC 29.97 and 59.94 */ /* only works for NTSC 29.97 and 59.94 */
int drop_frames = 0; int drop_frames = 0;
int d = framenum / 17982; int d, m, frames_per_10mins;
int m = framenum % 17982;
if (fps == 30) if (fps == 30) {
drop_frames = 2; drop_frames = 2;
else if (fps == 60) frames_per_10mins = 17982;
} else if (fps == 60) {
drop_frames = 4; drop_frames = 4;
else frames_per_10mins = 35964;
} else
return framenum; return framenum;
//if (m < 2) m += 2; /* not needed since -2,-1 / 1798 in C returns 0 */ d = framenum / frames_per_10mins;
return framenum + 9 * drop_frames * d + drop_frames * ((m - 2) / 1798); m = framenum % frames_per_10mins;
return framenum + 9 * drop_frames * d + drop_frames * ((m - drop_frames) / (frames_per_10mins / 10));
} }
uint32_t av_timecode_get_smpte_from_framenum(const AVTimecode *tc, int framenum) uint32_t av_timecode_get_smpte_from_framenum(const AVTimecode *tc, int framenum)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment