summaryrefslogtreecommitdiff
path: root/libs/timecode/src/time.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2013-08-04 16:22:00 +0200
committerPaul Davis <paul@linuxaudiosystems.com>2013-08-08 15:26:41 -0400
commit7744037c86488c30092b7255de7cbde96f2f68ef (patch)
tree23a21db91b03b3216df9868e5e167bb33c5b3b14 /libs/timecode/src/time.cc
parentfd6223854d68907d250d1cab74f48e5161823b4a (diff)
Timecode: fix subframe rounding
if sub-frames are used, frames are rounded up for the later half of a sub-frame. e.g. @48KSPS, 25fps, 100 subframes per frame audio-samples >=1910 already yield 00:00:00:01
Diffstat (limited to 'libs/timecode/src/time.cc')
-rw-r--r--libs/timecode/src/time.cc4
1 files changed, 2 insertions, 2 deletions
diff --git a/libs/timecode/src/time.cc b/libs/timecode/src/time.cc
index a0d56c7264..6f954a8d51 100644
--- a/libs/timecode/src/time.cc
+++ b/libs/timecode/src/time.cc
@@ -806,7 +806,7 @@ sample_to_timecode (
double timecode_frames_fraction;
int64_t timecode_frames_left;
const double frames_per_timecode_frame = sample_frame_rate / timecode_frames_per_second;
- const int64_t frames_per_hour = (int32_t)(3600 * rint(timecode_frames_per_second) * frames_per_timecode_frame);
+ const int64_t frames_per_hour = (int64_t)(3600 * rint(timecode_frames_per_second) * frames_per_timecode_frame);
timecode.hours = offset_sample / frames_per_hour;
@@ -818,7 +818,7 @@ sample_to_timecode (
timecode.subframes = (int32_t) rint(timecode_frames_fraction * subframes_per_frame);
timecode_frames_left = (int64_t) floor (timecode_frames_left_exact);
- if (timecode.subframes == subframes_per_frame) {
+ if (use_subframes && timecode.subframes == subframes_per_frame) {
timecode_frames_left++;
timecode.subframes = 0;
}