X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Ffilter.cc;h=36a74da0f50756375ecb5490c85deb39a84c5682;hb=e845b9f9357c4ff471c02b1f63a61275bb4a7d28;hp=d782db96f24a1679903f003713f96b9bff17f602;hpb=91fac4c96dc6210dcc056da70dc608700d7eb570;p=ardour.git diff --git a/libs/ardour/filter.cc b/libs/ardour/filter.cc index d782db96f2..36a74da0f5 100644 --- a/libs/ardour/filter.cc +++ b/libs/ardour/filter.cc @@ -39,7 +39,7 @@ using namespace ARDOUR; using namespace PBD; int -Filter::make_new_sources (boost::shared_ptr region, SourceList& nsrcs, string suffix) +Filter::make_new_sources (boost::shared_ptr region, SourceList& nsrcs, std::string suffix, bool use_session_sample_rate) { vector names = region->master_source_names(); assert (region->n_channels() <= names.size()); @@ -70,9 +70,22 @@ Filter::make_new_sources (boost::shared_ptr region, SourceList& nsrcs, s } try { + framecnt_t sample_rate; + if (use_session_sample_rate) { + sample_rate = session.frame_rate(); + } else { + boost::shared_ptr aregion = boost::dynamic_pointer_cast(region); + + if (aregion) { + sample_rate = aregion->audio_source()->sample_rate(); + } else { + return -1; + } + } + nsrcs.push_back (boost::dynamic_pointer_cast ( - SourceFactory::createWritable (region->data_type(), session, - path, false, session.frame_rate()))); + SourceFactory::createWritable (region->data_type(), session, + path, false, sample_rate))); } catch (failed_constructor& err) {