X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Faudio_track.h;h=0bc8be81f45b066ac8f8d2b57a4cb954a247f353;hb=0b471df0c3883bb04103f006192652e6d6eb6807;hp=15b99297c883b42dd5e9de0de1d65f2c9ad4523c;hpb=79fc27de2ef9db51a8c7c69764b663a9921c5a40;p=ardour.git diff --git a/libs/ardour/ardour/audio_track.h b/libs/ardour/ardour/audio_track.h index 15b99297c8..0bc8be81f4 100644 --- a/libs/ardour/ardour/audio_track.h +++ b/libs/ardour/ardour/audio_track.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2006 Paul Davis + Copyright (C) 2002-2006 Paul Davis This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -15,13 +15,13 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_audio_track_h__ #define __ardour_audio_track_h__ -#include +#include "ardour/interthread_info.h" +#include "ardour/track.h" namespace ARDOUR { @@ -29,49 +29,49 @@ class Session; class AudioDiskstream; class AudioPlaylist; class RouteGroup; +class AudioFileSource; -class AudioTrack : public Track +class LIBARDOUR_API AudioTrack : public Track { public: - AudioTrack (Session&, string name, Route::Flag f = Route::Flag (0), TrackMode m = Normal); - AudioTrack (Session&, const XMLNode&); + AudioTrack (Session&, std::string name, Route::Flag f = Route::Flag (0), TrackMode m = Normal); ~AudioTrack (); - int roll (jack_nframes_t nframes, jack_nframes_t start_frame, jack_nframes_t end_frame, - jack_nframes_t offset, int declick, bool can_record, bool rec_monitors_input); - - int no_roll (jack_nframes_t nframes, jack_nframes_t start_frame, jack_nframes_t end_frame, - jack_nframes_t offset, bool state_changing, bool can_record, bool rec_monitors_input); - - int silent_roll (jack_nframes_t nframes, jack_nframes_t start_frame, jack_nframes_t end_frame, - jack_nframes_t offset, bool can_record, bool rec_monitors_input); + int set_mode (TrackMode m); + bool can_use_mode (TrackMode m, bool& bounce_required); - AudioDiskstream& audio_diskstream() const; + int roll (pframes_t nframes, framepos_t start_frame, framepos_t end_frame, + int declick, bool& need_butler); - int use_diskstream (string name); - int use_diskstream (const PBD::ID& id); - - int export_stuff (vector& buffers, char * workbuf, uint32_t nbufs, jack_nframes_t nframes, jack_nframes_t end_frame); + boost::shared_ptr create_diskstream (); + void set_diskstream (boost::shared_ptr); + + DataType data_type () const { + return DataType::AUDIO; + } - void freeze (InterThreadInfo&); + void freeze_me (InterThreadInfo&); void unfreeze (); - void bounce (InterThreadInfo&); - void bounce_range (jack_nframes_t start, jack_nframes_t end, InterThreadInfo&); + bool bounceable (boost::shared_ptr, bool include_endpoint) const; + boost::shared_ptr bounce (InterThreadInfo&); + boost::shared_ptr bounce_range (framepos_t start, framepos_t end, InterThreadInfo&, + boost::shared_ptr endpoint, bool include_endpoint); + int export_stuff (BufferSet& bufs, framepos_t start_frame, framecnt_t nframes, + boost::shared_ptr endpoint, bool include_endpoint, bool for_export, bool for_freeze); - int set_state(const XMLNode& node); + int set_state (const XMLNode&, int version); + + boost::shared_ptr write_source (uint32_t n = 0); protected: + boost::shared_ptr audio_diskstream () const; XMLNode& state (bool full); - void passthru_silence (jack_nframes_t start_frame, jack_nframes_t end_frame, - jack_nframes_t nframes, jack_nframes_t offset, int declick, - bool meter); + private: - uint32_t n_process_buffers (); + boost::shared_ptr diskstream_factory (XMLNode const &); - private: - int set_diskstream (AudioDiskstream&, void *); int deprecated_use_diskstream_connections (); void set_state_part_two (); void set_state_part_three ();