summaryrefslogtreecommitdiff
path: root/libs/ardour/audioregion.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/audioregion.cc')
-rw-r--r--libs/ardour/audioregion.cc34
1 files changed, 34 insertions, 0 deletions
diff --git a/libs/ardour/audioregion.cc b/libs/ardour/audioregion.cc
index 8113b261f9..a3535565dd 100644
--- a/libs/ardour/audioregion.cc
+++ b/libs/ardour/audioregion.cc
@@ -25,6 +25,7 @@
#include <set>
#include <boost/scoped_array.hpp>
+#include <boost/shared_ptr.hpp>
#include <glibmm/threads.h>
@@ -49,6 +50,11 @@
#include "ardour/parameter_descriptor.h"
#include "ardour/progress.h"
+#include "ardour/sndfilesource.h"
+#ifdef HAVE_COREAUDIO
+#include "ardour/coreaudiosource.h"
+#endif // HAVE_COREAUDIO
+
#include "i18n.h"
#include <locale.h>
@@ -1562,6 +1568,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 = boost::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 = boost::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)
{