#ifndef __ardour_export_timespan_h__
#define __ardour_export_timespan_h__
-#include <map>
-#include <list>
+#include <string>
-#include <glibmm/ustring.h>
+#include <boost/shared_ptr.hpp>
-#include <ardour/export_status.h>
-#include <ardour/export_channel.h>
-#include <ardour/ardour.h>
-
-using Glib::ustring;
+#include "ardour/types.h"
namespace ARDOUR
{
+class ExportStatus;
class ExportChannel;
class ExportTempFile;
-class ExportTimespan : public sigc::trackable
+class ExportTimespan
{
private:
- typedef boost::shared_ptr<ExportTempFile> TempFilePtr;
- typedef std::pair<ExportChannelPtr, TempFilePtr> ChannelFilePair;
- typedef std::map<ExportChannelPtr, TempFilePtr> TempFileMap;
typedef boost::shared_ptr<ExportStatus> ExportStatusPtr;
private:
friend class ExportElementFactory;
- ExportTimespan (ExportStatusPtr status, nframes_t frame_rate);
-
+ ExportTimespan (ExportStatusPtr status, framecnt_t frame_rate);
+
public:
~ExportTimespan ();
-
- ustring name () const { return _name; }
- void set_name (ustring name) { _name = name; }
-
- ustring range_id () const { return _range_id; }
- void set_range_id (ustring range_id) { _range_id = range_id; }
-
- /// Registers a channel to be read when export starts rolling
- void register_channel (ExportChannelPtr channel);
-
- /// "Rewinds" the tempfiles to start reading the beginnings again
- void rewind ();
-
- /// Reads data from the tempfile belonging to channel into data
- nframes_t get_data (float * data, nframes_t frames, ExportChannelPtr channel);
-
- /// Reads data from each channel and writes to tempfile
- int process (nframes_t frames);
-
- sigc::connection process_connection;
-
- void set_range (nframes_t start, nframes_t end);
- nframes_t get_length () const { return end_frame - start_frame; }
- nframes_t get_start () const { return start_frame; }
- nframes_t get_end () const { return end_frame; }
+
+ std::string name () const { return _name; }
+ void set_name (std::string name) { _name = name; }
+
+ std::string range_id () const { return _range_id; }
+ void set_range_id (std::string range_id) { _range_id = range_id; }
+
+ void set_range (framepos_t start, framepos_t end);
+ framecnt_t get_length () const { return end_frame - start_frame; }
+ framepos_t get_start () const { return start_frame; }
+ framepos_t get_end () const { return end_frame; }
+
+ /// Primarily compare start time, then end time
+ bool operator< (ExportTimespan const & other) {
+ if (start_frame < other.start_frame) { return true; }
+ if (start_frame > other.start_frame) { return false; }
+ return end_frame < other.end_frame;
+ }
private:
ExportStatusPtr status;
- nframes_t start_frame;
- nframes_t end_frame;
- nframes_t position;
- nframes_t frame_rate;
+ framepos_t start_frame;
+ framepos_t end_frame;
+ framepos_t position;
+ framecnt_t frame_rate;
- TempFileMap filemap;
-
- ustring _name;
- ustring _range_id;
+ std::string _name;
+ std::string _range_id;
};