summaryrefslogtreecommitdiff
path: root/libavcodec/timecode.c
diff options
context:
space:
mode:
authorClément Bœsch <clement.boesch@smartjog.com>2012-01-04 17:06:39 +0100
committerClément Bœsch <ubitux@gmail.com>2012-01-11 18:14:09 +0100
commitf1db99166b2eb0f8b005ec43587a02c03a6d0506 (patch)
tree85bdfec089023f38fb8c0de7c9cacd2d05e025dc /libavcodec/timecode.c
parent98aafc5bbfa94cee889399d80177bca10ca202aa (diff)
downloadffmpeg-f1db99166b2eb0f8b005ec43587a02c03a6d0506.tar.gz
timecode: string representation can be negative.
Timecode can be specified with a negative value in MOV...
Diffstat (limited to 'libavcodec/timecode.c')
-rw-r--r--libavcodec/timecode.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/libavcodec/timecode.c b/libavcodec/timecode.c
index 95aed96d9e..8e2e599c21 100644
--- a/libavcodec/timecode.c
+++ b/libavcodec/timecode.c
@@ -83,15 +83,20 @@ char *avpriv_timecode_to_string(char *buf, const struct ff_timecode *tc, unsigne
{
int frame_num = tc->start + frame;
int fps = (tc->rate.num + tc->rate.den/2) / tc->rate.den;
- int hh, mm, ss, ff;
+ int hh, mm, ss, ff, neg = 0;
if (tc->drop)
frame_num = avpriv_framenum_to_drop_timecode(frame_num);
+ if (frame_num < 0) {
+ frame_num = -frame_num;
+ neg = 1;
+ }
ff = frame_num % fps;
ss = frame_num / fps % 60;
mm = frame_num / (fps*60) % 60;
hh = frame_num / (fps*3600) % 24;
- snprintf(buf, 16, "%02d:%02d:%02d%c%02d",
+ snprintf(buf, 16, "%s%02d:%02d:%02d%c%02d",
+ neg ? "-" : "",
hh, mm, ss, tc->drop ? ';' : ':', ff);
return buf;
}