From 45d35d0732e18501762dc7c9bc87b519c2590447 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 3 Nov 2006 02:41:56 +0000 Subject: move all destructive functionality into SndFileSource as a mode, and drop DestructiveFileSource; make ardour save changes to destructive-xfade-msecs git-svn-id: svn://localhost/ardour2/trunk@1065 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/ardour/sndfilesource.h | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) (limited to 'libs/ardour/ardour/sndfilesource.h') diff --git a/libs/ardour/ardour/sndfilesource.h b/libs/ardour/ardour/sndfilesource.h index 6302d88967..b810cb538b 100644 --- a/libs/ardour/ardour/sndfilesource.h +++ b/libs/ardour/ardour/sndfilesource.h @@ -36,10 +36,7 @@ class SndFileSource : public AudioFileSource { /* constructor to be called for new in-session files */ SndFileSource (Session&, std::string path, SampleFormat samp_format, HeaderFormat hdr_format, nframes_t rate, - Flag flags = AudioFileSource::Flag (AudioFileSource::Writable| - AudioFileSource::Removable| - AudioFileSource::RemovableIfEmpty| - AudioFileSource::CanRename)); + Flag flags = SndFileSource::default_writable_flags); /* constructor to be called for existing in-session files */ @@ -53,6 +50,16 @@ class SndFileSource : public AudioFileSource { nframes_t natural_position () const; + nframes_t last_capture_start_frame() const; + void mark_capture_start (nframes_t); + void mark_capture_end (); + void clear_capture_marks(); + + bool set_destructive (bool yn); + + static void setup_standard_crossfades (nframes_t sample_rate); + static const AudioFileSource::Flag default_writable_flags; + protected: void set_header_timeline_position (); @@ -73,6 +80,24 @@ class SndFileSource : public AudioFileSource { int open(); void close(); int setup_broadcast_info (nframes_t when, struct tm&, time_t); + + /* destructive */ + + static nframes_t xfade_frames; + static gain_t* out_coefficient; + static gain_t* in_coefficient; + + bool _capture_start; + bool _capture_end; + nframes_t capture_start_frame; + nframes_t file_pos; // unit is frames + Sample* xfade_buf; + + nframes_t crossfade (Sample* data, nframes_t cnt, int dir); + void set_timeline_position (nframes_t); + nframes_t destructive_write_unlocked (Sample *dst, nframes_t cnt); + nframes_t nondestructive_write_unlocked (Sample *dst, nframes_t cnt); + void handle_header_position_change (); }; } // namespace ARDOUR -- cgit v1.2.3