diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2011-05-16 02:17:58 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2011-05-16 02:17:58 +0000 |
commit | 0a9cef7720ed9bd83442d284d18831437b80a482 (patch) | |
tree | 73f8b7e6780bbaf57bcf14dccb6d759556220cef /libs/ardour/audiosource.cc | |
parent | 88a6513e76e397bdd19d4e76eaf44da8170cf73a (diff) |
very basic Join (regions) editing operation. not finished yet, no undoable, no sensible name for new region, etc. etc
git-svn-id: svn://localhost/ardour2/branches/3.0@9518 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/audiosource.cc')
-rw-r--r-- | libs/ardour/audiosource.cc | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/libs/ardour/audiosource.cc b/libs/ardour/audiosource.cc index ac98837183..ffb8068ea5 100644 --- a/libs/ardour/audiosource.cc +++ b/libs/ardour/audiosource.cc @@ -38,6 +38,7 @@ #include "pbd/pthread_utils.h" #include "ardour/audiosource.h" +#include "ardour/audio_diskstream.h" #include "ardour/cycle_timer.h" #include "ardour/session.h" #include "ardour/transient_detector.h" @@ -49,6 +50,10 @@ using namespace std; using namespace ARDOUR; using namespace PBD; +Glib::StaticMutex AudioSource::_level_buffer_lock = GLIBMM_STATIC_MUTEX_INIT; +vector<Sample*> AudioSource::_mixdown_buffers; +vector<gain_t*> AudioSource::_gain_buffers; +size_t AudioSource::_working_buffers_size = 0; bool AudioSource::_build_missing_peakfiles = false; /** true if we want peakfiles (e.g. if we are displaying a GUI) */ @@ -958,3 +963,26 @@ AudioSource::mark_streaming_write_completed () PeaksReady (); /* EMIT SIGNAL */ } } + +void +AudioSource::allocate_working_buffers() +{ + assert(AudioDiskstream::disk_io_frames() > 0); + _working_buffers_size = AudioDiskstream::disk_io_frames(); + /* we don't need any buffers allocated until + a level 1 audiosource is created, at which + time we'll call ::ensure_buffers_for_level() + with the right value and do the right thing. + */ +} + +void +AudioSource::ensure_buffers_for_level (uint32_t level) +{ + Glib::Mutex::Lock lm (_level_buffer_lock); + + while (_mixdown_buffers.size() < level) { + _mixdown_buffers.push_back (new Sample[_working_buffers_size]); + _gain_buffers.push_back (new gain_t[_working_buffers_size]); + } +} |