diff options
author | Sakari Bergen <sakari.bergen@beatwaves.net> | 2010-12-18 17:56:41 +0000 |
---|---|---|
committer | Sakari Bergen <sakari.bergen@beatwaves.net> | 2010-12-18 17:56:41 +0000 |
commit | ffadfff6506e507b09853e4c7e50bcedffa29cce (patch) | |
tree | c8413307ce40afe6f7f908467de1eb06dcaf427f /libs/ardour/export_format_base.cc | |
parent | 850b7d24a9230c84183372691f11d29c8f9c3117 (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.cc | 26 |
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 |