summaryrefslogtreecommitdiff
path: root/libavcodec/timecode.c
diff options
context:
space:
mode:
authorClément Bœsch <clement.boesch@smartjog.com>2011-12-06 11:18:26 +0100
committerClément Bœsch <ubitux@gmail.com>2011-12-12 17:49:34 +0100
commitad5ade6615d5bb224cab99f91e162abbbe6c160a (patch)
tree7f757f4d8ab28f9bbde5ee2af48e4b59cec50a76 /libavcodec/timecode.c
parent98aca4bbef6818bbc8209a801425c3a6f1ff41a9 (diff)
timecode: add avpriv_timecode_to_string().
Diffstat (limited to 'libavcodec/timecode.c')
-rw-r--r--libavcodec/timecode.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/libavcodec/timecode.c b/libavcodec/timecode.c
index 8cd1bec941..379f08a74d 100644
--- a/libavcodec/timecode.c
+++ b/libavcodec/timecode.c
@@ -79,6 +79,22 @@ static int check_timecode_rate(void *avcl, AVRational rate, int drop)
}
}
+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 = ff_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;
+}
+
int ff_init_smtpe_timecode(void *avcl, struct ff_timecode *tc)
{
int hh, mm, ss, ff, fps, ret;