X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fdelivery.h;h=0e55356928fc259f640b93d7859e8c58b082fea0;hb=a473d630eb165272992e90f8d854b1d66ec0be63;hp=bb07b9ab2554b5e1ddcddb51070a2336b1631db9;hpb=6dac4da98344ed8ce609a4e7d567ef2f9fbb9b31;p=ardour.git diff --git a/libs/ardour/ardour/delivery.h b/libs/ardour/ardour/delivery.h index bb07b9ab25..0e55356928 100644 --- a/libs/ardour/ardour/delivery.h +++ b/libs/ardour/ardour/delivery.h @@ -30,7 +30,9 @@ namespace ARDOUR { class BufferSet; class IO; class MuteMaster; +class PannerShell; class Panner; +class Pannable; class Delivery : public IOProcessor { @@ -52,11 +54,11 @@ public: /* Delivery to an existing output */ - Delivery (Session& s, boost::shared_ptr io, boost::shared_ptr mm, const std::string& name, Role); + Delivery (Session& s, boost::shared_ptr io, boost::shared_ptr, boost::shared_ptr mm, const std::string& name, Role); /* Delivery to a new output owned by this object */ - Delivery (Session& s, boost::shared_ptr mm, const std::string& name, Role); + Delivery (Session& s, boost::shared_ptr, boost::shared_ptr mm, const std::string& name, Role); ~Delivery (); bool set_name (const std::string& name); @@ -66,24 +68,21 @@ public: bool can_support_io_configuration (const ChanCount& in, ChanCount& out) const; bool configure_io (ChanCount in, ChanCount out); - void run (BufferSet& bufs, sframes_t start_frame, sframes_t end_frame, nframes_t nframes, bool); + void run (BufferSet& bufs, framepos_t start_frame, framepos_t end_frame, pframes_t nframes, bool); /* supplemental method used with MIDI */ - void flush (nframes_t nframes, nframes64_t time); - void transport_stopped (); - + void flush_buffers (framecnt_t nframes, framepos_t time); void no_outs_cuz_we_no_monitor(bool); - - void cycle_start (nframes_t); - void increment_output_offset (nframes_t); - void transport_stopped (sframes_t frame); + void cycle_start (pframes_t); + void transport_stopped (framepos_t frame); + void realtime_locate (); BufferSet& output_buffers() { return *_output_buffers; } PBD::Signal0 MuteChange; - static PBD::Signal1 CycleStart; + static PBD::Signal1 CycleStart; XMLNode& state (bool full); int set_state (const XMLNode&, int version); @@ -93,25 +92,24 @@ public: static int disable_panners (void); static int reset_panners (void); - boost::shared_ptr panner() const { return _panner; } + boost::shared_ptr panner_shell() const { return _panshell; } + boost::shared_ptr panner() const; void reset_panner (); void defer_pan_reset (); void allow_pan_reset (); uint32_t pans_required() const { return _configured_input.n_audio(); } - void start_pan_touch (uint32_t which); - void end_pan_touch (uint32_t which); protected: Role _role; BufferSet* _output_buffers; gain_t _current_gain; - nframes_t _output_offset; bool _no_outs_cuz_we_no_monitor; boost::shared_ptr _mute_master; bool no_panner_reset; - boost::shared_ptr _panner; + boost::shared_ptr _panshell; + framecnt_t scnt; static bool panners_legal; static PBD::Signal0 PannersLegal;