summaryrefslogtreecommitdiff
path: root/libs/ardour/audioregion.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2015-05-08 16:28:46 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2015-06-29 14:18:11 -0400
commit04b2d34362dd8bfa3b1582ae5e8a09b0ee80f09a (patch)
treea7b10e8d3edc61c36a58c744954e449e1b3c524f /libs/ardour/audioregion.cc
parent9c95a8bdea67fb1e3b5147d3abb169756c9c78e7 (diff)
add channel_count() to audio source API
Diffstat (limited to 'libs/ardour/audioregion.cc')
-rw-r--r--libs/ardour/audioregion.cc31
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)
{