diff options
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) { |