diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2015-05-08 16:28:46 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2015-06-29 14:18:11 -0400 |
commit | 04b2d34362dd8bfa3b1582ae5e8a09b0ee80f09a (patch) | |
tree | a7b10e8d3edc61c36a58c744954e449e1b3c524f /libs/ardour/audioregion.cc | |
parent | 9c95a8bdea67fb1e3b5147d3abb169756c9c78e7 (diff) |
add channel_count() to audio source API
Diffstat (limited to 'libs/ardour/audioregion.cc')
-rw-r--r-- | libs/ardour/audioregion.cc | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/libs/ardour/audioregion.cc b/libs/ardour/audioregion.cc index 8113b261f9..13576c3ca5 100644 --- a/libs/ardour/audioregion.cc +++ b/libs/ardour/audioregion.cc @@ -49,6 +49,9 @@ #include "ardour/parameter_descriptor.h" #include "ardour/progress.h" +#include "ardour/sndfilesource.h" +#include "ardour/coreaudiosource.h" + #include "i18n.h" #include <locale.h> @@ -1562,6 +1565,34 @@ AudioRegion::audio_source (uint32_t n) const return boost::dynamic_pointer_cast<AudioSource>(source(n)); } +uint32_t +AudioRegion::get_related_audio_file_channel_count () const +{ + uint32_t chan_count = 0; + for (SourceList::const_iterator i = _sources.begin(); i != _sources.end(); ++i) { + + boost::shared_ptr<SndFileSource> sndf = dynamic_pointer_cast<SndFileSource>(*i); + if (sndf ) { + + if (sndf->channel_count() > chan_count) { + chan_count = sndf->channel_count(); + } + } +#ifdef HAVE_COREAUDIO + else { + boost::shared_ptr<CoreAudioSource> cauf = dynamic_pointer_cast<CoreAudioSource>(*i); + if (cauf) { + if (cauf->channel_count() > chan_count) { + chan_count = cauf->channel_count(); + } + } + } +#endif // HAVE_COREAUDIO + } + + return chan_count; +} + int AudioRegion::adjust_transients (frameoffset_t delta) { |