diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2010-06-09 17:24:07 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2010-06-09 17:24:07 +0000 |
commit | 14004b75a6d18a74fa59ac06c203af693164b774 (patch) | |
tree | 1d0d3f416a7c1c1a8d8edd8ff630d87e2b276498 /libs/ardour/ardour | |
parent | 01829e63382ebab3d54b02fffbad11de7cf69ea6 (diff) |
dynamic playback & capture buffer resizing (though transport is stopped first)
git-svn-id: svn://localhost/ardour2/branches/3.0@7250 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/ardour')
-rw-r--r-- | libs/ardour/ardour/audio_diskstream.h | 6 | ||||
-rw-r--r-- | libs/ardour/ardour/butler.h | 1 | ||||
-rw-r--r-- | libs/ardour/ardour/midi_diskstream.h | 6 | ||||
-rw-r--r-- | libs/ardour/ardour/midi_track.h | 2 | ||||
-rwxr-xr-x | libs/ardour/ardour/public_diskstream.h | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/session.h | 11 | ||||
-rw-r--r-- | libs/ardour/ardour/session_event.h | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/track.h | 2 |
8 files changed, 30 insertions, 2 deletions
diff --git a/libs/ardour/ardour/audio_diskstream.h b/libs/ardour/ardour/audio_diskstream.h index 0ab9231252..54ddbea14a 100644 --- a/libs/ardour/ardour/audio_diskstream.h +++ b/libs/ardour/ardour/audio_diskstream.h @@ -216,6 +216,9 @@ class AudioDiskstream : public Diskstream RingBufferNPT<CaptureTransition> * capture_transition_buf; // the following are used in the butler thread only nframes_t curr_capture_cnt; + + void resize_playback (nframes_t); + void resize_capture (nframes_t); }; typedef std::vector<ChannelInfo*> ChannelList; @@ -255,6 +258,9 @@ class AudioDiskstream : public Diskstream void setup_destructive_playlist (); void use_destructive_playlist (); + void adjust_playback_buffering (); + void adjust_capture_buffering (); + void engage_record_enable (); void disengage_record_enable (); diff --git a/libs/ardour/ardour/butler.h b/libs/ardour/ardour/butler.h index fc8e4c18c3..6ad96dc704 100644 --- a/libs/ardour/ardour/butler.h +++ b/libs/ardour/ardour/butler.h @@ -83,6 +83,7 @@ class Butler : public SessionHandleRef private: void empty_pool_trash (); + void config_changed (std::string); }; } // namespace ARDOUR diff --git a/libs/ardour/ardour/midi_diskstream.h b/libs/ardour/ardour/midi_diskstream.h index 766f9ec5a5..f466889027 100644 --- a/libs/ardour/ardour/midi_diskstream.h +++ b/libs/ardour/ardour/midi_diskstream.h @@ -165,6 +165,12 @@ class MidiDiskstream : public Diskstream void get_input_sources (); void set_align_style_from_io(); + /* fixed size buffers per instance of ardour for now (non-dynamic) + */ + + void adjust_playback_buffering () {} + void adjust_capture_buffering () {} + void engage_record_enable (); void disengage_record_enable (); diff --git a/libs/ardour/ardour/midi_track.h b/libs/ardour/ardour/midi_track.h index 5d5bdc0cb4..d181bea596 100644 --- a/libs/ardour/ardour/midi_track.h +++ b/libs/ardour/ardour/midi_track.h @@ -53,7 +53,7 @@ public: void freeze_me (InterThreadInfo&); void unfreeze (); - + boost::shared_ptr<Region> bounce (InterThreadInfo&); boost::shared_ptr<Region> bounce_range ( nframes_t start, nframes_t end, InterThreadInfo&, bool enable_processing); diff --git a/libs/ardour/ardour/public_diskstream.h b/libs/ardour/ardour/public_diskstream.h index 90ca030af1..c31e88a79b 100755 --- a/libs/ardour/ardour/public_diskstream.h +++ b/libs/ardour/ardour/public_diskstream.h @@ -72,6 +72,8 @@ public: virtual void set_align_style (AlignStyle) = 0; virtual int use_copy_playlist () = 0; virtual int use_new_playlist () = 0; + virtual void adjust_playback_buffering () = 0; + virtual void adjust_capture_buffering () = 0; }; diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index d1362b379a..f7692e09cb 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -299,6 +299,8 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi void allow_auto_play (bool yn); void request_transport_speed (double speed); void request_overwrite_buffer (Track *); + void adjust_playback_buffering(); + void adjust_capture_buffering(); void request_track_speed (Track *, double speed); void request_input_change_handling (); @@ -776,7 +778,9 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi PostTransportReverse = 0x10000, PostTransportInputChange = 0x20000, PostTransportCurveRealloc = 0x40000, - PostTransportClearSubstate = 0x80000 + PostTransportClearSubstate = 0x80000, + PostTransportAdjustPlaybackBuffering = 0x100000, + PostTransportAdjustCaptureBuffering = 0x200000 }; enum SlaveState { @@ -1028,6 +1032,9 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi void set_post_transport_work (PostTransportWork ptw) { g_atomic_int_set (&_post_transport_work, (gint) ptw); } void add_post_transport_work (PostTransportWork ptw); + void schedule_playback_buffering_adjustment (); + void schedule_capture_buffering_adjustment (); + uint32_t cumulative_rf_motion; uint32_t rf_scale; @@ -1437,6 +1444,8 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi std::list<boost::shared_ptr<Diskstream> > _diskstreams_2X; void add_session_range_location (nframes_t, nframes_t); + + }; } // namespace ARDOUR diff --git a/libs/ardour/ardour/session_event.h b/libs/ardour/ardour/session_event.h index 726c5be47b..eac27be7f6 100644 --- a/libs/ardour/ardour/session_event.h +++ b/libs/ardour/ardour/session_event.h @@ -34,6 +34,8 @@ struct SessionEvent { InputConfigurationChange, SetPlayAudioRange, RealTimeOperation, + AdjustPlaybackBuffering, + AdjustCaptureBuffering, /* only one of each of these events can be queued at any one time */ diff --git a/libs/ardour/ardour/track.h b/libs/ardour/ardour/track.h index a40b82916b..ac948f12df 100644 --- a/libs/ardour/ardour/track.h +++ b/libs/ardour/ardour/track.h @@ -138,6 +138,8 @@ class Track : public Route, public PublicDiskstream void set_align_style (AlignStyle); int use_copy_playlist (); int use_new_playlist (); + void adjust_playback_buffering (); + void adjust_capture_buffering (); PBD::Signal0<void> DiskstreamChanged; PBD::Signal0<void> FreezeChange; |