X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fexport_timespan.cc;h=5b62c7dfcc72072ac6636b0f904b83806beca44b;hb=75ede0dd6bda0136aef612b0e427ae25b208d0d0;hp=14273d835f2d8b4b2e119e5e3c259da3e750e0fa;hpb=f2b007195cd75b195e38a4cd7757debac73e7792;p=ardour.git diff --git a/libs/ardour/export_timespan.cc b/libs/ardour/export_timespan.cc index 14273d835f..5b62c7dfcc 100644 --- a/libs/ardour/export_timespan.cc +++ b/libs/ardour/export_timespan.cc @@ -18,23 +18,23 @@ */ -#include +#include "ardour/export_timespan.h" -#include -#include -#include -#include +#include "ardour/export_channel_configuration.h" +#include "ardour/export_filename.h" +#include "ardour/export_failed.h" namespace ARDOUR { -ExportTimespan::ExportTimespan (ExportStatus & status, nframes_t frame_rate) : - status (status), - start_frame (0), - end_frame (0), - position (0), - frame_rate (frame_rate) +ExportTimespan::ExportTimespan (ExportStatusPtr status, framecnt_t frame_rate) : + status (status), + start_frame (0), + end_frame (0), + position (0), + frame_rate (frame_rate) { + } ExportTimespan::~ExportTimespan () @@ -42,72 +42,11 @@ ExportTimespan::~ExportTimespan () } void -ExportTimespan::register_channel (ExportChannel const & channel) -{ - TempFilePtr ptr (new ExportTempFile (1, frame_rate)); - ChannelFilePair pair (channel, ptr); - filemap.insert (pair); -} - -void -ExportTimespan::rewind () -{ - for (TempFileMap::iterator it = filemap.begin(); it != filemap.end(); ++it) { - it->second->reset_read (); - } -} - -nframes_t -ExportTimespan::get_data (float * data, nframes_t frames, ExportChannel const & channel) -{ - TempFileMap::iterator it = filemap.find (channel); - if (it == filemap.end()) { - throw ExportFailed (_("Export failed due to programming error"), _("Trying to get data from ExportTimespan for channel that was never registered!")); - } - - return it->second->read (data, frames); -} - -void -ExportTimespan::set_range (nframes_t start, nframes_t end) +ExportTimespan::set_range (framepos_t start, framepos_t end) { start_frame = start; position = start_frame; end_frame = end; } -int -ExportTimespan::process (nframes_t frames) -{ - status.stage = export_ReadTimespan; - - /* update position */ - - nframes_t frames_to_read; - - if (position + frames <= end_frame) { - frames_to_read = frames; - } else { - frames_to_read = end_frame - position; - status.stop = true; - } - - position += frames_to_read; - status.progress = (float) (position - start_frame) / (end_frame - start_frame); - - /* Read channels from ports and save to tempfiles */ - - float * data = new float[frames_to_read]; - - for (TempFileMap::iterator it = filemap.begin(); it != filemap.end(); ++it) { - it->first.read_ports (data, frames_to_read); - it->second->write (data, frames_to_read); - } - - delete [] data; - - return 0; -} - - } // namespace ARDOUR