summaryrefslogtreecommitdiff
path: root/libs/timecode
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2012-11-18 09:53:11 +0000
committerRobin Gareus <robin@gareus.org>2012-11-18 09:53:11 +0000
commit4269bccfebbd6b03206e8e8e225d59527589524c (patch)
tree14d8c9ab7963d4a419493b040314ac7445f865d7 /libs/timecode
parentb47619c458a9b64157a53083b813fdaff52b3e45 (diff)
fix drop-frame TC subframe rounding
git-svn-id: svn://localhost/ardour2/branches/3.0@13523 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/timecode')
-rw-r--r--libs/timecode/src/time.cc7
1 files changed, 6 insertions, 1 deletions
diff --git a/libs/timecode/src/time.cc b/libs/timecode/src/time.cc
index 9a67e177b7..a0d56c7264 100644
--- a/libs/timecode/src/time.cc
+++ b/libs/timecode/src/time.cc
@@ -786,9 +786,14 @@ sample_to_timecode (
const int64_t D = frameNumber / 17982;
const int64_t M = frameNumber % 17982;
- timecode.subframes = floor(subframes_per_frame
+ timecode.subframes = rint(subframes_per_frame
* ((double)offset_sample * timecode_frames_per_second / sample_frame_rate - (double)frameNumber));
+ if (timecode.subframes == subframes_per_frame) {
+ timecode.subframes = 0;
+ frameNumber++;
+ }
+
frameNumber += 18*D + 2*((M - 2) / 1798);
timecode.frames = frameNumber % 30;