permit different sizes for audio playback & capture buffers
[ardour.git] / libs / ardour / ardour / audio_diskstream.h
index 838c9406eeab517e13881500511d3b4d0647a095..0ab9231252d124bcbc473e4cb0314efc7becbbda 100644 (file)
@@ -19,7 +19,6 @@
 #ifndef __ardour_audio_diskstream_h__
 #define __ardour_audio_diskstream_h__
 
-#include <sigc++/signal.h>
 
 #include <cmath>
 #include <string>
@@ -29,6 +28,8 @@
 
 #include <time.h>
 
+#include <boost/utility.hpp>
+
 #include "pbd/fastlog.h"
 #include "pbd/ringbufferNPT.h"
 #include "pbd/stateful.h"
@@ -175,14 +176,17 @@ class AudioDiskstream : public Diskstream
   protected:
        friend class AudioTrack;
 
-       int  process (nframes_t transport_frame, nframes_t nframes, bool can_record, bool rec_monitors_input);
+       int  process (nframes_t transport_frame, nframes_t nframes, bool can_record, bool rec_monitors_input, bool& need_butler);
        bool commit  (nframes_t nframes);
 
   private:
 
-       struct ChannelInfo {
+       struct ChannelInfo : public boost::noncopyable {
 
-               ChannelInfo (nframes_t buffer_size, nframes_t speed_buffer_size, nframes_t wrap_buffer_size);
+               ChannelInfo (nframes_t playback_buffer_size, 
+                             nframes_t capture_buffer_size,
+                             nframes_t speed_buffer_size, 
+                             nframes_t wrap_buffer_size);
                ~ChannelInfo ();
 
                Sample     *playback_wrap_buffer;
@@ -229,10 +233,10 @@ class AudioDiskstream : public Diskstream
                        ChannelInfo* channel_info, int channel, bool reversed);
 
        void finish_capture (bool rec_monitors_input, boost::shared_ptr<ChannelList>);
-       void transport_stopped (struct tm&, time_t, bool abort);
+       void transport_stopped_wallclock (struct tm&, time_t, bool abort);
        void transport_looped (nframes_t transport_frame);
 
-       void init (Diskstream::Flag);
+       void init ();
 
        void init_channel (ChannelInfo &chan);
        void destroy_channel (ChannelInfo &chan);