ardour
audio_track.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2006 Paul Davis
3 
4  This program is free software; you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation; either version 2 of the License, or
7  (at your option) any later version.
8 
9  This program is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU General Public License for more details.
13 
14  You should have received a copy of the GNU General Public License
15  along with this program; if not, write to the Free Software
16  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17 
18 */
19 
20 #ifndef __ardour_audio_track_h__
21 #define __ardour_audio_track_h__
22 
24 #include "ardour/track.h"
25 
26 namespace ARDOUR {
27 
28 class Session;
29 class AudioDiskstream;
30 class AudioPlaylist;
31 class RouteGroup;
32 class AudioFileSource;
33 
35 {
36  public:
37  AudioTrack (Session&, std::string name, Route::Flag f = Route::Flag (0), TrackMode m = Normal);
38  ~AudioTrack ();
39 
40  int set_mode (TrackMode m);
41  bool can_use_mode (TrackMode m, bool& bounce_required);
42 
43  int roll (pframes_t nframes, framepos_t start_frame, framepos_t end_frame,
44  int declick, bool& need_butler);
45 
46  boost::shared_ptr<Diskstream> create_diskstream ();
47  void set_diskstream (boost::shared_ptr<Diskstream>);
48 
49  DataType data_type () const {
50  return DataType::AUDIO;
51  }
52 
53  void freeze_me (InterThreadInfo&);
54  void unfreeze ();
55 
56  bool bounceable (boost::shared_ptr<Processor>, bool include_endpoint) const;
59  boost::shared_ptr<Processor> endpoint, bool include_endpoint);
60  int export_stuff (BufferSet& bufs, framepos_t start_frame, framecnt_t nframes,
61  boost::shared_ptr<Processor> endpoint, bool include_endpoint, bool for_export, bool for_freeze);
62 
63  int set_state (const XMLNode&, int version);
64 
65  boost::shared_ptr<AudioFileSource> write_source (uint32_t n = 0);
66 
67  protected:
68  boost::shared_ptr<AudioDiskstream> audio_diskstream () const;
69  XMLNode& state (bool full);
70 
71  private:
72 
73  boost::shared_ptr<Diskstream> diskstream_factory (XMLNode const &);
74 
75  int deprecated_use_diskstream_connections ();
76  void set_state_part_two ();
77  void set_state_part_three ();
78 };
79 
80 } // namespace ARDOUR
81 
82 #endif /* __ardour_audio_track_h__ */
uint32_t pframes_t
Definition: types.h:61
tuple f
Definition: signals.py:35
LIBARDOUR_API PBD::PropertyDescriptor< framepos_t > start
Definition: region.cc:63
TrackMode
Definition: types.h:198
int64_t framecnt_t
Definition: types.h:76
DataType data_type() const
Definition: audio_track.h:49
Definition: amp.h:29
int64_t framepos_t
Definition: types.h:66
#define LIBARDOUR_API
const char * name
Definition: xml++.h:95