20 #ifndef __ardour_diskstream_h__
21 #define __ardour_diskstream_h__
30 #include <boost/utility.hpp>
39 #include "ardour/utils.h"
72 virtual bool set_name (
const std::string& str);
73 virtual bool set_write_source_name (
const std::string& str);
76 if (_write_source_name.empty()) {
79 return _write_source_name;
92 virtual float playback_buffer_load()
const = 0;
93 virtual float capture_buffer_load()
const = 0;
100 void set_align_style (
AlignStyle,
bool force=
false);
101 void set_align_choice (
AlignChoice a,
bool force=
false);
107 virtual void set_record_enabled (
bool yn) = 0;
114 bool hidden()
const {
return _flags & Hidden; }
117 bool reversed()
const {
return _actual_speed < 0.0f; }
118 double speed()
const {
return _visible_speed; }
123 void non_realtime_set_speed ();
125 virtual void playlist_modified ();
130 virtual int use_new_playlist () = 0;
131 virtual int use_copy_playlist () = 0;
136 framepos_t get_capture_start_frame (uint32_t n = 0)
const;
137 framecnt_t get_captured_frames (uint32_t n = 0)
const;
145 static framecnt_t default_disk_read_chunk_frames ();
146 static framecnt_t default_disk_write_chunk_frames ();
149 virtual XMLNode& get_state(
void);
150 virtual int set_state(
const XMLNode&,
int version);
156 virtual void set_capture_offset ();
165 void handle_input_change (
IOChange,
void *src);
171 virtual int do_refill_with_alloc() = 0;
172 virtual void set_block_size (
pframes_t) = 0;
175 return _pending_overwrite;
197 virtual void set_pending_overwrite (
bool) = 0;
198 virtual int overwrite_existing_buffers () = 0;
199 virtual int internal_playback_seek (
framecnt_t distance) = 0;
200 virtual int can_internal_playback_seek (
framecnt_t distance) = 0;
201 virtual void reset_write_sources (
bool,
bool force =
false) = 0;
202 virtual void non_realtime_input_change () = 0;
206 virtual int seek (
framepos_t which_sample,
bool complete_refill =
false) = 0;
228 virtual int do_flush (
RunContext context,
bool force =
false) = 0;
229 virtual int do_refill () = 0;
237 virtual void transport_stopped_wallclock (
struct tm&, time_t,
bool abort) = 0;
238 virtual void transport_looped (
framepos_t transport_frame) = 0;
245 virtual int use_new_write_source (uint32_t n=0) = 0;
247 virtual int find_and_use_playlist (
const std::string&) = 0;
249 virtual void allocate_temporary_buffers () = 0;
251 virtual bool realtime_set_speed (
double,
bool global_change);
255 virtual int use_pending_capture_data (
XMLNode& node) = 0;
257 virtual void check_record_status (
framepos_t transport_frame,
bool can_record);
264 void engage_record_enable ();
265 void disengage_record_enable ();
267 virtual bool prep_record_enable () = 0;
268 virtual bool prep_record_disable () = 0;
270 void calculate_record_range (
341 void route_going_away ();
framepos_t first_recordable_frame
virtual void ensure_input_monitoring(bool)
framecnt_t _capture_offset
PBD::ScopedConnectionList playlist_connections
PBD::Signal0< void > SpeedChanged
boost::shared_ptr< Playlist > _playlist
boost::shared_ptr< ARDOUR::IO > io() const
virtual int set_non_layered(bool)
virtual bool can_become_destructive(bool &) const
PBD::Signal0< void > RecordEnableChanged
virtual void non_realtime_locate(framepos_t)
std::list< boost::shared_ptr< Source > > _last_capture_sources
static PBD::Signal0< void > DiskUnderrun
framecnt_t wrap_buffer_size
virtual void setup_destructive_playlist()
uint32_t i_am_the_modifier
PBD::Signal0< void > PlaylistChanged
framepos_t current_capture_end() const
framepos_t last_recordable_frame
static void set_disk_read_chunk_frames(framecnt_t n)
virtual void set_align_style_from_io()
AlignChoice _alignment_choice
bool pending_overwrite() const
framepos_t capture_val
The start or end file frame position.
static void set_disk_write_chunk_frames(framecnt_t n)
PBD::Signal0< void > AlignmentStyleChanged
virtual void use_destructive_playlist()
std::string _write_source_name
static framecnt_t disk_write_chunk_frames
IOChange input_change_pending
LIBARDOUR_API uint64_t Butler
Glib::Threads::Mutex state_lock
virtual std::string steal_write_source_name()
boost::shared_ptr< ARDOUR::IO > _io
std::vector< CaptureInfo * > capture_info
framecnt_t adjust_capture_position
static framecnt_t disk_read_chunk_frames
bool record_enabled() const
PBD::Signal1< void, Location * > LoopSet
framepos_t capture_start_frame
framepos_t current_capture_start() const
static framecnt_t disk_write_frames()
virtual int set_destructive(bool)
std::list< boost::shared_ptr< Source > > & last_capture_sources()
framecnt_t capture_captured
AlignChoice alignment_choice() const
int last_possibly_recording
virtual void request_input_monitoring(bool)
framepos_t playback_sample
bool _buffer_reallocation_required
framecnt_t roll_delay() const
static framecnt_t disk_read_frames()
virtual void prepare_record_status(framepos_t)
AlignStyle alignment_style() const
std::string write_source_name() const
Glib::Threads::Mutex capture_info_lock
framecnt_t capture_offset() const
framepos_t overwrite_frame
framecnt_t speed_buffer_size
boost::shared_ptr< Playlist > playlist()
XMLNode * deprecated_io_node
PBD::ScopedConnection ic_connection
PBD::Signal0< void > ReverseChanged
static PBD::Signal0< void > DiskOverrun
AlignStyle _alignment_style