lavu/timecode: fix time code calculation for 60000/1001 drop frame
Reviewed-by: Matthieu Bouron <matthieu.bouron@gmail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
a717fa84ed
commit
77b740ac0a
@ -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)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user