fix drop-frame TC subframe rounding
authorRobin Gareus <robin@gareus.org>
Sun, 18 Nov 2012 09:53:11 +0000 (09:53 +0000)
committerRobin Gareus <robin@gareus.org>
Sun, 18 Nov 2012 09:53:11 +0000 (09:53 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@13523 d708f5d6-7413-0410-9779-e7cbd77b26cf

libs/timecode/src/time.cc

index 9a67e177b776078052248937497eb86e242153a0..a0d56c726449f23412bd201e554357f20077c489 100644 (file)
@@ -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;