summaryrefslogtreecommitdiff
path: root/libs/ardour/export_format_base.cc
diff options
context:
space:
mode:
authorSakari Bergen <sakari.bergen@beatwaves.net>2010-12-18 17:56:41 +0000
committerSakari Bergen <sakari.bergen@beatwaves.net>2010-12-18 17:56:41 +0000
commitffadfff6506e507b09853e4c7e50bcedffa29cce (patch)
treec8413307ce40afe6f7f908467de1eb06dcaf427f /libs/ardour/export_format_base.cc
parent850b7d24a9230c84183372691f11d29c8f9c3117 (diff)
Add "session rate" as a possible sample rate for export formats
git-svn-id: svn://localhost/ardour2/branches/3.0@8294 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/export_format_base.cc')
-rw-r--r--libs/ardour/export_format_base.cc26
1 files changed, 26 insertions, 0 deletions
diff --git a/libs/ardour/export_format_base.cc b/libs/ardour/export_format_base.cc
index a994b97ac3..fa6f1198e9 100644
--- a/libs/ardour/export_format_base.cc
+++ b/libs/ardour/export_format_base.cc
@@ -198,4 +198,30 @@ ExportFormatBase::do_set_operation (ExportFormatBase const & other, SetOperation
return result;
}
+ExportFormatBase::SampleRate
+ExportFormatBase::nearest_sample_rate (framecnt_t sample_rate)
+{
+ int diff = 0;
+ int smallest_diff = INT_MAX;
+ SampleRate best_match = SR_None;
+
+ #define DO_SR_COMPARISON(rate) \
+ diff = std::abs((rate) - sample_rate); \
+ if(diff < smallest_diff) { \
+ smallest_diff = diff; \
+ best_match = (rate); \
+ }
+
+ DO_SR_COMPARISON(SR_22_05);
+ DO_SR_COMPARISON(SR_22_05);
+ DO_SR_COMPARISON(SR_44_1);
+ DO_SR_COMPARISON(SR_48);
+ DO_SR_COMPARISON(SR_88_2);
+ DO_SR_COMPARISON(SR_96);
+ DO_SR_COMPARISON(SR_192);
+
+ return best_match;
+ #undef DO_SR_COMPARISON
+}
+
}; // namespace ARDOUR