From 791e76290da3e137a65de0cf64fbb8917b246782 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 5 Aug 2020 16:04:57 -0600 Subject: [PATCH] Temporal: extend timepos_t API to provide samples() method, using thread-local sample rate --- libs/temporal/temporal/superclock.h | 4 ++++ libs/temporal/temporal/timeline.h | 1 + 2 files changed, 5 insertions(+) diff --git a/libs/temporal/temporal/superclock.h b/libs/temporal/temporal/superclock.h index a489bf1126..d42dd2bcdc 100644 --- a/libs/temporal/temporal/superclock.h +++ b/libs/temporal/temporal/superclock.h @@ -32,6 +32,10 @@ extern superclock_t superclock_ticks_per_second; static inline superclock_t superclock_to_samples (superclock_t s, int sr) { return int_div_round (s * sr, superclock_ticks_per_second); } static inline superclock_t samples_to_superclock (int samples, int sr) { return int_div_round (samples * superclock_ticks_per_second, superclock_t (sr)); } +/* this needs to be updated per-thread at a suitable time */ + +extern thread_local uint32_t _thread_sample_rate; + } #endif /* __ardour_superclock_h__ */ diff --git a/libs/temporal/temporal/timeline.h b/libs/temporal/temporal/timeline.h index 6736f241be..d6d26b8e5d 100644 --- a/libs/temporal/temporal/timeline.h +++ b/libs/temporal/temporal/timeline.h @@ -56,6 +56,7 @@ class timepos_t : public int62_t { Temporal::TimeDomain time_domain () const { if (flagged()) return Temporal::BeatTime; return Temporal::AudioTime; } superclock_t superclocks() const { if (is_superclock()) return v; return _superclocks (); } + int64_t samples() const { return superclock_to_samples (superclocks(), _thread_sample_rate); } int64_t ticks() const { if (is_beats()) return val(); return _ticks (); } Beats beats() const { if (is_beats()) return Beats::ticks (val()); return _beats (); }