summaryrefslogtreecommitdiff
path: root/libs/ardour/audiofilter.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/audiofilter.cc')
-rw-r--r--libs/ardour/audiofilter.cc23
1 files changed, 12 insertions, 11 deletions
diff --git a/libs/ardour/audiofilter.cc b/libs/ardour/audiofilter.cc
index a26d9674bd..3e9c36ddd2 100644
--- a/libs/ardour/audiofilter.cc
+++ b/libs/ardour/audiofilter.cc
@@ -26,6 +26,7 @@
#include <ardour/session.h>
#include <ardour/audioregion.h>
#include <ardour/audiofilter.h>
+#include <ardour/region_factory.h>
#include "i18n.h"
@@ -33,16 +34,16 @@ using namespace ARDOUR;
using namespace PBD;
int
-AudioFilter::make_new_sources (AudioRegion& region, AudioRegion::SourceList& nsrcs)
+AudioFilter::make_new_sources (boost::shared_ptr<AudioRegion> region, SourceList& nsrcs)
{
- vector<string> names = region.master_source_names();
+ vector<string> names = region->master_source_names();
- for (uint32_t i = 0; i < region.n_channels(); ++i) {
+ for (uint32_t i = 0; i < region->n_channels(); ++i) {
string path = session.path_from_region_name (PBD::basename_nosuffix (names[i]), string (""));
if (path.length() == 0) {
- error << string_compose (_("audiofilter: error creating name for new audio file based on %1"), region.name())
+ error << string_compose (_("audiofilter: error creating name for new audio file based on %1"), region->name())
<< endmsg;
return -1;
}
@@ -64,7 +65,7 @@ AudioFilter::make_new_sources (AudioRegion& region, AudioRegion::SourceList& nsr
}
int
-AudioFilter::finish (AudioRegion& region, AudioRegion::SourceList& nsrcs)
+AudioFilter::finish (boost::shared_ptr<AudioRegion> region, SourceList& nsrcs)
{
string region_name;
@@ -76,19 +77,19 @@ AudioFilter::finish (AudioRegion& region, AudioRegion::SourceList& nsrcs)
time (&xnow);
now = localtime (&xnow);
- for (AudioRegion::SourceList::iterator si = nsrcs.begin(); si != nsrcs.end(); ++si) {
+ for (SourceList::iterator si = nsrcs.begin(); si != nsrcs.end(); ++si) {
AudioFileSource* afs = dynamic_cast<AudioFileSource*>(*si);
if (afs) {
- afs->update_header (region.position(), *now, xnow);
+ afs->update_header (region->position(), *now, xnow);
}
}
/* create a new region */
- region_name = session.new_region_name (region.name());
+ region_name = session.new_region_name (region->name());
results.clear ();
- results.push_back (new AudioRegion (nsrcs, 0, region.length(), region_name, 0,
- Region::Flag (Region::WholeFile|Region::DefaultFlags)));
-
+ results.push_back (boost::dynamic_pointer_cast<AudioRegion> (RegionFactory::create (nsrcs, 0, region->length(), region_name, 0,
+ Region::Flag (Region::WholeFile|Region::DefaultFlags))));
+
return 0;
}