X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Faudio_diskstream.h;h=21a178946800529f6a31411187af2a3be3bb3f0e;hb=a0558694dfdb2a89d54e22d30916ea0118b39301;hp=2e838ff628c982965008c13cf5d1e9676959e8ac;hpb=c52f7957a9b350dbb0d290a39acd33eb4472a218;p=ardour.git diff --git a/libs/ardour/ardour/audio_diskstream.h b/libs/ardour/ardour/audio_diskstream.h index 2e838ff628..21a1789468 100644 --- a/libs/ardour/ardour/audio_diskstream.h +++ b/libs/ardour/ardour/audio_diskstream.h @@ -73,6 +73,7 @@ class LIBARDOUR_API AudioDiskstream : public Diskstream } void set_record_enabled (bool yn); + void set_record_safe (bool yn); int set_destructive (bool yn); int set_non_layered (bool yn); bool can_become_destructive (bool& requires_bounce) const; @@ -108,6 +109,7 @@ class LIBARDOUR_API AudioDiskstream : public Diskstream int remove_channel (uint32_t how_many); bool set_name (std::string const &); + bool set_write_source_name (const std::string& str); /* stateful */ @@ -124,7 +126,6 @@ class LIBARDOUR_API AudioDiskstream : public Diskstream } } - CubicInterpolation interpolation; protected: friend class Session; @@ -204,11 +205,12 @@ class LIBARDOUR_API AudioDiskstream : public Diskstream typedef std::vector ChannelList; + CubicInterpolation interpolation; + /* The two central butler operations */ int do_flush (RunContext context, bool force = false); - int do_refill () { return _do_refill(_mixdown_buffer, _gain_buffer); } + int do_refill () { return _do_refill(_mixdown_buffer, _gain_buffer, 0); } - int do_refill_with_alloc (); int read (Sample* buf, Sample* mixdown_buffer, float* gain_buffer, framepos_t& start, framecnt_t cnt, @@ -242,12 +244,11 @@ class LIBARDOUR_API AudioDiskstream : public Diskstream bool prep_record_enable (); bool prep_record_disable (); - + // Working buffers for do_refill (butler thread) static void allocate_working_buffers(); static void free_working_buffers(); - static size_t _working_buffers_size; static Sample* _mixdown_buffer; static gain_t* _gain_buffer; @@ -255,9 +256,12 @@ class LIBARDOUR_API AudioDiskstream : public Diskstream SerializedRCUManager channels; + protected: + int _do_refill_with_alloc (bool one_chunk_only); + /* really */ private: - int _do_refill (Sample *mixdown_buffer, float *gain_buffer); + int _do_refill (Sample *mixdown_buffer, float *gain_buffer, framecnt_t fill_level); int add_channel_to (boost::shared_ptr, uint32_t how_many); int remove_channel_from (boost::shared_ptr, uint32_t how_many);