X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fbeats_frames_converter.cc;h=94042b1b03c0ae84ccece34fa4eaefc6f2464223;hb=5b4c3aa226dc95f33dc3ffae6669a24f5e8b8fe0;hp=03a581e276d9f85163ce97c676c8c31f559de552;hpb=6b27595c4e7f92fc996932ea1d5b98cfccdc8892;p=ardour.git diff --git a/libs/ardour/beats_frames_converter.cc b/libs/ardour/beats_frames_converter.cc index 03a581e276..94042b1b03 100644 --- a/libs/ardour/beats_frames_converter.cc +++ b/libs/ardour/beats_frames_converter.cc @@ -19,21 +19,27 @@ $Id: midiregion.h 733 2006-08-01 17:19:38Z drobilla $ */ +#include "pbd/stacktrace.h" + #include "ardour/beats_frames_converter.h" #include "ardour/tempo.h" namespace ARDOUR { -/** Takes a duration in beats and considers it as a distance from the origin +/** Takes a positive duration in beats and considers it as a distance from the origin * supplied to the constructor. Returns the equivalent number of frames, * taking tempo changes into account. */ -framecnt_t +framepos_t BeatsFramesConverter::to (double beats) const { + if (beats < 0) { + std::cerr << "negative beats passed to BFC: " << beats << std::endl; + PBD::stacktrace (std::cerr, 30); + } assert (beats >= 0); - - return _tempo_map.framepos_plus_beats (_origin_b, beats) - _origin_b; + framecnt_t r = _tempo_map.framepos_plus_beats (_origin_b, beats) - _origin_b; + return r; } /** Takes a duration in frames and considers it as a distance from the origin @@ -41,9 +47,10 @@ BeatsFramesConverter::to (double beats) const * taking tempo changes into account. */ double -BeatsFramesConverter::from (framecnt_t frames) const +BeatsFramesConverter::from (framepos_t frames) const { - return _tempo_map.framewalk_to_beats (_origin_b, frames); + double b = _tempo_map.framewalk_to_beats (_origin_b, frames); + return b; } } /* namespace ARDOUR */