diff options
author | Clément Bœsch <clement.boesch@smartjog.com> | 2011-07-06 15:04:26 +0200 |
---|---|---|
committer | Clément Bœsch <ubitux@gmail.com> | 2011-08-13 19:13:02 +0200 |
commit | 4c3c6e60f97e450c35a90dc6d66f3726b7b938b4 (patch) | |
tree | 3a9e10114bc7b8ebf14f2fd7ac5e52c11e104c82 /libavcodec/timecode.c | |
parent | b7b72963e06f21fb985c58100c7d048cfea2736a (diff) | |
download | ffmpeg-4c3c6e60f97e450c35a90dc6d66f3726b7b938b4.tar.gz |
mxf: move framenum to timecode convert to timecode helpers.
This is based on the original work by Baptiste Coudurier.
Diffstat (limited to 'libavcodec/timecode.c')
-rw-r--r-- | libavcodec/timecode.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/libavcodec/timecode.c b/libavcodec/timecode.c index 434b3cb03a..b12506f74d 100644 --- a/libavcodec/timecode.c +++ b/libavcodec/timecode.c @@ -37,6 +37,24 @@ int ff_framenum_to_drop_timecode(int frame_num) return frame_num + 18 * d + 2 * ((m - 2) / 1798); } +uint32_t ff_framenum_to_smtpe_timecode(unsigned frame, int fps, int drop) +{ + return (0 << 31) | // color frame flag + (drop << 30) | // drop frame flag + ( ((frame % fps) / 10) << 28) | // tens of frames + ( ((frame % fps) % 10) << 24) | // units of frames + (0 << 23) | // field phase (NTSC), b0 (PAL) + ((((frame / fps) % 60) / 10) << 20) | // tens of seconds + ((((frame / fps) % 60) % 10) << 16) | // units of seconds + (0 << 15) | // b0 (NTSC), b2 (PAL) + ((((frame / (fps * 60)) % 60) / 10) << 12) | // tens of minutes + ((((frame / (fps * 60)) % 60) % 10) << 8) | // units of minutes + (0 << 7) | // b1 + (0 << 6) | // b2 (NTSC), field phase (PAL) + ((((frame / (fps * 3600) % 24)) / 10) << 4) | // tens of hours + ( (frame / (fps * 3600) % 24)) % 10; // units of hours +} + int ff_init_smtpe_timecode(void *avcl, struct ff_timecode *tc) { int hh, mm, ss, ff, fps; |