diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2010-03-16 15:33:04 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2010-03-16 15:33:04 +0000 |
commit | 6ef5d85ae1f2c500c4163cd1df580b3f26991c1e (patch) | |
tree | 15194a52bb72f036117fc4c87c193a4cbb64be8b /libs/ardour/import.cc | |
parent | 830911f6f9451d83a58043b3f9084d3caa164b7b (diff) |
changes from 2.X starting in march 2009 through oct 20 2009 (5826 inclusive)
git-svn-id: svn://localhost/ardour2/branches/3.0@6761 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/import.cc')
-rw-r--r-- | libs/ardour/import.cc | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/libs/ardour/import.cc b/libs/ardour/import.cc index 035772305a..d6fa4e95bf 100644 --- a/libs/ardour/import.cc +++ b/libs/ardour/import.cc @@ -205,7 +205,7 @@ map_existing_mono_sources (const vector<string>& new_paths, Session& /*sess*/, static bool create_mono_sources_for_writing (const vector<string>& new_paths, Session& sess, uint samplerate, vector<boost::shared_ptr<Source> >& newfiles, - nframes64_t /*timeline_position*/) + framepos_t timeline_position) { for (vector<string>::const_iterator i = new_paths.begin(); i != new_paths.end(); ++i) { @@ -229,6 +229,14 @@ create_mono_sources_for_writing (const vector<string>& new_paths, Session& sess, } newfiles.push_back(boost::dynamic_pointer_cast<Source>(source)); + + /* for audio files, reset the timeline position so that any BWF-ish + information in the original files we are importing from is maintained. + */ + + boost::shared_ptr<AudioFileSource> afs; + afs = boost::dynamic_pointer_cast<AudioFileSource>(source); + afs->set_timeline_position(timeline_position); } return true; } @@ -425,13 +433,13 @@ Session::import_audiofiles (ImportStatus& status) get_best_session_directory_for_new_source (), channels); Sources newfiles; - nframes64_t natural_position = source ? source->natural_position() : 0; + framepos_t natural_position = source ? source->natural_position() : 0; if (status.replace_existing_source) { fatal << "THIS IS NOT IMPLEMENTED YET, IT SHOULD NEVER GET CALLED!!! DYING!" << endmsg; status.cancel = !map_existing_mono_sources (new_paths, *this, frame_rate(), newfiles, this); } else { - status.cancel = !create_mono_sources_for_writing (new_paths, *this, frame_rate(), newfiles, natural_position); + status.cancel = !create_mono_sources_for_writing (new_paths, *this, frame_rate(), newfiles, natural_position); } // copy on cancel/failure so that any files that were created will be removed below @@ -468,7 +476,7 @@ Session::import_audiofiles (ImportStatus& status) for (Sources::iterator x = all_new_sources.begin(); x != all_new_sources.end(); ) { if ((afs = boost::dynamic_pointer_cast<AudioFileSource>(*x)) != 0) { - afs->update_header(0, *now, xnow); + afs->update_header((*x)->natural_position(), *now, xnow); afs->done_with_peakfile_writes (); /* now that there is data there, requeue the file for analysis */ |