summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour/track.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/ardour/track.h')
-rw-r--r--libs/ardour/ardour/track.h32
1 files changed, 14 insertions, 18 deletions
diff --git a/libs/ardour/ardour/track.h b/libs/ardour/ardour/track.h
index b67e9d970a..33c967f088 100644
--- a/libs/ardour/ardour/track.h
+++ b/libs/ardour/ardour/track.h
@@ -36,15 +36,19 @@ class RouteGroup;
class Source;
class Region;
class Diskstream;
+class DiskReader;
+class DiskWriter;
class IO;
class MonitorControl;
class RecordEnableControl;
class RecordSafeControl;
/** A track is an route (bus) with a recordable diskstream and
- * related objects relevant to tracking, playback and editing.
+ * related objects relevant to recording, playback and editing.
*
- * Specifically a track has regions and playlist objects.
+ * Specifically a track has a playlist object that describes material
+ * to be played from disk, and modifies that object during recording and
+ * editing.
*/
class LIBARDOUR_API Track : public Route, public Recordable, public PublicDiskstream
{
@@ -75,14 +79,8 @@ class LIBARDOUR_API Track : public Route, public Recordable, public PublicDiskst
bool needs_butler() const { return _needs_butler; }
- virtual DataType data_type () const = 0;
-
bool can_record();
- void use_new_diskstream ();
- virtual boost::shared_ptr<Diskstream> create_diskstream() = 0;
- virtual void set_diskstream (boost::shared_ptr<Diskstream>);
-
void set_latency_compensation (framecnt_t);
enum FreezeState {
@@ -179,18 +177,17 @@ class LIBARDOUR_API Track : public Route, public Recordable, public PublicDiskst
AlignChoice alignment_choice () const;
framepos_t current_capture_start () const;
framepos_t current_capture_end () const;
- void playlist_modified ();
- int use_playlist (boost::shared_ptr<Playlist>);
void set_align_style (AlignStyle, bool force=false);
void set_align_choice (AlignChoice, bool force=false);
+ void playlist_modified ();
+ int use_playlist (DataType, boost::shared_ptr<Playlist>);
+ int find_and_use_playlist (DataType, std::string const & name);
int use_copy_playlist ();
int use_new_playlist ();
void adjust_playback_buffering ();
void adjust_capture_buffering ();
- PBD::Signal0<void> DiskstreamChanged;
PBD::Signal0<void> FreezeChange;
- /* Emitted when our diskstream is set to use a different playlist */
PBD::Signal0<void> PlaylistChanged;
PBD::Signal0<void> SpeedChanged;
PBD::Signal0<void> AlignmentStyleChanged;
@@ -199,6 +196,11 @@ class LIBARDOUR_API Track : public Route, public Recordable, public PublicDiskst
XMLNode& state (bool full);
boost::shared_ptr<Diskstream> _diskstream;
+
+ boost::shared_ptr<DiskReader> _disk_reader;
+ boost::shared_ptr<DiskWriter> _disk_writer;
+ boost::shared_ptr<Playlist> _playlists[DataType::num_types];
+
MeterPoint _saved_meter_point;
TrackMode _mode;
bool _needs_butler;
@@ -245,12 +247,6 @@ class LIBARDOUR_API Track : public Route, public Recordable, public PublicDiskst
virtual void monitoring_changed (bool, PBD::Controllable::GroupControlDisposition);
private:
-
- virtual boost::shared_ptr<Diskstream> diskstream_factory (XMLNode const &) = 0;
-
- void diskstream_playlist_changed ();
- void diskstream_speed_changed ();
- void diskstream_alignment_style_changed ();
void parameter_changed (std::string const & p);
std::string _diskstream_name;