diff options
author | Clément Bœsch <clement.boesch@smartjog.com> | 2012-01-04 17:06:39 +0100 |
---|---|---|
committer | Clément Bœsch <ubitux@gmail.com> | 2012-01-11 18:14:09 +0100 |
commit | f1db99166b2eb0f8b005ec43587a02c03a6d0506 (patch) | |
tree | 85bdfec089023f38fb8c0de7c9cacd2d05e025dc | |
parent | 98aafc5bbfa94cee889399d80177bca10ca202aa (diff) | |
download | ffmpeg-f1db99166b2eb0f8b005ec43587a02c03a6d0506.tar.gz |
timecode: string representation can be negative.
Timecode can be specified with a negative value in MOV...
-rw-r--r-- | libavcodec/timecode.c | 9 | ||||
-rw-r--r-- | libavcodec/timecode.h | 1 |
2 files changed, 8 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; } diff --git a/libavcodec/timecode.h b/libavcodec/timecode.h index a2b6b0903b..076f04763f 100644 --- a/libavcodec/timecode.h +++ b/libavcodec/timecode.h @@ -67,6 +67,7 @@ uint32_t avpriv_framenum_to_smpte_timecode(unsigned frame, int fps, int drop); * @param tc Timecode struct pointer * @param frame Frame id (timecode frame is computed with tc->start+frame) * @return a pointer to the buf parameter + * @note timecode representation can be a negative timecode * @note buf must have enough space to store the timecode representation: 16 * bytes is the minimum required size. */ |